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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>97341</bug_id>
          
          <creation_ts>2012-09-21 08:16:06 -0700</creation_ts>
          <short_desc>Web Inspector: support saving HAR with resources content</short_desc>
          <delta_ts>2012-09-24 03:09:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrey Kosyakov">caseq</reporter>
          <assigned_to name="Andrey Kosyakov">caseq</assigned_to>
          <cc>aandrey</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>725524</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-09-21 08:16:06 -0700</bug_when>
    <thetext>Add &quot;Save with content as HAR&quot; option to network log&apos;s content menu. Remove context menu options for individual HAR entries, as these don&apos;t seem to make much sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725529</commentid>
    <comment_count>1</comment_count>
      <attachid>165136</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-09-21 08:24:55 -0700</bug_when>
    <thetext>Created attachment 165136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725605</commentid>
    <comment_count>2</comment_count>
      <attachid>165136</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 10:11:09 -0700</bug_when>
    <thetext>Comment on attachment 165136
Patch

Attachment 165136 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13932667

New failing tests:
http/tests/inspector/network/har-content.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725631</commentid>
    <comment_count>3</comment_count>
      <attachid>165136</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-21 10:46:12 -0700</bug_when>
    <thetext>Comment on attachment 165136
Patch

Attachment 165136 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13975422

New failing tests:
http/tests/inspector/network/har-content.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726277</commentid>
    <comment_count>4</comment_count>
      <attachid>165289</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-09-23 10:49:11 -0700</bug_when>
    <thetext>Created attachment 165289
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726431</commentid>
    <comment_count>5</comment_count>
      <attachid>165323</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-09-24 00:44:16 -0700</bug_when>
    <thetext>Created attachment 165323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726463</commentid>
    <comment_count>6</comment_count>
      <attachid>165323</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-24 01:55:38 -0700</bug_when>
    <thetext>Comment on attachment 165323
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=165323&amp;action=review

&gt; Source/WebCore/English.lproj/localizedStrings.js:134
&gt; +localizedStrings[&quot;Save with content as HAR&quot;] = &quot;Save with content as HAR&quot;;

Save as HAR with content ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726496</commentid>
    <comment_count>7</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-09-24 02:40:32 -0700</bug_when>
    <thetext>Committed r129336: &lt;http://trac.webkit.org/changeset/129336&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726505</commentid>
    <comment_count>8</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-09-24 03:09:06 -0700</bug_when>
    <thetext>FYI.

$ compile-front-end 
Source/WebCore/inspector/front-end/HAREntry.js:419: WARNING - Function WebInspector.HARWriter.prototype._writeNextChunk: called with 1 argument(s). Function requires at least 2 argument(s) and no more than 2 argument(s).
        this._writeNextChunk(this._stream);
        ^

Source/WebCore/inspector/front-end/HAREntry.js:436: WARNING - actual parameter 2 of WebInspector.OutputStream.write does not match formal parameter
found   : function ((WebInspector.OutputStream|null), string): undefined
required: (function ((WebInspector.OutputStream|null)): ?|undefined)
        stream.write(text, this._writeNextChunk.bind(this));
                           ^</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165136</attachid>
            <date>2012-09-21 08:24:55 -0700</date>
            <delta_ts>2012-09-23 10:49:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97341-20120921192418.patch</filename>
            <type>text/plain</type>
            <size>19587</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU1MjIwNzU5ODViMzc1
OTRjYjAyYWE0NTBiZjI2M2M3MTM3YTY0Ni4uNDAwY2I3NTc5ZDk0YTYxM2I4NDEzOGYwN2JlNWFm
ZjgwN2FhZTE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA5LTIxICBBbmRy
ZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogc3VwcG9ydCBzYXZpbmcgSEFSIHdpdGggcmVzb3VyY2VzIGNvbnRlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MzQxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBhZGQgV2ViSW5zcGVjdG9yLkhB
UldyaXRlciB0aGF0IHdyaXRlcyBIQVIgd2l0aCBjb250ZW50IHRvIGEgc3RyZWFtOworICAgICAg
ICAtIHJlcGxhY2UgU2F2ZSBhbGwgYXMgSEFSIHdpdGggU2F2ZSBhbGwgd2l0aCBDb250ZW50IGFz
IEhBUiBpbiBuZXR3b3JrJ3MgcGFuZWwgY29udGV4dCBtZW51OworICAgICAgICAtIHJlbW92ZSBl
bnRyaWVzIGZvciBjb3B5aW5nL3NhdmluZyBvZiBpbmRpdmlkdWFsIHJlcXVlc3QgaXRlbXMgdG8g
cmVkdWNlIGNsdXR0ZXIgaW4gY29udGV4dCBtZW51OworICAgICAgICAtIGEgZHJpdmUtYnkgZml4
IG9mIGFuIGV4Y2VwdGlvbiB3aGVuIGludm9raW5nIGNvbnRleHQgbWVudSBub3Qgb24gYSBuZXR3
b3JrIGl0ZW07CisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9o
YXItY29udGVudC5odG1sCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmlu
Z3MuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlVXRpbHMuanM6IAorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSEFSRW50cnkucHJvdG90eXBlLl9idWlsZFBvc3REYXRhKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IQVJMb2cucHJvdG90eXBlLmJ1aWxkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
QVJMb2cucHJvdG90eXBlLl9jcmVhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IQVJXcml0
ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhBUldyaXRlci5wcm90b3R5cGUud3JpdGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhBUldyaXRlci5wcm90b3R5cGUuX29uQ29udGVudEF2YWls
YWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSEFSV3JpdGVyLnByb3RvdHlwZS5fYmVnaW5X
cml0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSEFSV3JpdGVyLnByb3RvdHlwZS5fd3JpdGVO
ZXh0Q2h1bmspOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5nZXQgc3Rh
dHVzQmFySXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3Rv
dHlwZS5fY3JlYXRlU3RhdHVzQmFySXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdv
cmtMb2dWaWV3LnByb3RvdHlwZS5fY29udGV4dE1lbnUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fZXhwb3J0QWxsLm9wZW5DYWxsYmFjayk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9leHBvcnRBbGwpOgor
CiAyMDEyLTA5LTIxICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI5MjE5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNl
L1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IGZhZDFmMmE2
N2FlYmNhODZlZWEyZTRiOTkwOWQ4OWJhODU3MGE5YTguLmZkY2ZjZmUxYWUzMTA5ZTAzNmQ5ZDIw
MjZlM2RkZWIzNDZmMTM5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTEyOSwxNCArMTI5LDEwIEBAIGxvY2FsaXplZFN0cmlu
Z3NbIkNvbnRpbnVlIHRvIEhlcmUiXSA9ICJDb250aW51ZSB0byBIZXJlIjsKIGxvY2FsaXplZFN0
cmluZ3NbIkNvbnRpbnVlIHRvIGhlcmUiXSA9ICJDb250aW51ZSB0byBoZXJlIjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIkNvbnRpbnVlIl0gPSAiQ29udGludWUiOwogbG9jYWxpemVkU3RyaW5nc1siQ29w
eSBhcyBIVE1MIl0gPSAiQ29weSBhcyBIVE1MIjsKLWxvY2FsaXplZFN0cmluZ3NbIkNvcHkgZW50
cnkgYXMgSEFSIl0gPSAiQ29weSBlbnRyeSBhcyBIQVIiOwotbG9jYWxpemVkU3RyaW5nc1siQ29w
eSBFbnRyeSBhcyBIQVIiXSA9ICJDb3B5IEVudHJ5IGFzIEhBUiI7Ci1sb2NhbGl6ZWRTdHJpbmdz
WyJTYXZlIGVudHJ5IGFzIEhBUiJdID0gIlNhdmUgZW50cnkgYXMgSEFSIjsKLWxvY2FsaXplZFN0
cmluZ3NbIlNhdmUgRW50cnkgYXMgSEFSIl0gPSAiU2F2ZSBFbnRyeSBhcyBIQVIiOwogbG9jYWxp
emVkU3RyaW5nc1siQ29weSBhbGwgYXMgSEFSIl0gPSAiQ29weSBhbGwgYXMgSEFSIjsKIGxvY2Fs
aXplZFN0cmluZ3NbIkNvcHkgQWxsIGFzIEhBUiJdID0gIkNvcHkgQWxsIGFzIEhBUiI7Ci1sb2Nh
bGl6ZWRTdHJpbmdzWyJTYXZlIGFsbCBhcyBIQVIiXSA9ICJTYXZlIGFsbCBhcyBIQVIiOwotbG9j
YWxpemVkU3RyaW5nc1siU2F2ZSBBbGwgYXMgSEFSIl0gPSAiU2F2ZSBBbGwgYXMgSEFSIjsKK2xv
Y2FsaXplZFN0cmluZ3NbIlNhdmUgd2l0aCBjb250ZW50IGFzIEhBUiJdID0gIlNhdmUgd2l0aCBj
b250ZW50IGFzIEhBUiI7Citsb2NhbGl6ZWRTdHJpbmdzWyJTYXZlIHdpdGggQ29udGVudCBhcyBI
QVIiXSA9ICJTYXZlIHdpdGggQ29udGVudCBhcyBIQVIiOwogbG9jYWxpemVkU3RyaW5nc1siQ29w
eSBsaW5rIGFkZHJlc3MiXSA9ICJDb3B5IGxpbmsgYWRkcmVzcyI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJDb3B5IExpbmsgQWRkcmVzcyJdID0gIkNvcHkgTGluayBBZGRyZXNzIjsKIGxvY2FsaXplZFN0
cmluZ3NbIkNvcHkgcmVxdWVzdCBoZWFkZXJzIl0gPSAiQ29weSByZXF1ZXN0IGhlYWRlcnMiOwpA
QCAtNzQ5LDMgKzc0NSw1IEBAIGxvY2FsaXplZFN0cmluZ3NbIkxheW91dCBmb3JjZWQiXSA9ICJM
YXlvdXQgZm9yY2VkIjsKIGxvY2FsaXplZFN0cmluZ3NbIlBhdXNlZCBvbiBhc3NlcnRpb24uIl0g
PSAiUGF1c2VkIG9uIGFzc2VydGlvbi4iOwogbG9jYWxpemVkU3RyaW5nc1siJXMgKCVzJXMpIl0g
PSAiJXMgKCVzJXMpIjsKIGxvY2FsaXplZFN0cmluZ3NbIlJ1bm5pbmcgYXVkaXQiXSA9ICJSdW5u
aW5nIGF1ZGl0IjsKK2xvY2FsaXplZFN0cmluZ3NbIkNvbGxlY3RpbmcgY29udGVudOKApiJdID0g
IkNvbGxlY3RpbmcgY29udGVudOKApiI7Citsb2NhbGl6ZWRTdHJpbmdzWyJXcml0aW5nIGZpbGXi
gKYiXSA9ICJXcml0aW5nIGZpbGXigKYiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9GaWxlVXRpbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0ZpbGVVdGlscy5qcwppbmRleCAyMzZjZTFkMDNkM2EzZWYwN2JlNjc2NWQyYzcw
MjhjYjExZDZiOTAxLi5hMGJlYTIwM2VhNTZhNjI4YzkwMjI1Y2JkYTRjZTBlNzJjNThkODg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVVdGlscy5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVVdGlscy5qcwpA
QCAtNDAsOCArNDAsNiBAQCBXZWJJbnNwZWN0b3IuT3V0cHV0U3RyZWFtRGVsZWdhdGUucHJvdG90
eXBlID0gewogCiAgICAgb25DaHVua1RyYW5zZmVycmVkOiBmdW5jdGlvbihzb3VyY2UpIHsgfSwK
IAotICAgIG9uVHJhbnNmZXJGaW5pc2hlZDogZnVuY3Rpb24oc291cmNlKSB7IH0sCi0KICAgICBv
bkVycm9yOiBmdW5jdGlvbihzb3VyY2UsIGV2ZW50KSB7IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IQVJFbnRyeS5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanMKaW5kZXggZWVhNTMzOWEzZjAxYjNk
OTEzYjU1YzhhMDZlNWU5MGRhZTc3ODQwOC4uODA0YWIyYjk5OWE2M2ZjOTFiNjJmMzkyYzJhZmI5
MGU4YTI2NzA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9IQVJFbnRyeS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hB
UkVudHJ5LmpzCkBAIC0xNjQsNyArMTY0LDcgQEAgV2ViSW5zcGVjdG9yLkhBUkVudHJ5LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHRleHQ6IHRoaXMuX3JlcXVlc3QucmVxdWVzdEZvcm1EYXRh
CiAgICAgICAgIH07CiAgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0LmZvcm1QYXJhbWV0ZXJzKQot
ICAgICAgICAgICByZXMucGFyYW1zID0gdGhpcy5fYnVpbGRQYXJhbWV0ZXJzKHRoaXMuX3JlcXVl
c3QuZm9ybVBhcmFtZXRlcnMpOworICAgICAgICAgICAgcmVzLnBhcmFtcyA9IHRoaXMuX2J1aWxk
UGFyYW1ldGVycyh0aGlzLl9yZXF1ZXN0LmZvcm1QYXJhbWV0ZXJzKTsKICAgICAgICAgcmV0dXJu
IHJlczsKICAgICB9LAogCkBAIC0yNzksMTkgKzI3OSwyNCBAQCBXZWJJbnNwZWN0b3IuSEFSTG9n
LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBidWlsZDogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgdmFyIHdlYktpdFZlcnNpb24gPSAvQXBwbGVXZWJLaXRcLyhbXiBdKykvLmV4ZWMod2lu
ZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpOwotCiAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAg
ICB2ZXJzaW9uOiAiMS4yIiwKLSAgICAgICAgICAgIGNyZWF0b3I6IHsKLSAgICAgICAgICAgICAg
ICBuYW1lOiAiV2ViSW5zcGVjdG9yIiwKLSAgICAgICAgICAgICAgICB2ZXJzaW9uOiB3ZWJLaXRW
ZXJzaW9uID8gd2ViS2l0VmVyc2lvblsxXSA6ICJuL2EiCi0gICAgICAgICAgICB9LAorICAgICAg
ICAgICAgY3JlYXRvcjogdGhpcy5fY3JlYXRvcigpLAogICAgICAgICAgICAgcGFnZXM6IHRoaXMu
X2J1aWxkUGFnZXMoKSwKICAgICAgICAgICAgIGVudHJpZXM6IHRoaXMuX3JlcXVlc3RzLm1hcCh0
aGlzLl9jb252ZXJ0UmVzb3VyY2UuYmluZCh0aGlzKSkKICAgICAgICAgfQogICAgIH0sCiAKKyAg
ICBfY3JlYXRvcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHdlYktpdFZlcnNpb24g
PSAvQXBwbGVXZWJLaXRcLyhbXiBdKykvLmV4ZWMod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQp
OworCisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBuYW1lOiAiV2ViSW5zcGVjdG9yIiwK
KyAgICAgICAgICAgIHZlcnNpb246IHdlYktpdFZlcnNpb24gPyB3ZWJLaXRWZXJzaW9uWzFdIDog
Im4vYSIKKyAgICAgICAgfTsKKyAgICB9LAorCiAgICAgLyoqCiAgICAgICogQHJldHVybiB7QXJy
YXl9CiAgICAgICovCkBAIC0zNDgsMyArMzUzLDg3IEBAIFdlYkluc3BlY3Rvci5IQVJMb2cucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkhBUkVudHJ5Ll90b01pbGxp
c2Vjb25kcyh0aW1lIC0gc3RhcnRUaW1lKTsKICAgICB9CiB9CisKKy8qKgorICogQGNvbnN0cnVj
dG9yCisgKi8KK1dlYkluc3BlY3Rvci5IQVJXcml0ZXIgPSBmdW5jdGlvbigpCit7Cit9CisKK1dl
Ykluc3BlY3Rvci5IQVJXcml0ZXIucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLk91dHB1dFN0cmVhbX0gc3RyZWFtCisgICAgICogQHBhcmFtIHtBcnJh
eS48V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0Pn0gcmVxdWVzdHMKKyAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5Qcm9ncmVzc30gcHJvZ3Jlc3MKKyAgICAgKi8KKyAgICB3cml0ZTogZnVu
Y3Rpb24oc3RyZWFtLCByZXF1ZXN0cywgcHJvZ3Jlc3MpCisgICAgeworICAgICAgICB0aGlzLl9z
dHJlYW0gPSBzdHJlYW07CisgICAgICAgIHRoaXMuX2hhckxvZyA9IChuZXcgV2ViSW5zcGVjdG9y
LkhBUkxvZyhyZXF1ZXN0cykpLmJ1aWxkKCk7CisgICAgICAgIHRoaXMuX3BlbmRpbmdSZXF1ZXN0
cyA9IDE7IC8vIEd1YXJkIGFnYWluc3QgY29tcGxldGluZyByZXNvdXJjZSB0cmFuc2ZlciBiZWZv
cmUgYWxsIHJlcXVlc3RzIGFyZSBtYWRlLgorICAgICAgICB2YXIgZW50cmllcyA9IHRoaXMuX2hh
ckxvZy5lbnRyaWVzOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgICAgIHZhciBjb250ZW50ID0gcmVxdWVzdHNbaV0uY29udGVudDsK
KyAgICAgICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gInVuZGVmaW5lZCIgJiYgcmVxdWVz
dHNbaV0uZmluaXNoZWQpIHsKKyAgICAgICAgICAgICAgICArK3RoaXMuX3BlbmRpbmdSZXF1ZXN0
czsKKyAgICAgICAgICAgICAgICByZXF1ZXN0c1tpXS5yZXF1ZXN0Q29udGVudCh0aGlzLl9vbkNv
bnRlbnRBdmFpbGFibGUuYmluZCh0aGlzLCBlbnRyaWVzW2ldKSk7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKGNvbnRlbnQgIT09IG51bGwpCisgICAgICAgICAgICAgICAgZW50cmllc1tpXS5yZXNw
b25zZS5jb250ZW50LnRleHQgPSBjb250ZW50OworICAgICAgICB9CisgICAgICAgIHZhciBjb21w
b3NpdGVQcm9ncmVzcyA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcG9zaXRlUHJvZ3Jlc3MocHJvZ3Jl
c3MpOworICAgICAgICB0aGlzLl93cml0ZVByb2dyZXNzID0gY29tcG9zaXRlUHJvZ3Jlc3MuY3Jl
YXRlU3ViUHJvZ3Jlc3MoKTsKKyAgICAgICAgaWYgKC0tdGhpcy5fcGVuZGluZ1JlcXVlc3RzKSB7
CisgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0c1Byb2dyZXNzID0gY29tcG9zaXRlUHJvZ3Jlc3Mu
Y3JlYXRlU3ViUHJvZ3Jlc3MoKTsKKyAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RzUHJvZ3Jlc3Mu
c2V0VGl0bGUoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xsZWN0aW5nIGNvbnRlbnTigKYiKSk7
CisgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0c1Byb2dyZXNzLnNldFRvdGFsV29yayh0aGlzLl9w
ZW5kaW5nUmVxdWVzdHMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2JlZ2lu
V3JpdGUoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtPYmplY3R9IGVudHJ5
CisgICAgICogQHBhcmFtIHtzdHJpbmd8bnVsbH0gY29udGVudAorICAgICAqIEBwYXJhbSB7Ym9v
bGVhbn0gY29udGVudEVuY29kZWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IG1pbWVUeXBlCisg
ICAgICovCisgICAgX29uQ29udGVudEF2YWlsYWJsZTogZnVuY3Rpb24oZW50cnksIGNvbnRlbnQs
IGNvbnRlbnRFbmNvZGVkLCBtaW1lVHlwZSkKKyAgICB7CisgICAgICAgIGlmIChjb250ZW50ICE9
PSBudWxsKQorICAgICAgICAgICAgZW50cnkucmVzcG9uc2UuY29udGVudC50ZXh0ID0gY29udGVu
dDsKKyAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3RzUHJvZ3Jlc3MpCisgICAgICAgICAgICB0aGlz
Ll9yZXF1ZXN0c1Byb2dyZXNzLndvcmtlZCgpOworICAgICAgICBpZiAoIS0tdGhpcy5fcGVuZGlu
Z1JlcXVlc3RzKSB7CisgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0c1Byb2dyZXNzLmRvbmUoKTsK
KyAgICAgICAgICAgIHRoaXMuX2JlZ2luV3JpdGUoKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAg
ICBfYmVnaW5Xcml0ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgY29uc3QganNvbkluZGVu
dCA9IDI7CisgICAgICAgIHRoaXMuX3RleHQgPSBKU09OLnN0cmluZ2lmeSh7bG9nOiB0aGlzLl9o
YXJMb2d9LCBudWxsLCBqc29uSW5kZW50KTsKKyAgICAgICAgdGhpcy5fd3JpdGVQcm9ncmVzcy5z
ZXRUaXRsZShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldyaXRpbmcgZmlsZeKApiIpKTsKKyAgICAg
ICAgdGhpcy5fd3JpdGVQcm9ncmVzcy5zZXRUb3RhbFdvcmsodGhpcy5fdGV4dC5sZW5ndGgpOwor
ICAgICAgICB0aGlzLl9ieXRlc1dyaXR0ZW4gPSAwOworICAgICAgICB0aGlzLl93cml0ZU5leHRD
aHVuayh0aGlzLl9zdHJlYW0pOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5PdXRwdXRTdHJlYW19IHN0cmVhbQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBl
cnJvcgorICAgICAqLworICAgIF93cml0ZU5leHRDaHVuazogZnVuY3Rpb24oc3RyZWFtLCBlcnJv
cikKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9ieXRlc1dyaXR0ZW4gPj0gdGhpcy5fdGV4dC5s
ZW5ndGggfHwgZXJyb3IpIHsKKyAgICAgICAgICAgIHN0cmVhbS5jbG9zZSgpOworICAgICAgICAg
ICAgdGhpcy5fd3JpdGVQcm9ncmVzcy5kb25lKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgY29uc3QgY2h1bmtTaXplID0gMTAwMDAwOworICAgICAgICB2YXIgdGV4
dCA9IHRoaXMuX3RleHQuc3Vic3RyaW5nKHRoaXMuX2J5dGVzV3JpdHRlbiwgdGhpcy5fYnl0ZXNX
cml0dGVuICsgY2h1bmtTaXplKTsKKyAgICAgICAgdGhpcy5fYnl0ZXNXcml0dGVuICs9IHRleHQu
bGVuZ3RoOworICAgICAgICBzdHJlYW0ud3JpdGUodGV4dCwgdGhpcy5fd3JpdGVOZXh0Q2h1bmsu
YmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3dyaXRlUHJvZ3Jlc3Muc2V0V29ya2VkKHRoaXMu
X2J5dGVzV3JpdHRlbik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwppbmRleCBjN2I5MDA2MzIxN2MwYmJiNDkwMTg4
YWM4NjJiODdmYjg0M2VkNDU3Li45MWU3YjFmYzliNmJkYjI0MmE3ZmY3YzMzMWJhOTBkZGYxMzY0
MzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdv
cmtQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdv
cmtQYW5lbC5qcwpAQCAtNjUsNyArNjUsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcg
PSBmdW5jdGlvbigpCiAgICAgdGhpcy5fY3VycmVudE1hdGNoZWRSZXF1ZXN0SW5kZXggPSAtMTsK
IAogICAgIHRoaXMuX2NyZWF0ZVN0YXR1c2JhckJ1dHRvbnMoKTsKLSAgICB0aGlzLl9jcmVhdGVG
aWx0ZXJTdGF0dXNCYXJJdGVtcygpOworICAgIHRoaXMuX2NyZWF0ZVN0YXR1c0Jhckl0ZW1zKCk7
CiAgICAgdGhpcy5fbGlua2lmaWVyID0gbmV3IFdlYkluc3BlY3Rvci5MaW5raWZpZXIoKTsKIAog
ICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrTWFuYWdlci5FdmVudFR5cGVzLlJlcXVlc3RTdGFydGVkLCB0aGlzLl9vblJl
cXVlc3RTdGFydGVkLCB0aGlzKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBXZWJJbnNwZWN0b3IuTmV0
d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogCiAgICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBbdGhpcy5fbGFyZ2VyUmVxdWVzdHNCdXR0b24uZWxlbWVudCwg
dGhpcy5fcHJlc2VydmVMb2dUb2dnbGUuZWxlbWVudCwgdGhpcy5fY2xlYXJCdXR0b24uZWxlbWVu
dCwgdGhpcy5fZmlsdGVyQmFyRWxlbWVudF07CisgICAgICAgIHJldHVybiBbdGhpcy5fbGFyZ2Vy
UmVxdWVzdHNCdXR0b24uZWxlbWVudCwgdGhpcy5fcHJlc2VydmVMb2dUb2dnbGUuZWxlbWVudCwg
dGhpcy5fY2xlYXJCdXR0b24uZWxlbWVudCwgdGhpcy5fZmlsdGVyQmFyRWxlbWVudCwgdGhpcy5f
cHJvZ3Jlc3NCYXJDb250YWluZXJdOwogICAgIH0sCiAKICAgICBnZXQgdXNlTGFyZ2VSb3dzKCkK
QEAgLTMyNSw3ICszMjUsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl91cGRhdGVPZmZzY3JlZW5Sb3dzKCk7CiAgICAgfSwKIAotICAg
IF9jcmVhdGVGaWx0ZXJTdGF0dXNCYXJJdGVtczogZnVuY3Rpb24oKQorICAgIF9jcmVhdGVTdGF0
dXNCYXJJdGVtczogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIGZpbHRlckJhckVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgZmlsdGVyQmFyRWxl
bWVudC5jbGFzc05hbWUgPSAic2NvcGUtYmFyIHN0YXR1cy1iYXItaXRlbSI7CkBAIC0zNTgsNiAr
MzU4LDggQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIGNyZWF0ZUZpbHRlckVsZW1lbnQuY2FsbCh0aGlzLCB0eXBlLm5hbWUoKSwgdHlwZS5j
YXRlZ29yeVRpdGxlKCkpOwogICAgICAgICB9CiAgICAgICAgIHRoaXMuX2ZpbHRlckJhckVsZW1l
bnQgPSBmaWx0ZXJCYXJFbGVtZW50OworICAgICAgICB0aGlzLl9wcm9ncmVzc0JhckNvbnRhaW5l
ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9wcm9ncmVz
c0JhckNvbnRhaW5lci5jbGFzc05hbWUgPSAic3RhdHVzLWJhci1pdGVtIjsKICAgICB9LAogCiAg
ICAgX2NyZWF0ZVN1bW1hcnlCYXI6IGZ1bmN0aW9uKCkKQEAgLTk0NCwxNSArOTQ2LDEyIEBAIFdl
Ykluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9y
LnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/ICJDb3B5IHJlcXVlc3QgaGVhZGVycyIgOiAiQ29w
eSBSZXF1ZXN0IEhlYWRlcnMiKSwgdGhpcy5fY29weVJlcXVlc3RIZWFkZXJzLmJpbmQodGhpcywg
cmVxdWVzdCkpOwogICAgICAgICAgICAgaWYgKHJlcXVlc3QucmVzcG9uc2VIZWFkZXJzVGV4dCkK
ICAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0
cmluZyhXZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNlTWVudVRpdGxlcygpID8gIkNvcHkgcmVzcG9u
c2UgaGVhZGVycyIgOiAiQ29weSBSZXNwb25zZSBIZWFkZXJzIiksIHRoaXMuX2NvcHlSZXNwb25z
ZUhlYWRlcnMuYmluZCh0aGlzLCByZXF1ZXN0KSk7Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNl
TWVudVRpdGxlcygpID8gIkNvcHkgZW50cnkgYXMgSEFSIiA6ICJDb3B5IEVudHJ5IGFzIEhBUiIp
LCB0aGlzLl9jb3B5UmVxdWVzdC5iaW5kKHRoaXMsIHJlcXVlc3QpKTsKICAgICAgICAgfQogICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNw
ZWN0b3IudXNlTG93ZXJDYXNlTWVudVRpdGxlcygpID8gIkNvcHkgYWxsIGFzIEhBUiIgOiAiQ29w
eSBBbGwgYXMgSEFSIiksIHRoaXMuX2NvcHlBbGwuYmluZCh0aGlzKSk7CiAKICAgICAgICAgaWYg
KEluc3BlY3RvckZyb250ZW5kSG9zdC5jYW5TYXZlKCkpIHsKICAgICAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZFNlcGFyYXRvcigpOwotICAgICAgICAgICAgaWYgKHJlcXVlc3QpCi0gICAgICAg
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2Vi
SW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/ICJTYXZlIGVudHJ5IGFzIEhBUiIg
OiAiU2F2ZSBFbnRyeSBhcyBIQVIiKSwgdGhpcy5fZXhwb3J0UmVxdWVzdC5iaW5kKHRoaXMsIHJl
cXVlc3QpKTsKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiU2F2ZSBh
bGwgYXMgSEFSIiA6ICJTYXZlIEFsbCBhcyBIQVIiKSwgdGhpcy5fZXhwb3J0QWxsLmJpbmQodGhp
cykpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/ICJTYXZlIHdpdGgg
Y29udGVudCBhcyBIQVIiIDogIlNhdmUgd2l0aCBDb250ZW50IGFzIEhBUiIpLCB0aGlzLl9leHBv
cnRBbGwuYmluZCh0aGlzKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodGhpcy5fY2FuQ2xl
YXJCcm93c2VyQ2FjaGUgfHwgdGhpcy5fY2FuQ2xlYXJCcm93c2VyQ29va2llcykKQEAgLTk2Myw3
ICs5NjIsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2Vi
SW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/ICJDbGVhciBicm93c2VyIGNvb2tp
ZXMiIDogIkNsZWFyIEJyb3dzZXIgQ29va2llcyIpLCB0aGlzLl9jbGVhckJyb3dzZXJDb29raWVz
LmJpbmQodGhpcykpOwogCiAKLSAgICAgICAgaWYgKHJlcXVlc3QudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLnJlc291cmNlVHlwZXMuWEhSKSB7CisgICAgICAgIGlmIChyZXF1ZXN0ICYmIHJlcXVlc3Qu
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuWEhSKSB7CiAgICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXBsYXkgWEhSIiksIHRoaXMuX3JlcGxh
eVhIUi5iaW5kKHRoaXMsIHJlcXVlc3QucmVxdWVzdElkKSk7CiAgICAgICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKQEAgLTk4NiwxMiArOTg1LDYgQEAgV2ViSW5zcGVjdG9y
Lk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmNvcHlUZXh0KEpTT04uc3RyaW5naWZ5KGhhckFyY2hpdmUsIG51bGwsIDIpKTsKICAgICB9
LAogCi0gICAgX2NvcHlSZXF1ZXN0OiBmdW5jdGlvbihyZXF1ZXN0KQotICAgIHsKLSAgICAgICAg
dmFyIGhhciA9IChuZXcgV2ViSW5zcGVjdG9yLkhBUkVudHJ5KHJlcXVlc3QpKS5idWlsZCgpOwot
ICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY29weVRleHQoSlNPTi5zdHJpbmdpZnkoaGFy
LCBudWxsLCAyKSk7Ci0gICAgfSwKLQogICAgIF9jb3B5TG9jYXRpb246IGZ1bmN0aW9uKHJlcXVl
c3QpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY29weVRleHQocmVxdWVz
dC51cmwpOwpAQCAtMTAwOSwxNyArMTAwMiwxNiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1Zp
ZXcucHJvdG90eXBlID0gewogCiAgICAgX2V4cG9ydEFsbDogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgdmFyIGhhckFyY2hpdmUgPSB7Ci0gICAgICAgICAgICBsb2c6IChuZXcgV2ViSW5zcGVj
dG9yLkhBUkxvZyh0aGlzLl9yZXF1ZXN0cykpLmJ1aWxkKCkKLSAgICAgICAgfTsKLSAgICAgICAg
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5zYXZlKFdlYkluc3BlY3Rvci5pbnNw
ZWN0ZWRQYWdlRG9tYWluICsgIi5oYXIiLCBKU09OLnN0cmluZ2lmeShoYXJBcmNoaXZlLCBudWxs
LCAyKSwgdHJ1ZSk7Ci0gICAgfSwKLQotICAgIF9leHBvcnRSZXF1ZXN0OiBmdW5jdGlvbihyZXF1
ZXN0KQotICAgIHsKLSAgICAgICAgdmFyIGhhciA9IChuZXcgV2ViSW5zcGVjdG9yLkhBUkVudHJ5
KHJlcXVlc3QpKS5idWlsZCgpOwotICAgICAgICBXZWJJbnNwZWN0b3IuZmlsZU1hbmFnZXIuc2F2
ZShyZXF1ZXN0LmRpc3BsYXlOYW1lICsgIi5oYXIiLCBKU09OLnN0cmluZ2lmeShoYXIsIG51bGws
IDIpLCB0cnVlKTsKKyAgICAgICAgdmFyIGZpbGVuYW1lID0gV2ViSW5zcGVjdG9yLmluc3BlY3Rl
ZFBhZ2VEb21haW4gKyAiLmhhciI7CisgICAgICAgIHZhciBzdHJlYW0gPSBuZXcgV2ViSW5zcGVj
dG9yLkZpbGVPdXRwdXRTdHJlYW0oKTsKKyAgICAgICAgc3RyZWFtLm9wZW4oZmlsZW5hbWUsIG9w
ZW5DYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgZnVuY3Rpb24gb3BlbkNhbGxiYWNrKCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHByb2dyZXNzSW5kaWNhdG9yID0gbmV3IFdlYklu
c3BlY3Rvci5Qcm9ncmVzc0luZGljYXRvcigpOworICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3NC
YXJDb250YWluZXIuYXBwZW5kQ2hpbGQocHJvZ3Jlc3NJbmRpY2F0b3IuZWxlbWVudCk7CisgICAg
ICAgICAgICB2YXIgaGFyV3JpdGVyID0gbmV3IFdlYkluc3BlY3Rvci5IQVJXcml0ZXIoKTsKKyAg
ICAgICAgICAgIGhhcldyaXRlci53cml0ZShzdHJlYW0sIHRoaXMuX3JlcXVlc3RzLCBwcm9ncmVz
c0luZGljYXRvcik7CisgICAgICAgIH0KICAgICB9LAogCiAgICAgX2NsZWFyQnJvd3NlckNhY2hl
OiBmdW5jdGlvbihldmVudCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlMmFmMDQzN2QzYjIxYzcwMDMyOTA0OWFkZWY4NTU3
ZTViNzAwMmY0Li43MmE5MGQ0OTc1NTIzOTQ2ZjQyNGQxMDNiNmUxNWNmOGY0NTY1ZjllIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDktMjEgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IHNhdmluZyBIQVIg
d2l0aCByZXNvdXJjZXMgY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTczNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAtIG1vdmVkIFN0cmluZ091dHB1dFN0cmVhbSB0byBpbnNwZWN0b3ItdGVz
dC5qcyBmb3IgcmV1c2U7CisgICAgICAgIC0gYWRkZWQgdGVzdCBmb3IgSEFSV3JpdGVyIGFuZCBy
ZXNwb25zZSBjb250ZW50IGluIEhBUi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0KToK
KyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC4pOgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaGFyLWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2hhci1jb250ZW50Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS90aW1lbGluZS10ZXN0LmpzOgorICAg
ICAgICAoaW5pdGlhbGl6ZV9UaW1lbGluZSk6CisKIDIwMTItMDktMjEgIFpvbHRhbiBIZXJjemVn
ICA8emhlcmN6ZWdAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVu
aW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3It
dGVzdC5qcwppbmRleCAxNzdhNjE2NmM3MjcxOWZiODAwNDYwYjllYTkxMDk1YTZmMGFjYThhLi43
ZDcxNDljNjY0NThiNWM2MDNlNTFiOWFlYTc0Njk5OTc2YjE1NzcxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcworKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwpAQCAtMzcyLDYg
KzM3MiwyNiBAQCBJbnNwZWN0b3JUZXN0LnRleHRDb250ZW50V2l0aExpbmVCcmVha3MgPSBmdW5j
dGlvbihub2RlKQogICAgIHJldHVybiBidWZmZXI7CiB9CiAKK0luc3BlY3RvclRlc3QuU3RyaW5n
T3V0cHV0U3RyZWFtID0gZnVuY3Rpb24oY2FsbGJhY2spCit7CisgICAgdGhpcy5fY2FsbGJhY2sg
PSBjYWxsYmFjazsKKyAgICB0aGlzLl9idWZmZXIgPSAiIjsKK307CisKK0luc3BlY3RvclRlc3Qu
U3RyaW5nT3V0cHV0U3RyZWFtLnByb3RvdHlwZSA9IHsKKyAgICB3cml0ZTogZnVuY3Rpb24oY2h1
bmssIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5fYnVmZmVyICs9IGNodW5rOworICAg
ICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICBjYWxsYmFjayh0aGlzKTsKKyAgICB9LAor
CisgICAgY2xvc2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NhbGxiYWNrKHRo
aXMuX2J1ZmZlcik7CisgICAgfQorfTsKKwogfTsKIAogdmFyIGluaXRpYWxpemVDYWxsSWQgPSAw
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9o
YXItY29udGVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2hhci1jb250ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDM0NmM5NmE3
ZGRiMTcxZWZjMWViOTk2YjY3ODQ2ZGNmYTVkMTkyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9oYXItY29udGVudC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdHMgY29udmVyc2lvbiBvZiBJbnNwZWN0b3IncyByZXNv
dXJjZSByZXByZXNlbnRhdGlvbiBpbnRvIEhBUiBmb3JtYXQuCisKK1BhZ2UgcmVsb2FkZWQuCitp
bml0aWF0b3IuY3NzOiAuaW1hZ2UtYmFja2dyb3VuZCB7CisgICAgYmFja2dyb3VuZC1pbWFnZTog
dXJsKCJyZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZyYW5kb209MSZzaXplPTIwMCIpOworfQorCisu
aW1hZ2UtYmFja2dyb3VuZC0yIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoInJlc291cmNl
LnBocD90eXBlPWltYWdlJnJhbmRvbT0xJnNpemU9MzAwIik7Cit9CisKKworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2hhci1jb250ZW50Lmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2hhci1jb250ZW50
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTYyYzhlODRjM2EwMzU2Nzg3ZjQwYmFhMjliOTFmNjhhMmM3M2Fi
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaGFyLWNvbnRlbnQuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IWRvY3R5cGUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBo
cmVmPSJyZXNvdXJjZXMvaW5pdGlhdG9yLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9y
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy10ZXN0LmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdD4KKwordmFyIHRlc3QgPSBmdW5jdGlvbigpCit7CisgICAgZnVu
Y3Rpb24gb25SZWxvYWQoKQorICAgIHsKKyAgICAgICAgdmFyIHdyaXRlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuSEFSV3JpdGVyKCk7CisgICAgICAgIHZhciBzdHJlYW0gPSBuZXcgSW5zcGVjdG9yVGVz
dC5TdHJpbmdPdXRwdXRTdHJlYW0ob25TYXZlZCk7CisgICAgICAgIHdyaXRlci53cml0ZShzdHJl
YW0sIFdlYkluc3BlY3Rvci5uZXR3b3JrTG9nLnJlcXVlc3RzLCBuZXcgV2ViSW5zcGVjdG9yLlBy
b2dyZXNzKCkpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG9uU2F2ZWQoZGF0YSkKKyAgICB7Cisg
ICAgICAgIHZhciBoYXIgPSBKU09OLnBhcnNlKGRhdGEpOworICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiaW5pdGlhdG9yLmNzczogIiArIGZpbmRFbnRyeShoYXIsIC9cL2luaXRpYXRv
ci5jc3MkLykucmVzcG9uc2UuY29udGVudC50ZXh0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBm
aW5kRW50cnkoaGFyLCByZWdleHApCisgICAgeworICAgICAgICB2YXIgZW50cmllcyA9IGhhci5s
b2cuZW50cmllczsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpXTsKKyAgICAgICAgICAg
ICBpZiAocmVnZXhwLnRlc3QoZW50cnkucmVxdWVzdC51cmwpKQorICAgICAgICAgICAgICAgICBy
ZXR1cm4gZW50cnk7CisgICAgICAgIH0KKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IkZBSUw6IGNhbid0IGZpbmQgcmVzb3VyY2UgZm9yICIgKyByZWdleHApOworICAgICAgICByZXR1
cm4gbnVsbDsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uob25SZWxvYWQp
OworfQorPC9zY3JpcHQ+CisKKworPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
Cis8cD4KK1Rlc3RzIGNvbnZlcnNpb24gb2YgSW5zcGVjdG9yJ3MgcmVzb3VyY2UgcmVwcmVzZW50
YXRpb24gaW50byBIQVIgZm9ybWF0LgorPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvdGltZWxpbmUtdGVzdC5qcyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS90aW1lbGluZS10ZXN0LmpzCmluZGV4IGIxZjdl
ZjAwZGZkODY4NGZlY2YxMjUzZGVmYTY2MTZiZDBjNGYwMjkuLjRkNjkzMDE5MTBiOWI2NWUwNTk0
MTM1MjBiNmVmYjFhNDM1YjdlNDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS90aW1lbGluZS10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS90aW1lbGluZS10ZXN0LmpzCkBAIC0yMDcsMjQgKzIwNyw0IEBAIEluc3BlY3RvclRlc3Qu
RmFrZUZpbGVSZWFkZXIucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLUluc3BlY3RvclRlc3Qu
U3RyaW5nT3V0cHV0U3RyZWFtID0gZnVuY3Rpb24oY2FsbGJhY2spCi17Ci0gICAgdGhpcy5fY2Fs
bGJhY2sgPSBjYWxsYmFjazsKLSAgICB0aGlzLl9idWZmZXIgPSAiIjsKLX07Ci0KLUluc3BlY3Rv
clRlc3QuU3RyaW5nT3V0cHV0U3RyZWFtLnByb3RvdHlwZSA9IHsKLSAgICB3cml0ZTogZnVuY3Rp
b24oY2h1bmssIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdGhpcy5fYnVmZmVyICs9IGNodW5r
OwotICAgICAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjayh0aGlzKTsKLSAg
ICB9LAotCi0gICAgY2xvc2U6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2NhbGxi
YWNrKHRoaXMuX2J1ZmZlcik7Ci0gICAgfQotfTsKLQogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165289</attachid>
            <date>2012-09-23 10:49:11 -0700</date>
            <delta_ts>2012-09-24 00:44:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97341-20120923214832.patch</filename>
            <type>text/plain</type>
            <size>28580</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU1MjIwNzU5ODViMzc1
OTRjYjAyYWE0NTBiZjI2M2M3MTM3YTY0Ni4uNDAwY2I3NTc5ZDk0YTYxM2I4NDEzOGYwN2JlNWFm
ZjgwN2FhZTE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA5LTIxICBBbmRy
ZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogc3VwcG9ydCBzYXZpbmcgSEFSIHdpdGggcmVzb3VyY2VzIGNvbnRlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MzQxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBhZGQgV2ViSW5zcGVjdG9yLkhB
UldyaXRlciB0aGF0IHdyaXRlcyBIQVIgd2l0aCBjb250ZW50IHRvIGEgc3RyZWFtOworICAgICAg
ICAtIHJlcGxhY2UgU2F2ZSBhbGwgYXMgSEFSIHdpdGggU2F2ZSBhbGwgd2l0aCBDb250ZW50IGFz
IEhBUiBpbiBuZXR3b3JrJ3MgcGFuZWwgY29udGV4dCBtZW51OworICAgICAgICAtIHJlbW92ZSBl
bnRyaWVzIGZvciBjb3B5aW5nL3NhdmluZyBvZiBpbmRpdmlkdWFsIHJlcXVlc3QgaXRlbXMgdG8g
cmVkdWNlIGNsdXR0ZXIgaW4gY29udGV4dCBtZW51OworICAgICAgICAtIGEgZHJpdmUtYnkgZml4
IG9mIGFuIGV4Y2VwdGlvbiB3aGVuIGludm9raW5nIGNvbnRleHQgbWVudSBub3Qgb24gYSBuZXR3
b3JrIGl0ZW07CisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9o
YXItY29udGVudC5odG1sCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmlu
Z3MuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlVXRpbHMuanM6IAorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSEFSRW50cnkucHJvdG90eXBlLl9idWlsZFBvc3REYXRhKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IQVJMb2cucHJvdG90eXBlLmJ1aWxkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
QVJMb2cucHJvdG90eXBlLl9jcmVhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IQVJXcml0
ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhBUldyaXRlci5wcm90b3R5cGUud3JpdGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhBUldyaXRlci5wcm90b3R5cGUuX29uQ29udGVudEF2YWls
YWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSEFSV3JpdGVyLnByb3RvdHlwZS5fYmVnaW5X
cml0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSEFSV3JpdGVyLnByb3RvdHlwZS5fd3JpdGVO
ZXh0Q2h1bmspOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5nZXQgc3Rh
dHVzQmFySXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3Rv
dHlwZS5fY3JlYXRlU3RhdHVzQmFySXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdv
cmtMb2dWaWV3LnByb3RvdHlwZS5fY29udGV4dE1lbnUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fZXhwb3J0QWxsLm9wZW5DYWxsYmFjayk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9leHBvcnRBbGwpOgor
CiAyMDEyLTA5LTIxICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI5MjE5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNl
L1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IGZhZDFmMmE2
N2FlYmNhODZlZWEyZTRiOTkwOWQ4OWJhODU3MGE5YTguLmZkY2ZjZmUxYWUzMTA5ZTAzNmQ5ZDIw
MjZlM2RkZWIzNDZmMTM5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTEyOSwxNCArMTI5LDEwIEBAIGxvY2FsaXplZFN0cmlu
Z3NbIkNvbnRpbnVlIHRvIEhlcmUiXSA9ICJDb250aW51ZSB0byBIZXJlIjsKIGxvY2FsaXplZFN0
cmluZ3NbIkNvbnRpbnVlIHRvIGhlcmUiXSA9ICJDb250aW51ZSB0byBoZXJlIjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIkNvbnRpbnVlIl0gPSAiQ29udGludWUiOwogbG9jYWxpemVkU3RyaW5nc1siQ29w
eSBhcyBIVE1MIl0gPSAiQ29weSBhcyBIVE1MIjsKLWxvY2FsaXplZFN0cmluZ3NbIkNvcHkgZW50
cnkgYXMgSEFSIl0gPSAiQ29weSBlbnRyeSBhcyBIQVIiOwotbG9jYWxpemVkU3RyaW5nc1siQ29w
eSBFbnRyeSBhcyBIQVIiXSA9ICJDb3B5IEVudHJ5IGFzIEhBUiI7Ci1sb2NhbGl6ZWRTdHJpbmdz
WyJTYXZlIGVudHJ5IGFzIEhBUiJdID0gIlNhdmUgZW50cnkgYXMgSEFSIjsKLWxvY2FsaXplZFN0
cmluZ3NbIlNhdmUgRW50cnkgYXMgSEFSIl0gPSAiU2F2ZSBFbnRyeSBhcyBIQVIiOwogbG9jYWxp
emVkU3RyaW5nc1siQ29weSBhbGwgYXMgSEFSIl0gPSAiQ29weSBhbGwgYXMgSEFSIjsKIGxvY2Fs
aXplZFN0cmluZ3NbIkNvcHkgQWxsIGFzIEhBUiJdID0gIkNvcHkgQWxsIGFzIEhBUiI7Ci1sb2Nh
bGl6ZWRTdHJpbmdzWyJTYXZlIGFsbCBhcyBIQVIiXSA9ICJTYXZlIGFsbCBhcyBIQVIiOwotbG9j
YWxpemVkU3RyaW5nc1siU2F2ZSBBbGwgYXMgSEFSIl0gPSAiU2F2ZSBBbGwgYXMgSEFSIjsKK2xv
Y2FsaXplZFN0cmluZ3NbIlNhdmUgd2l0aCBjb250ZW50IGFzIEhBUiJdID0gIlNhdmUgd2l0aCBj
b250ZW50IGFzIEhBUiI7Citsb2NhbGl6ZWRTdHJpbmdzWyJTYXZlIHdpdGggQ29udGVudCBhcyBI
QVIiXSA9ICJTYXZlIHdpdGggQ29udGVudCBhcyBIQVIiOwogbG9jYWxpemVkU3RyaW5nc1siQ29w
eSBsaW5rIGFkZHJlc3MiXSA9ICJDb3B5IGxpbmsgYWRkcmVzcyI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJDb3B5IExpbmsgQWRkcmVzcyJdID0gIkNvcHkgTGluayBBZGRyZXNzIjsKIGxvY2FsaXplZFN0
cmluZ3NbIkNvcHkgcmVxdWVzdCBoZWFkZXJzIl0gPSAiQ29weSByZXF1ZXN0IGhlYWRlcnMiOwpA
QCAtNzQ5LDMgKzc0NSw1IEBAIGxvY2FsaXplZFN0cmluZ3NbIkxheW91dCBmb3JjZWQiXSA9ICJM
YXlvdXQgZm9yY2VkIjsKIGxvY2FsaXplZFN0cmluZ3NbIlBhdXNlZCBvbiBhc3NlcnRpb24uIl0g
PSAiUGF1c2VkIG9uIGFzc2VydGlvbi4iOwogbG9jYWxpemVkU3RyaW5nc1siJXMgKCVzJXMpIl0g
PSAiJXMgKCVzJXMpIjsKIGxvY2FsaXplZFN0cmluZ3NbIlJ1bm5pbmcgYXVkaXQiXSA9ICJSdW5u
aW5nIGF1ZGl0IjsKK2xvY2FsaXplZFN0cmluZ3NbIkNvbGxlY3RpbmcgY29udGVudOKApiJdID0g
IkNvbGxlY3RpbmcgY29udGVudOKApiI7Citsb2NhbGl6ZWRTdHJpbmdzWyJXcml0aW5nIGZpbGXi
gKYiXSA9ICJXcml0aW5nIGZpbGXigKYiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9GaWxlVXRpbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0ZpbGVVdGlscy5qcwppbmRleCAyMzZjZTFkMDNkM2EzZWYwN2JlNjc2NWQyYzcw
MjhjYjExZDZiOTAxLi5hMGJlYTIwM2VhNTZhNjI4YzkwMjI1Y2JkYTRjZTBlNzJjNThkODg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVVdGlscy5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVVdGlscy5qcwpA
QCAtNDAsOCArNDAsNiBAQCBXZWJJbnNwZWN0b3IuT3V0cHV0U3RyZWFtRGVsZWdhdGUucHJvdG90
eXBlID0gewogCiAgICAgb25DaHVua1RyYW5zZmVycmVkOiBmdW5jdGlvbihzb3VyY2UpIHsgfSwK
IAotICAgIG9uVHJhbnNmZXJGaW5pc2hlZDogZnVuY3Rpb24oc291cmNlKSB7IH0sCi0KICAgICBv
bkVycm9yOiBmdW5jdGlvbihzb3VyY2UsIGV2ZW50KSB7IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IQVJFbnRyeS5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanMKaW5kZXggZWVhNTMzOWEzZjAxYjNk
OTEzYjU1YzhhMDZlNWU5MGRhZTc3ODQwOC4uODA0YWIyYjk5OWE2M2ZjOTFiNjJmMzkyYzJhZmI5
MGU4YTI2NzA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9IQVJFbnRyeS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hB
UkVudHJ5LmpzCkBAIC0xNjQsNyArMTY0LDcgQEAgV2ViSW5zcGVjdG9yLkhBUkVudHJ5LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHRleHQ6IHRoaXMuX3JlcXVlc3QucmVxdWVzdEZvcm1EYXRh
CiAgICAgICAgIH07CiAgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0LmZvcm1QYXJhbWV0ZXJzKQot
ICAgICAgICAgICByZXMucGFyYW1zID0gdGhpcy5fYnVpbGRQYXJhbWV0ZXJzKHRoaXMuX3JlcXVl
c3QuZm9ybVBhcmFtZXRlcnMpOworICAgICAgICAgICAgcmVzLnBhcmFtcyA9IHRoaXMuX2J1aWxk
UGFyYW1ldGVycyh0aGlzLl9yZXF1ZXN0LmZvcm1QYXJhbWV0ZXJzKTsKICAgICAgICAgcmV0dXJu
IHJlczsKICAgICB9LAogCkBAIC0yNzksMTkgKzI3OSwyNCBAQCBXZWJJbnNwZWN0b3IuSEFSTG9n
LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBidWlsZDogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgdmFyIHdlYktpdFZlcnNpb24gPSAvQXBwbGVXZWJLaXRcLyhbXiBdKykvLmV4ZWMod2lu
ZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpOwotCiAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAg
ICB2ZXJzaW9uOiAiMS4yIiwKLSAgICAgICAgICAgIGNyZWF0b3I6IHsKLSAgICAgICAgICAgICAg
ICBuYW1lOiAiV2ViSW5zcGVjdG9yIiwKLSAgICAgICAgICAgICAgICB2ZXJzaW9uOiB3ZWJLaXRW
ZXJzaW9uID8gd2ViS2l0VmVyc2lvblsxXSA6ICJuL2EiCi0gICAgICAgICAgICB9LAorICAgICAg
ICAgICAgY3JlYXRvcjogdGhpcy5fY3JlYXRvcigpLAogICAgICAgICAgICAgcGFnZXM6IHRoaXMu
X2J1aWxkUGFnZXMoKSwKICAgICAgICAgICAgIGVudHJpZXM6IHRoaXMuX3JlcXVlc3RzLm1hcCh0
aGlzLl9jb252ZXJ0UmVzb3VyY2UuYmluZCh0aGlzKSkKICAgICAgICAgfQogICAgIH0sCiAKKyAg
ICBfY3JlYXRvcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHdlYktpdFZlcnNpb24g
PSAvQXBwbGVXZWJLaXRcLyhbXiBdKykvLmV4ZWMod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQp
OworCisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBuYW1lOiAiV2ViSW5zcGVjdG9yIiwK
KyAgICAgICAgICAgIHZlcnNpb246IHdlYktpdFZlcnNpb24gPyB3ZWJLaXRWZXJzaW9uWzFdIDog
Im4vYSIKKyAgICAgICAgfTsKKyAgICB9LAorCiAgICAgLyoqCiAgICAgICogQHJldHVybiB7QXJy
YXl9CiAgICAgICovCkBAIC0zNDgsMyArMzUzLDg3IEBAIFdlYkluc3BlY3Rvci5IQVJMb2cucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkhBUkVudHJ5Ll90b01pbGxp
c2Vjb25kcyh0aW1lIC0gc3RhcnRUaW1lKTsKICAgICB9CiB9CisKKy8qKgorICogQGNvbnN0cnVj
dG9yCisgKi8KK1dlYkluc3BlY3Rvci5IQVJXcml0ZXIgPSBmdW5jdGlvbigpCit7Cit9CisKK1dl
Ykluc3BlY3Rvci5IQVJXcml0ZXIucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLk91dHB1dFN0cmVhbX0gc3RyZWFtCisgICAgICogQHBhcmFtIHtBcnJh
eS48V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0Pn0gcmVxdWVzdHMKKyAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5Qcm9ncmVzc30gcHJvZ3Jlc3MKKyAgICAgKi8KKyAgICB3cml0ZTogZnVu
Y3Rpb24oc3RyZWFtLCByZXF1ZXN0cywgcHJvZ3Jlc3MpCisgICAgeworICAgICAgICB0aGlzLl9z
dHJlYW0gPSBzdHJlYW07CisgICAgICAgIHRoaXMuX2hhckxvZyA9IChuZXcgV2ViSW5zcGVjdG9y
LkhBUkxvZyhyZXF1ZXN0cykpLmJ1aWxkKCk7CisgICAgICAgIHRoaXMuX3BlbmRpbmdSZXF1ZXN0
cyA9IDE7IC8vIEd1YXJkIGFnYWluc3QgY29tcGxldGluZyByZXNvdXJjZSB0cmFuc2ZlciBiZWZv
cmUgYWxsIHJlcXVlc3RzIGFyZSBtYWRlLgorICAgICAgICB2YXIgZW50cmllcyA9IHRoaXMuX2hh
ckxvZy5lbnRyaWVzOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgICAgIHZhciBjb250ZW50ID0gcmVxdWVzdHNbaV0uY29udGVudDsK
KyAgICAgICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gInVuZGVmaW5lZCIgJiYgcmVxdWVz
dHNbaV0uZmluaXNoZWQpIHsKKyAgICAgICAgICAgICAgICArK3RoaXMuX3BlbmRpbmdSZXF1ZXN0
czsKKyAgICAgICAgICAgICAgICByZXF1ZXN0c1tpXS5yZXF1ZXN0Q29udGVudCh0aGlzLl9vbkNv
bnRlbnRBdmFpbGFibGUuYmluZCh0aGlzLCBlbnRyaWVzW2ldKSk7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKGNvbnRlbnQgIT09IG51bGwpCisgICAgICAgICAgICAgICAgZW50cmllc1tpXS5yZXNw
b25zZS5jb250ZW50LnRleHQgPSBjb250ZW50OworICAgICAgICB9CisgICAgICAgIHZhciBjb21w
b3NpdGVQcm9ncmVzcyA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcG9zaXRlUHJvZ3Jlc3MocHJvZ3Jl
c3MpOworICAgICAgICB0aGlzLl93cml0ZVByb2dyZXNzID0gY29tcG9zaXRlUHJvZ3Jlc3MuY3Jl
YXRlU3ViUHJvZ3Jlc3MoKTsKKyAgICAgICAgaWYgKC0tdGhpcy5fcGVuZGluZ1JlcXVlc3RzKSB7
CisgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0c1Byb2dyZXNzID0gY29tcG9zaXRlUHJvZ3Jlc3Mu
Y3JlYXRlU3ViUHJvZ3Jlc3MoKTsKKyAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RzUHJvZ3Jlc3Mu
c2V0VGl0bGUoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xsZWN0aW5nIGNvbnRlbnTigKYiKSk7
CisgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0c1Byb2dyZXNzLnNldFRvdGFsV29yayh0aGlzLl9w
ZW5kaW5nUmVxdWVzdHMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2JlZ2lu
V3JpdGUoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtPYmplY3R9IGVudHJ5
CisgICAgICogQHBhcmFtIHtzdHJpbmd8bnVsbH0gY29udGVudAorICAgICAqIEBwYXJhbSB7Ym9v
bGVhbn0gY29udGVudEVuY29kZWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IG1pbWVUeXBlCisg
ICAgICovCisgICAgX29uQ29udGVudEF2YWlsYWJsZTogZnVuY3Rpb24oZW50cnksIGNvbnRlbnQs
IGNvbnRlbnRFbmNvZGVkLCBtaW1lVHlwZSkKKyAgICB7CisgICAgICAgIGlmIChjb250ZW50ICE9
PSBudWxsKQorICAgICAgICAgICAgZW50cnkucmVzcG9uc2UuY29udGVudC50ZXh0ID0gY29udGVu
dDsKKyAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3RzUHJvZ3Jlc3MpCisgICAgICAgICAgICB0aGlz
Ll9yZXF1ZXN0c1Byb2dyZXNzLndvcmtlZCgpOworICAgICAgICBpZiAoIS0tdGhpcy5fcGVuZGlu
Z1JlcXVlc3RzKSB7CisgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0c1Byb2dyZXNzLmRvbmUoKTsK
KyAgICAgICAgICAgIHRoaXMuX2JlZ2luV3JpdGUoKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAg
ICBfYmVnaW5Xcml0ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgY29uc3QganNvbkluZGVu
dCA9IDI7CisgICAgICAgIHRoaXMuX3RleHQgPSBKU09OLnN0cmluZ2lmeSh7bG9nOiB0aGlzLl9o
YXJMb2d9LCBudWxsLCBqc29uSW5kZW50KTsKKyAgICAgICAgdGhpcy5fd3JpdGVQcm9ncmVzcy5z
ZXRUaXRsZShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldyaXRpbmcgZmlsZeKApiIpKTsKKyAgICAg
ICAgdGhpcy5fd3JpdGVQcm9ncmVzcy5zZXRUb3RhbFdvcmsodGhpcy5fdGV4dC5sZW5ndGgpOwor
ICAgICAgICB0aGlzLl9ieXRlc1dyaXR0ZW4gPSAwOworICAgICAgICB0aGlzLl93cml0ZU5leHRD
aHVuayh0aGlzLl9zdHJlYW0pOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5PdXRwdXRTdHJlYW19IHN0cmVhbQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBl
cnJvcgorICAgICAqLworICAgIF93cml0ZU5leHRDaHVuazogZnVuY3Rpb24oc3RyZWFtLCBlcnJv
cikKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9ieXRlc1dyaXR0ZW4gPj0gdGhpcy5fdGV4dC5s
ZW5ndGggfHwgZXJyb3IpIHsKKyAgICAgICAgICAgIHN0cmVhbS5jbG9zZSgpOworICAgICAgICAg
ICAgdGhpcy5fd3JpdGVQcm9ncmVzcy5kb25lKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgY29uc3QgY2h1bmtTaXplID0gMTAwMDAwOworICAgICAgICB2YXIgdGV4
dCA9IHRoaXMuX3RleHQuc3Vic3RyaW5nKHRoaXMuX2J5dGVzV3JpdHRlbiwgdGhpcy5fYnl0ZXNX
cml0dGVuICsgY2h1bmtTaXplKTsKKyAgICAgICAgdGhpcy5fYnl0ZXNXcml0dGVuICs9IHRleHQu
bGVuZ3RoOworICAgICAgICBzdHJlYW0ud3JpdGUodGV4dCwgdGhpcy5fd3JpdGVOZXh0Q2h1bmsu
YmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3dyaXRlUHJvZ3Jlc3Muc2V0V29ya2VkKHRoaXMu
X2J5dGVzV3JpdHRlbik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwppbmRleCBjN2I5MDA2MzIxN2MwYmJiNDkwMTg4
YWM4NjJiODdmYjg0M2VkNDU3Li45MWU3YjFmYzliNmJkYjI0MmE3ZmY3YzMzMWJhOTBkZGYxMzY0
MzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdv
cmtQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdv
cmtQYW5lbC5qcwpAQCAtNjUsNyArNjUsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcg
PSBmdW5jdGlvbigpCiAgICAgdGhpcy5fY3VycmVudE1hdGNoZWRSZXF1ZXN0SW5kZXggPSAtMTsK
IAogICAgIHRoaXMuX2NyZWF0ZVN0YXR1c2JhckJ1dHRvbnMoKTsKLSAgICB0aGlzLl9jcmVhdGVG
aWx0ZXJTdGF0dXNCYXJJdGVtcygpOworICAgIHRoaXMuX2NyZWF0ZVN0YXR1c0Jhckl0ZW1zKCk7
CiAgICAgdGhpcy5fbGlua2lmaWVyID0gbmV3IFdlYkluc3BlY3Rvci5MaW5raWZpZXIoKTsKIAog
ICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrTWFuYWdlci5FdmVudFR5cGVzLlJlcXVlc3RTdGFydGVkLCB0aGlzLl9vblJl
cXVlc3RTdGFydGVkLCB0aGlzKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBXZWJJbnNwZWN0b3IuTmV0
d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogCiAgICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBbdGhpcy5fbGFyZ2VyUmVxdWVzdHNCdXR0b24uZWxlbWVudCwg
dGhpcy5fcHJlc2VydmVMb2dUb2dnbGUuZWxlbWVudCwgdGhpcy5fY2xlYXJCdXR0b24uZWxlbWVu
dCwgdGhpcy5fZmlsdGVyQmFyRWxlbWVudF07CisgICAgICAgIHJldHVybiBbdGhpcy5fbGFyZ2Vy
UmVxdWVzdHNCdXR0b24uZWxlbWVudCwgdGhpcy5fcHJlc2VydmVMb2dUb2dnbGUuZWxlbWVudCwg
dGhpcy5fY2xlYXJCdXR0b24uZWxlbWVudCwgdGhpcy5fZmlsdGVyQmFyRWxlbWVudCwgdGhpcy5f
cHJvZ3Jlc3NCYXJDb250YWluZXJdOwogICAgIH0sCiAKICAgICBnZXQgdXNlTGFyZ2VSb3dzKCkK
QEAgLTMyNSw3ICszMjUsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl91cGRhdGVPZmZzY3JlZW5Sb3dzKCk7CiAgICAgfSwKIAotICAg
IF9jcmVhdGVGaWx0ZXJTdGF0dXNCYXJJdGVtczogZnVuY3Rpb24oKQorICAgIF9jcmVhdGVTdGF0
dXNCYXJJdGVtczogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIGZpbHRlckJhckVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgZmlsdGVyQmFyRWxl
bWVudC5jbGFzc05hbWUgPSAic2NvcGUtYmFyIHN0YXR1cy1iYXItaXRlbSI7CkBAIC0zNTgsNiAr
MzU4LDggQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIGNyZWF0ZUZpbHRlckVsZW1lbnQuY2FsbCh0aGlzLCB0eXBlLm5hbWUoKSwgdHlwZS5j
YXRlZ29yeVRpdGxlKCkpOwogICAgICAgICB9CiAgICAgICAgIHRoaXMuX2ZpbHRlckJhckVsZW1l
bnQgPSBmaWx0ZXJCYXJFbGVtZW50OworICAgICAgICB0aGlzLl9wcm9ncmVzc0JhckNvbnRhaW5l
ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9wcm9ncmVz
c0JhckNvbnRhaW5lci5jbGFzc05hbWUgPSAic3RhdHVzLWJhci1pdGVtIjsKICAgICB9LAogCiAg
ICAgX2NyZWF0ZVN1bW1hcnlCYXI6IGZ1bmN0aW9uKCkKQEAgLTk0NCwxNSArOTQ2LDEyIEBAIFdl
Ykluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9y
LnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/ICJDb3B5IHJlcXVlc3QgaGVhZGVycyIgOiAiQ29w
eSBSZXF1ZXN0IEhlYWRlcnMiKSwgdGhpcy5fY29weVJlcXVlc3RIZWFkZXJzLmJpbmQodGhpcywg
cmVxdWVzdCkpOwogICAgICAgICAgICAgaWYgKHJlcXVlc3QucmVzcG9uc2VIZWFkZXJzVGV4dCkK
ICAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0
cmluZyhXZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNlTWVudVRpdGxlcygpID8gIkNvcHkgcmVzcG9u
c2UgaGVhZGVycyIgOiAiQ29weSBSZXNwb25zZSBIZWFkZXJzIiksIHRoaXMuX2NvcHlSZXNwb25z
ZUhlYWRlcnMuYmluZCh0aGlzLCByZXF1ZXN0KSk7Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNl
TWVudVRpdGxlcygpID8gIkNvcHkgZW50cnkgYXMgSEFSIiA6ICJDb3B5IEVudHJ5IGFzIEhBUiIp
LCB0aGlzLl9jb3B5UmVxdWVzdC5iaW5kKHRoaXMsIHJlcXVlc3QpKTsKICAgICAgICAgfQogICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNw
ZWN0b3IudXNlTG93ZXJDYXNlTWVudVRpdGxlcygpID8gIkNvcHkgYWxsIGFzIEhBUiIgOiAiQ29w
eSBBbGwgYXMgSEFSIiksIHRoaXMuX2NvcHlBbGwuYmluZCh0aGlzKSk7CiAKICAgICAgICAgaWYg
KEluc3BlY3RvckZyb250ZW5kSG9zdC5jYW5TYXZlKCkpIHsKICAgICAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZFNlcGFyYXRvcigpOwotICAgICAgICAgICAgaWYgKHJlcXVlc3QpCi0gICAgICAg
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2Vi
SW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/ICJTYXZlIGVudHJ5IGFzIEhBUiIg
OiAiU2F2ZSBFbnRyeSBhcyBIQVIiKSwgdGhpcy5fZXhwb3J0UmVxdWVzdC5iaW5kKHRoaXMsIHJl
cXVlc3QpKTsKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiU2F2ZSBh
bGwgYXMgSEFSIiA6ICJTYXZlIEFsbCBhcyBIQVIiKSwgdGhpcy5fZXhwb3J0QWxsLmJpbmQodGhp
cykpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/ICJTYXZlIHdpdGgg
Y29udGVudCBhcyBIQVIiIDogIlNhdmUgd2l0aCBDb250ZW50IGFzIEhBUiIpLCB0aGlzLl9leHBv
cnRBbGwuYmluZCh0aGlzKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodGhpcy5fY2FuQ2xl
YXJCcm93c2VyQ2FjaGUgfHwgdGhpcy5fY2FuQ2xlYXJCcm93c2VyQ29va2llcykKQEAgLTk2Myw3
ICs5NjIsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2Vi
SW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/ICJDbGVhciBicm93c2VyIGNvb2tp
ZXMiIDogIkNsZWFyIEJyb3dzZXIgQ29va2llcyIpLCB0aGlzLl9jbGVhckJyb3dzZXJDb29raWVz
LmJpbmQodGhpcykpOwogCiAKLSAgICAgICAgaWYgKHJlcXVlc3QudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLnJlc291cmNlVHlwZXMuWEhSKSB7CisgICAgICAgIGlmIChyZXF1ZXN0ICYmIHJlcXVlc3Qu
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuWEhSKSB7CiAgICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXBsYXkgWEhSIiksIHRoaXMuX3JlcGxh
eVhIUi5iaW5kKHRoaXMsIHJlcXVlc3QucmVxdWVzdElkKSk7CiAgICAgICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKQEAgLTk4NiwxMiArOTg1LDYgQEAgV2ViSW5zcGVjdG9y
Lk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmNvcHlUZXh0KEpTT04uc3RyaW5naWZ5KGhhckFyY2hpdmUsIG51bGwsIDIpKTsKICAgICB9
LAogCi0gICAgX2NvcHlSZXF1ZXN0OiBmdW5jdGlvbihyZXF1ZXN0KQotICAgIHsKLSAgICAgICAg
dmFyIGhhciA9IChuZXcgV2ViSW5zcGVjdG9yLkhBUkVudHJ5KHJlcXVlc3QpKS5idWlsZCgpOwot
ICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY29weVRleHQoSlNPTi5zdHJpbmdpZnkoaGFy
LCBudWxsLCAyKSk7Ci0gICAgfSwKLQogICAgIF9jb3B5TG9jYXRpb246IGZ1bmN0aW9uKHJlcXVl
c3QpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY29weVRleHQocmVxdWVz
dC51cmwpOwpAQCAtMTAwOSwxNyArMTAwMiwxNiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1Zp
ZXcucHJvdG90eXBlID0gewogCiAgICAgX2V4cG9ydEFsbDogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgdmFyIGhhckFyY2hpdmUgPSB7Ci0gICAgICAgICAgICBsb2c6IChuZXcgV2ViSW5zcGVj
dG9yLkhBUkxvZyh0aGlzLl9yZXF1ZXN0cykpLmJ1aWxkKCkKLSAgICAgICAgfTsKLSAgICAgICAg
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5zYXZlKFdlYkluc3BlY3Rvci5pbnNw
ZWN0ZWRQYWdlRG9tYWluICsgIi5oYXIiLCBKU09OLnN0cmluZ2lmeShoYXJBcmNoaXZlLCBudWxs
LCAyKSwgdHJ1ZSk7Ci0gICAgfSwKLQotICAgIF9leHBvcnRSZXF1ZXN0OiBmdW5jdGlvbihyZXF1
ZXN0KQotICAgIHsKLSAgICAgICAgdmFyIGhhciA9IChuZXcgV2ViSW5zcGVjdG9yLkhBUkVudHJ5
KHJlcXVlc3QpKS5idWlsZCgpOwotICAgICAgICBXZWJJbnNwZWN0b3IuZmlsZU1hbmFnZXIuc2F2
ZShyZXF1ZXN0LmRpc3BsYXlOYW1lICsgIi5oYXIiLCBKU09OLnN0cmluZ2lmeShoYXIsIG51bGws
IDIpLCB0cnVlKTsKKyAgICAgICAgdmFyIGZpbGVuYW1lID0gV2ViSW5zcGVjdG9yLmluc3BlY3Rl
ZFBhZ2VEb21haW4gKyAiLmhhciI7CisgICAgICAgIHZhciBzdHJlYW0gPSBuZXcgV2ViSW5zcGVj
dG9yLkZpbGVPdXRwdXRTdHJlYW0oKTsKKyAgICAgICAgc3RyZWFtLm9wZW4oZmlsZW5hbWUsIG9w
ZW5DYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgZnVuY3Rpb24gb3BlbkNhbGxiYWNrKCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHByb2dyZXNzSW5kaWNhdG9yID0gbmV3IFdlYklu
c3BlY3Rvci5Qcm9ncmVzc0luZGljYXRvcigpOworICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3NC
YXJDb250YWluZXIuYXBwZW5kQ2hpbGQocHJvZ3Jlc3NJbmRpY2F0b3IuZWxlbWVudCk7CisgICAg
ICAgICAgICB2YXIgaGFyV3JpdGVyID0gbmV3IFdlYkluc3BlY3Rvci5IQVJXcml0ZXIoKTsKKyAg
ICAgICAgICAgIGhhcldyaXRlci53cml0ZShzdHJlYW0sIHRoaXMuX3JlcXVlc3RzLCBwcm9ncmVz
c0luZGljYXRvcik7CisgICAgICAgIH0KICAgICB9LAogCiAgICAgX2NsZWFyQnJvd3NlckNhY2hl
OiBmdW5jdGlvbihldmVudCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlMmFmMDQzN2QzYjIxYzcwMDMyOTA0OWFkZWY4NTU3
ZTViNzAwMmY0Li4zNjMxNDk5YzM5Nzg2ZDRmMzQ0MjA0MWJlNzVkYzYwYTVlMTZlNmMwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzQgQEAKKzIwMTItMDktMjEgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IHNhdmluZyBIQVIg
d2l0aCByZXNvdXJjZXMgY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTczNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAtIG1vdmVkIFN0cmluZ091dHB1dFN0cmVhbSB0byBpbnNwZWN0b3ItdGVz
dC5qcyBmb3IgcmV1c2U7CisgICAgICAgIC0gYWRkZWQgdGVzdCBmb3IgSEFSV3JpdGVyIGFuZCBy
ZXNwb25zZSBjb250ZW50IGluIEhBUi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0KToK
KyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC4pOgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmstdGVzdC5qczogbW92ZWQgaW5zcGVjdGVkIHBhZ2UgZnVuY3Rp
b25zIHRoYXQgZ2VuZXJhdGUgY29uc29sZSBvdXRwdXQgdG8gdGhlIHRvcCwKKyAgICAgICAgICAg
IHNvIHRoYXQgbGluZSBudW1iZXJzIGRvIG5vdCBjaGFuZ2Ugd2hlbiBhZGRpbmcgbW9yZSBzdHVm
ZiB0byBpbml0aWFsaXplXygpIGZ1bmN0aW9uLgorICAgICAgICAobWFrZVNpbXBsZVhIUik6Cisg
ICAgICAgIChtYWtlU2ltcGxlWEhSV2l0aFBheWxvYWQpOgorICAgICAgICAobWFrZVhIUi54aHIu
b25yZWFkeXN0YXRlY2hhbmdlKToKKyAgICAgICAgKG1ha2VYSFIpOgorICAgICAgICAobWFrZVhI
UkZvckpTT05Bcmd1bWVudHMpOgorICAgICAgICAocmVzZXRJbnNwZWN0b3JSZXNvdXJjZXNEYXRh
KToKKyAgICAgICAgKGluaXRpYWxpemVfTmV0d29ya1Rlc3QuSW5zcGVjdG9yVGVzdC5maW5kUmVx
dWVzdCk6CisgICAgICAgIChpbml0aWFsaXplX05ldHdvcmtUZXN0Lkluc3BlY3RvclRlc3QucnVu
QWZ0ZXJSZXF1ZXN0RmluaXNoZWQuY2FsbGJhY2tXcmFwcGVyKToKKyAgICAgICAgKGluaXRpYWxp
emVfTmV0d29ya1Rlc3QuSW5zcGVjdG9yVGVzdC5ydW5BZnRlclJlcXVlc3RGaW5pc2hlZCk6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9oYXItY29udGVudC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaGFy
LWNvbnRlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lL3RpbWVs
aW5lLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX1RpbWVsaW5lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5n
LWFzeW5jLWV4cGVjdGVkLnR4dDogcmViYXNlZCBkdWUgdG8gY2hhbmdlIGluIGxpbmUgbnVtYmVy
IGluIGNvbnNvbGVtIG1lc3NhZ2U7CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvY29uc29sZS14aHItbG9nZ2luZy1leHBlY3RlZC50eHQ6IGRpdHRvOwor
CiAyMDEyLTA5LTIxICBab2x0YW4gSGVyY3plZyAgPHpoZXJjemVnQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKaW5kZXggMTc3YTYxNjZjNzI3MTlm
YjgwMDQ2MGI5ZWE5MTA5NWE2ZjBhY2E4YS4uN2Q3MTQ5YzY2NDU4YjVjNjAzZTUxYjlhZWE3NDY5
OTk3NmIxNTc3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
aW5zcGVjdG9yLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
aW5zcGVjdG9yLXRlc3QuanMKQEAgLTM3Miw2ICszNzIsMjYgQEAgSW5zcGVjdG9yVGVzdC50ZXh0
Q29udGVudFdpdGhMaW5lQnJlYWtzID0gZnVuY3Rpb24obm9kZSkKICAgICByZXR1cm4gYnVmZmVy
OwogfQogCitJbnNwZWN0b3JUZXN0LlN0cmluZ091dHB1dFN0cmVhbSA9IGZ1bmN0aW9uKGNhbGxi
YWNrKQoreworICAgIHRoaXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgdGhpcy5fYnVmZmVy
ID0gIiI7Cit9OworCitJbnNwZWN0b3JUZXN0LlN0cmluZ091dHB1dFN0cmVhbS5wcm90b3R5cGUg
PSB7CisgICAgd3JpdGU6IGZ1bmN0aW9uKGNodW5rLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAg
IHRoaXMuX2J1ZmZlciArPSBjaHVuazsKKyAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAg
ICAgY2FsbGJhY2sodGhpcyk7CisgICAgfSwKKworICAgIGNsb3NlOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICB0aGlzLl9jYWxsYmFjayh0aGlzLl9idWZmZXIpOworICAgIH0KK307CisKIH07
CiAKIHZhciBpbml0aWFsaXplQ2FsbElkID0gMDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmstdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmstdGVzdC5qcwppbmRleCA2M2JjZTRjNjJkNzJiYTc5MDZmY2E2
MzdhZmU5NGMwZDI1M2RhNzA5Li45YzBkZDczZmI5MjRiMTlmMjg0NzgyMmFhMDdjNDgwNGZhMDMz
YTU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
LXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay10
ZXN0LmpzCkBAIC02LDYgKzYsNDggQEAgZnVuY3Rpb24geGhyTG9hZGVkQ2FsbGJhY2soKQogICAg
IGNvbnNvbGUubG9nKCJYSFIgbG9hZGVkOiAiICsgKCsrbGFzdFhIUkluZGV4KSk7CiB9CiAKK2Z1
bmN0aW9uIG1ha2VTaW1wbGVYSFIobWV0aG9kLCB1cmwsIGFzeW5jLCBjYWxsYmFjaykKK3sKKyAg
ICBtYWtlU2ltcGxlWEhSV2l0aFBheWxvYWQobWV0aG9kLCB1cmwsIGFzeW5jLCBudWxsLCBjYWxs
YmFjayk7Cit9CisKK2Z1bmN0aW9uIG1ha2VTaW1wbGVYSFJXaXRoUGF5bG9hZChtZXRob2QsIHVy
bCwgYXN5bmMsIHBheWxvYWQsIGNhbGxiYWNrKQoreworICAgIG1ha2VYSFIobWV0aG9kLCB1cmws
IGFzeW5jLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgW10sIGZhbHNlLCBwYXlsb2FkLCBjYWxsYmFj
aykKK30KKworZnVuY3Rpb24gbWFrZVhIUihtZXRob2QsIHVybCwgYXN5bmMsIHVzZXIsIHBhc3N3
b3JkLCBoZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHMsIHBheWxvYWQsIGNhbGxiYWNrKQoreworICAg
IHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICB4aHIub25yZWFkeXN0YXRlY2hh
bmdlID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSBY
TUxIdHRwUmVxdWVzdC5ET05FKSB7CisgICAgICAgICAgICBpZiAodHlwZW9mKGNhbGxiYWNrKSA9
PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9Cisg
ICAgfQorICAgIHhoci5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgcGFzc3dvcmQpOwor
ICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB3aXRoQ3JlZGVudGlhbHM7CisgICAgZm9yICh2YXIg
IGkgPSAwOyBpIDwgaGVhZGVycy5sZW5ndGg7ICsraSkKKyAgICAgICAgeGhyLnNldFJlcXVlc3RI
ZWFkZXIoaGVhZGVyc1tpXVswXSwgaGVhZGVyc1tpXVsxXSk7CisgICAgeGhyLnNlbmQocGF5bG9h
ZCk7Cit9CisKK2Z1bmN0aW9uIG1ha2VYSFJGb3JKU09OQXJndW1lbnRzKGpzb25BcmdzKQorewor
ICAgIHZhciBhcmdzID0gSlNPTi5wYXJzZShqc29uQXJncyk7CisgICAgbWFrZVhIUihhcmdzLm1l
dGhvZCwgYXJncy51cmwsIGFyZ3MuYXN5bmMsIGFyZ3MudXNlciwgYXJncy5wYXNzd29yZCwgYXJn
cy5oZWFkZXJzLCBhcmdzLndpdGhDcmVkZW50aWFscywgYXJncy5wYXlsb2FkLCB4aHJMb2FkZWRD
YWxsYmFjayk7Cit9CisKK2Z1bmN0aW9uIHJlc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YSgpCit7
CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YVNpemVMaW1pdHMo
MTAgKiAxMDAwICogMTAwMCwgMTAwMCAqIDEwMDApOworICAgIHJldHVybiB0cnVlOworfQorCiB2
YXIgaW5pdGlhbGl6ZV9OZXR3b3JrVGVzdCA9IGZ1bmN0aW9uKCkgewogCiBJbnNwZWN0b3JUZXN0
LmR1bXBOZXR3b3JrUmVxdWVzdHMgPSBmdW5jdGlvbigpCkBAIC02Niw0OCArMTA4LDMzIEBAIElu
c3BlY3RvclRlc3QubWFrZVhIUiA9IGZ1bmN0aW9uKG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwg
cGFzc3dvcmQsIGhlYWRlcnMsIHdpCiAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgi
bWFrZVhIUkZvckpTT05Bcmd1bWVudHMoXCIiICsganNvbkFyZ3MgKyAiXCIpIik7CiB9CiAKLX07
Ci0KLWZ1bmN0aW9uIG1ha2VTaW1wbGVYSFIobWV0aG9kLCB1cmwsIGFzeW5jLCBjYWxsYmFjaykK
K0luc3BlY3RvclRlc3QuZmluZFJlcXVlc3QgPSBmdW5jdGlvbihyZWdleHApCiB7Ci0gICAgbWFr
ZVNpbXBsZVhIUldpdGhQYXlsb2FkKG1ldGhvZCwgdXJsLCBhc3luYywgbnVsbCwgY2FsbGJhY2sp
OwotfQotCi1mdW5jdGlvbiBtYWtlU2ltcGxlWEhSV2l0aFBheWxvYWQobWV0aG9kLCB1cmwsIGFz
eW5jLCBwYXlsb2FkLCBjYWxsYmFjaykKLXsKLSAgICBtYWtlWEhSKG1ldGhvZCwgdXJsLCBhc3lu
YywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFtdLCBmYWxzZSwgcGF5bG9hZCwgY2FsbGJhY2spCisg
ICAgdmFyIHJlcXVlc3RzID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtMb2cucmVxdWVzdHM7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCByZXF1ZXN0cy5sZW5ndGg7ICsraSkgeworICAgICAgICBpZiAo
cmVnZXhwLnRlc3QocmVxdWVzdHNbaV0udXJsKSkKKyAgICAgICAgICAgIHJldHVybiByZXF1ZXN0
c1tpXTsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7CiB9CiAKLWZ1bmN0aW9uIG1ha2VYSFIobWV0
aG9kLCB1cmwsIGFzeW5jLCB1c2VyLCBwYXNzd29yZCwgaGVhZGVycywgd2l0aENyZWRlbnRpYWxz
LCBwYXlsb2FkLCBjYWxsYmFjaykKK0luc3BlY3RvclRlc3QucnVuQWZ0ZXJSZXF1ZXN0RmluaXNo
ZWQgPSBmdW5jdGlvbihyZWdleHAsIGNhbGxiYWNrKQogewotICAgIHZhciB4aHIgPSBuZXcgWE1M
SHR0cFJlcXVlc3QoKTsKLSAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKQor
ICAgIHZhciByZXF1ZXN0ID0gSW5zcGVjdG9yVGVzdC5maW5kUmVxdWVzdChyZWdleHApOworICAg
IGlmICghcmVxdWVzdCkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRkFJTDog
dW5hYmxlIHRvIGZpbmQgcmVxdWVzdCBtYXRjaGluZyAiICsgcmVnZXhwKTsKKyAgICAgICAgY2Fs
bGJhY2soKTsKKyAgICB9CisgICAgaWYgKHJlcXVlc3QuZmluaXNoZWQpIHsKKyAgICAgICAgY2Fs
bGJhY2socmVxdWVzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZnVuY3Rpb24gY2Fs
bGJhY2tXcmFwcGVyKCkKICAgICB7Ci0gICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gWE1M
SHR0cFJlcXVlc3QuRE9ORSkgewotICAgICAgICAgICAgaWYgKHR5cGVvZihjYWxsYmFjaykgPT09
ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgfQorICAg
ICAgICByZXF1ZXN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1
ZXN0LkV2ZW50cy5GaW5pc2hlZExvYWRpbmcsIGNhbGxiYWNrV3JhcHBlcik7CisgICAgICAgIGNh
bGxiYWNrKCk7CiAgICAgfQotICAgIHhoci5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwg
cGFzc3dvcmQpOwotICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB3aXRoQ3JlZGVudGlhbHM7Ci0g
ICAgZm9yICh2YXIgIGkgPSAwOyBpIDwgaGVhZGVycy5sZW5ndGg7ICsraSkKLSAgICAgICAgeGhy
LnNldFJlcXVlc3RIZWFkZXIoaGVhZGVyc1tpXVswXSwgaGVhZGVyc1tpXVsxXSk7Ci0gICAgeGhy
LnNlbmQocGF5bG9hZCk7Ci19Ci0KLWZ1bmN0aW9uIG1ha2VYSFJGb3JKU09OQXJndW1lbnRzKGpz
b25BcmdzKQotewotICAgIHZhciBhcmdzID0gSlNPTi5wYXJzZShqc29uQXJncyk7Ci0gICAgbWFr
ZVhIUihhcmdzLm1ldGhvZCwgYXJncy51cmwsIGFyZ3MuYXN5bmMsIGFyZ3MudXNlciwgYXJncy5w
YXNzd29yZCwgYXJncy5oZWFkZXJzLCBhcmdzLndpdGhDcmVkZW50aWFscywgYXJncy5wYXlsb2Fk
LCB4aHJMb2FkZWRDYWxsYmFjayk7Ci19Ci0KLQotZnVuY3Rpb24gcmVzZXRJbnNwZWN0b3JSZXNv
dXJjZXNEYXRhKCkKLXsKLSAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRJbnNwZWN0b3JSZXNvdXJjZXNE
YXRhU2l6ZUxpbWl0cygxMCAqIDEwMDAgKiAxMDAwLCAxMDAwICogMTAwMCk7Ci0gICAgcmV0dXJu
IHRydWU7CisgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3b3Jr
UmVxdWVzdC5FdmVudHMuRmluaXNoZWRMb2FkaW5nLCBjYWxsYmFja1dyYXBwZXIpOwogfQogCit9
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9o
YXItY29udGVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2hhci1jb250ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMThlNjBjMjQ0
NzBjNjhlYjYzMTY3YzcwOWRhNjE2YWQ3MDljMTY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9oYXItY29udGVudC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY6IFhIUiBsb2FkZWQ6
IDEKK1Rlc3RzIGNvbnZlcnNpb24gb2YgSW5zcGVjdG9yJ3MgcmVzb3VyY2UgcmVwcmVzZW50YXRp
b24gaW50byBIQVIgZm9ybWF0LgorCitpbml0aWF0b3IuY3NzOiAuaW1hZ2UtYmFja2dyb3VuZCB7
CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJyZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZyYW5k
b209MSZzaXplPTIwMCIpOworfQorCisuaW1hZ2UtYmFja2dyb3VuZC0yIHsKKyAgICBiYWNrZ3Jv
dW5kLWltYWdlOiB1cmwoInJlc291cmNlLnBocD90eXBlPWltYWdlJnJhbmRvbT0xJnNpemU9MzAw
Iik7Cit9CisKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2hhci1jb250ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2hhci1jb250ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRiNTY4NzJmNjZlOWY0
MThhZTE4MjlkYmQ1NjQ3MjgzNWY1NjU1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaGFyLWNvbnRlbnQuaHRtbApAQCAtMCwwICsx
LDU2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
aW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL25ldHdvcmstdGVz
dC5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+Cit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKK3sKKyAg
ICBjb25zdCByZXF1ZXN0UmVnRXhwID0gL1wvaW5pdGlhdG9yLmNzcyQvOworCisgICAgZnVuY3Rp
b24gb25SZXF1ZXN0U3RhcnRlZCgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFm
dGVyUmVxdWVzdEZpbmlzaGVkKHJlcXVlc3RSZWdFeHAsIG9uUmVxdWVzdEZpbmlzaGVkKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBvblJlcXVlc3RGaW5pc2hlZCgpCisgICAgeworICAgICAgICB2
YXIgd3JpdGVyID0gbmV3IFdlYkluc3BlY3Rvci5IQVJXcml0ZXIoKTsKKyAgICAgICAgdmFyIHN0
cmVhbSA9IG5ldyBJbnNwZWN0b3JUZXN0LlN0cmluZ091dHB1dFN0cmVhbShvblNhdmVkKTsKKyAg
ICAgICAgd3JpdGVyLndyaXRlKHN0cmVhbSwgV2ViSW5zcGVjdG9yLm5ldHdvcmtMb2cucmVxdWVz
dHMsIG5ldyBXZWJJbnNwZWN0b3IuUHJvZ3Jlc3MoKSk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
b25TYXZlZChkYXRhKQorICAgIHsKKyAgICAgICAgdmFyIGhhciA9IEpTT04ucGFyc2UoZGF0YSk7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJpbml0aWF0b3IuY3NzOiAiICsgZmlu
ZEVudHJ5KGhhciwgcmVxdWVzdFJlZ0V4cCkucmVzcG9uc2UuY29udGVudC50ZXh0KTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBm
aW5kRW50cnkoaGFyLCByZWdleHApCisgICAgeworICAgICAgICB2YXIgZW50cmllcyA9IGhhci5s
b2cuZW50cmllczsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpXTsKKyAgICAgICAgICAg
ICBpZiAocmVnZXhwLnRlc3QoZW50cnkucmVxdWVzdC51cmwpKQorICAgICAgICAgICAgICAgICBy
ZXR1cm4gZW50cnk7CisgICAgICAgIH0KKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IkZBSUw6IGNhbid0IGZpbmQgcmVzb3VyY2UgZm9yICIgKyByZWdleHApOworICAgICAgICByZXR1
cm4gbnVsbDsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0Lm1ha2VTaW1wbGVYSFIoIkdFVCIs
ICJyZXNvdXJjZXMvaW5pdGlhdG9yLmNzcyIsIGZhbHNlLCBvblJlcXVlc3RTdGFydGVkKTsKK30K
Kzwvc2NyaXB0PgorCisKKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+
CitUZXN0cyBjb252ZXJzaW9uIG9mIEluc3BlY3RvcidzIHJlc291cmNlIHJlcHJlc2VudGF0aW9u
IGludG8gSEFSIGZvcm1hdC4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL3RpbWVsaW5lLXRlc3QuanMgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvdGltZWxpbmUtdGVzdC5qcwppbmRleCBiMWY3ZWYwMGRm
ZDg2ODRmZWNmMTI1M2RlZmE2NjE2YmQwYzRmMDI5Li40ZDY5MzAxOTEwYjliNjVlMDU5NDEzNTIw
YjZlZmIxYTQzNWI3ZTQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxp
bmUvdGltZWxpbmUtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUv
dGltZWxpbmUtdGVzdC5qcwpAQCAtMjA3LDI0ICsyMDcsNCBAQCBJbnNwZWN0b3JUZXN0LkZha2VG
aWxlUmVhZGVyLnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1JbnNwZWN0b3JUZXN0LlN0cmlu
Z091dHB1dFN0cmVhbSA9IGZ1bmN0aW9uKGNhbGxiYWNrKQotewotICAgIHRoaXMuX2NhbGxiYWNr
ID0gY2FsbGJhY2s7Ci0gICAgdGhpcy5fYnVmZmVyID0gIiI7Ci19OwotCi1JbnNwZWN0b3JUZXN0
LlN0cmluZ091dHB1dFN0cmVhbS5wcm90b3R5cGUgPSB7Ci0gICAgd3JpdGU6IGZ1bmN0aW9uKGNo
dW5rLCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHRoaXMuX2J1ZmZlciArPSBjaHVuazsKLSAg
ICAgICAgaWYgKGNhbGxiYWNrKQotICAgICAgICAgICAgY2FsbGJhY2sodGhpcyk7Ci0gICAgfSwK
LQotICAgIGNsb3NlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9jYWxsYmFjayh0
aGlzLl9idWZmZXIpOwotICAgIH0KLX07Ci0KIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5n
LWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUteGhyLWxvZ2dpbmctYXN5bmMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGZkZGY2MWNkODgyNTQxYTQyN2NhZGMwNTVjYTJlNmFmMDllY2Q0ZDMuLmE0NTVkOTk1OTg1
YTZmZjNiOWQxOTQzYTRhZjY0YTBhNWM5NGM5ZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUteGhyLWxvZ2dpbmct
YXN5bmMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUteGhyLWxvZ2dpbmctYXN5bmMtZXhwZWN0ZWQudHh0
CkBAIC0zLDcgKzMsNyBAQCBDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjogWEhSIGxvYWRlZDogMgog
VGVzdHMgdGhhdCBYTUxIdHRwUmVxdWVzdCBMb2dnaW5nIHdvcmtzIHdoZW4gRW5hYmxlZCBhbmQg
ZG9lc24ndCBzaG93IGxvZ3Mgd2hlbiBEaXNhYmxlZCBmb3IgYXN5bmNocm9ub3VzIFhIUnMuCiAK
IEJ1ZyA3OTIyOQotWEhSIGZpbmlzaGVkIGxvYWRpbmc6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aW5zcGVjdG9yL3Jlc291cmNlcy94aHItZXhpc3RzLmh0bWwiLiBuZXR3b3JrLXRlc3QuanM6OTUK
K1hIUiBmaW5pc2hlZCBsb2FkaW5nOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9y
ZXNvdXJjZXMveGhyLWV4aXN0cy5odG1sIi4gbmV0d29yay10ZXN0LmpzOjMzCiBYSFIgbG9hZGVk
OiAxIG5ldHdvcmstdGVzdC5qczo2CiBYSFIgbG9hZGVkOiAyIG5ldHdvcmstdGVzdC5qczo2CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2NvbnNvbGUteGhyLWxvZ2dpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS14aHItbG9nZ2luZy1l
eHBlY3RlZC50eHQKaW5kZXggOTc0ZTk0NGY5N2QzMmJhYzY5MjQ4ZmFjM2NjYjRkM2E1ZDJlM2I2
My4uM2Y5N2EzMGZjYzk1ODQzOThmYzFjMjFiZjJkMGZlOTNjMjhmMmFhOCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29s
ZS14aHItbG9nZ2luZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS14aHItbG9nZ2luZy1leHBlY3RlZC50
eHQKQEAgLTExLDE3ICsxMSwxNyBAQCBDT05TT0xFIE1FU1NBR0U6IFhNTEh0dHBSZXF1ZXN0IGNh
bm5vdCBsb2FkIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3IvcmVzbwogVGVzdHMgdGhh
dCBYTUxIdHRwUmVxdWVzdCBMb2dnaW5nIHdvcmtzIHdoZW4gRW5hYmxlZCBhbmQgZG9lc24ndCBz
aG93IGxvZ3Mgd2hlbiBEaXNhYmxlZC4KIAogc2VuZGluZyBhIEdFVCByZXF1ZXN0IHRvIHJlc291
cmNlcy94aHItZXhpc3RzLmh0bWwgY29uc29sZS14aHItbG9nZ2luZy5odG1sOjEwCi1YSFIgZmlu
aXNoZWQgbG9hZGluZzogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2Vz
L3hoci1leGlzdHMuaHRtbCIuIG5ldHdvcmstdGVzdC5qczo5NQorWEhSIGZpbmlzaGVkIGxvYWRp
bmc6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy94aHItZXhpc3Rz
Lmh0bWwiLiBuZXR3b3JrLXRlc3QuanM6MzMKIHNlbmRpbmcgYSBHRVQgcmVxdWVzdCB0byByZXNv
dXJjZXMveGhyLWRvZXMtbm90LWV4aXN0Lmh0bWwgY29uc29sZS14aHItbG9nZ2luZy5odG1sOjEw
Ci1HRVQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMveGhyLWRvZXMt
bm90LWV4aXN0Lmh0bWwgNDA0IChOb3QgRm91bmQpIG5ldHdvcmstdGVzdC5qczo5NQotWEhSIGZp
bmlzaGVkIGxvYWRpbmc6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNl
cy94aHItZG9lcy1ub3QtZXhpc3QuaHRtbCIuIG5ldHdvcmstdGVzdC5qczo5NQorR0VUIGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3hoci1kb2VzLW5vdC1leGlzdC5o
dG1sIDQwNCAoTm90IEZvdW5kKSBuZXR3b3JrLXRlc3QuanM6MzMKK1hIUiBmaW5pc2hlZCBsb2Fk
aW5nOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMveGhyLWRvZXMt
bm90LWV4aXN0Lmh0bWwiLiBuZXR3b3JrLXRlc3QuanM6MzMKIHNlbmRpbmcgYSBQT1NUIHJlcXVl
c3QgdG8gcmVzb3VyY2VzL3Bvc3QtdGFyZ2V0LmNnaSBjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6
MTAKLVhIUiBmaW5pc2hlZCBsb2FkaW5nOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rv
ci9yZXNvdXJjZXMvcG9zdC10YXJnZXQuY2dpIi4gbmV0d29yay10ZXN0LmpzOjk1CitYSFIgZmlu
aXNoZWQgbG9hZGluZzogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2Vz
L3Bvc3QtdGFyZ2V0LmNnaSIuIG5ldHdvcmstdGVzdC5qczozMwogc2VuZGluZyBhIEdFVCByZXF1
ZXN0IHRvIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3hoci1leGlz
dHMuaHRtbCBjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6MTAKIFhNTEh0dHBSZXF1ZXN0IGNhbm5v
dCBsb2FkIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3hoci1leGlz
dHMuaHRtbC4gT3JpZ2luIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMCBpcyBub3QgYWxsb3dlZCBieSBB
Y2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4uCiBzZW5kaW5nIGEgR0VUIHJlcXVlc3QgdG8gcmVz
b3VyY2VzL3hoci1leGlzdHMuaHRtbCBjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6MTAKIHNlbmRp
bmcgYSBHRVQgcmVxdWVzdCB0byByZXNvdXJjZXMveGhyLWRvZXMtbm90LWV4aXN0Lmh0bWwgY29u
c29sZS14aHItbG9nZ2luZy5odG1sOjEwCi1HRVQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3Bl
Y3Rvci9yZXNvdXJjZXMveGhyLWRvZXMtbm90LWV4aXN0Lmh0bWwgNDA0IChOb3QgRm91bmQpIG5l
dHdvcmstdGVzdC5qczo5NQorR0VUIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVz
b3VyY2VzL3hoci1kb2VzLW5vdC1leGlzdC5odG1sIDQwNCAoTm90IEZvdW5kKSBuZXR3b3JrLXRl
c3QuanM6MzMKIHNlbmRpbmcgYSBQT1NUIHJlcXVlc3QgdG8gcmVzb3VyY2VzL3Bvc3QtdGFyZ2V0
LmNnaSBjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6MTAKIHNlbmRpbmcgYSBHRVQgcmVxdWVzdCB0
byBodHRwOi8vbG9jYWxob3N0OjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy94aHItZXhpc3RzLmh0
bWwgY29uc29sZS14aHItbG9nZ2luZy5odG1sOjEwCiBYTUxIdHRwUmVxdWVzdCBjYW5ub3QgbG9h
ZCBodHRwOi8vbG9jYWxob3N0OjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy94aHItZXhpc3RzLmh0
bWwuIE9yaWdpbiBodHRwOi8vMTI3LjAuMC4xOjgwMDAgaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNz
LUNvbnRyb2wtQWxsb3ctT3JpZ2luLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165323</attachid>
            <date>2012-09-24 00:44:16 -0700</date>
            <delta_ts>2012-09-24 01:55:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97341-20120924114337.patch</filename>
            <type>text/plain</type>
            <size>19730</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTMyNTdjMDJmZmZkODAw
MTUxOTA1MTQ3OWNiNmFjMWJkYTM0ZGNhMC4uM2NiNWVhZTlhODY0MjQ1MWQ3Zjg1YmRjNWRjZGE0
YjE1N2NkNzE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA5LTIxICBBbmRy
ZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogc3VwcG9ydCBzYXZpbmcgSEFSIHdpdGggcmVzb3VyY2VzIGNvbnRlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MzQxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBhZGQgV2ViSW5zcGVjdG9yLkhB
UldyaXRlciB0aGF0IHdyaXRlcyBIQVIgd2l0aCBjb250ZW50IHRvIGEgc3RyZWFtOworICAgICAg
ICAtIHJlcGxhY2UgU2F2ZSBhbGwgYXMgSEFSIHdpdGggU2F2ZSBhbGwgd2l0aCBDb250ZW50IGFz
IEhBUiBpbiBuZXR3b3JrJ3MgcGFuZWwgY29udGV4dCBtZW51OworICAgICAgICAtIHJlbW92ZSBl
bnRyaWVzIGZvciBjb3B5aW5nL3NhdmluZyBvZiBpbmRpdmlkdWFsIHJlcXVlc3QgaXRlbXMgdG8g
cmVkdWNlIGNsdXR0ZXIgaW4gY29udGV4dCBtZW51OworICAgICAgICAtIGEgZHJpdmUtYnkgZml4
IG9mIGFuIGV4Y2VwdGlvbiB3aGVuIGludm9raW5nIGNvbnRleHQgbWVudSBub3Qgb24gYSBuZXR3
b3JrIGl0ZW07CisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9o
YXItY29udGVudC5odG1sCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmlu
Z3MuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlVXRpbHMuanM6IAorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSEFSRW50cnkucHJvdG90eXBlLl9idWlsZFBvc3REYXRhKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IQVJMb2cucHJvdG90eXBlLmJ1aWxkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
QVJMb2cucHJvdG90eXBlLl9jcmVhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IQVJXcml0
ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhBUldyaXRlci5wcm90b3R5cGUud3JpdGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhBUldyaXRlci5wcm90b3R5cGUuX29uQ29udGVudEF2YWls
YWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSEFSV3JpdGVyLnByb3RvdHlwZS5fYmVnaW5X
cml0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSEFSV3JpdGVyLnByb3RvdHlwZS5fd3JpdGVO
ZXh0Q2h1bmspOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5nZXQgc3Rh
dHVzQmFySXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3Rv
dHlwZS5fY3JlYXRlU3RhdHVzQmFySXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdv
cmtMb2dWaWV3LnByb3RvdHlwZS5fY29udGV4dE1lbnUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fZXhwb3J0QWxsLm9wZW5DYWxsYmFjayk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9leHBvcnRBbGwpOgor
CiAyMDEyLTA5LTIzICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAg
ICAgICBbRUZMXSBEdXBsaWNhdGVkIFJlbmRlclRoZW1lRWZsIGNyZWF0aW9uIGZvciBzYW1lIHBh
Z2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3Ry
aW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5q
cwppbmRleCBmYWQxZjJhNjdhZWJjYTg2ZWVhMmU0Yjk5MDlkODliYTg1NzBhOWE4Li5mZGNmY2Zl
MWFlMzEwOWUwMzZkOWQyMDI2ZTNkZGViMzQ2ZjEzOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBAIC0xMjksMTQgKzEyOSwxMCBA
QCBsb2NhbGl6ZWRTdHJpbmdzWyJDb250aW51ZSB0byBIZXJlIl0gPSAiQ29udGludWUgdG8gSGVy
ZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDb250aW51ZSB0byBoZXJlIl0gPSAiQ29udGludWUgdG8g
aGVyZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDb250aW51ZSJdID0gIkNvbnRpbnVlIjsKIGxvY2Fs
aXplZFN0cmluZ3NbIkNvcHkgYXMgSFRNTCJdID0gIkNvcHkgYXMgSFRNTCI7Ci1sb2NhbGl6ZWRT
dHJpbmdzWyJDb3B5IGVudHJ5IGFzIEhBUiJdID0gIkNvcHkgZW50cnkgYXMgSEFSIjsKLWxvY2Fs
aXplZFN0cmluZ3NbIkNvcHkgRW50cnkgYXMgSEFSIl0gPSAiQ29weSBFbnRyeSBhcyBIQVIiOwot
bG9jYWxpemVkU3RyaW5nc1siU2F2ZSBlbnRyeSBhcyBIQVIiXSA9ICJTYXZlIGVudHJ5IGFzIEhB
UiI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyJTYXZlIEVudHJ5IGFzIEhBUiJdID0gIlNhdmUgRW50cnkg
YXMgSEFSIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNvcHkgYWxsIGFzIEhBUiJdID0gIkNvcHkgYWxs
IGFzIEhBUiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDb3B5IEFsbCBhcyBIQVIiXSA9ICJDb3B5IEFs
bCBhcyBIQVIiOwotbG9jYWxpemVkU3RyaW5nc1siU2F2ZSBhbGwgYXMgSEFSIl0gPSAiU2F2ZSBh
bGwgYXMgSEFSIjsKLWxvY2FsaXplZFN0cmluZ3NbIlNhdmUgQWxsIGFzIEhBUiJdID0gIlNhdmUg
QWxsIGFzIEhBUiI7Citsb2NhbGl6ZWRTdHJpbmdzWyJTYXZlIHdpdGggY29udGVudCBhcyBIQVIi
XSA9ICJTYXZlIHdpdGggY29udGVudCBhcyBIQVIiOworbG9jYWxpemVkU3RyaW5nc1siU2F2ZSB3
aXRoIENvbnRlbnQgYXMgSEFSIl0gPSAiU2F2ZSB3aXRoIENvbnRlbnQgYXMgSEFSIjsKIGxvY2Fs
aXplZFN0cmluZ3NbIkNvcHkgbGluayBhZGRyZXNzIl0gPSAiQ29weSBsaW5rIGFkZHJlc3MiOwog
bG9jYWxpemVkU3RyaW5nc1siQ29weSBMaW5rIEFkZHJlc3MiXSA9ICJDb3B5IExpbmsgQWRkcmVz
cyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDb3B5IHJlcXVlc3QgaGVhZGVycyJdID0gIkNvcHkgcmVx
dWVzdCBoZWFkZXJzIjsKQEAgLTc0OSwzICs3NDUsNSBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJMYXlv
dXQgZm9yY2VkIl0gPSAiTGF5b3V0IGZvcmNlZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJQYXVzZWQg
b24gYXNzZXJ0aW9uLiJdID0gIlBhdXNlZCBvbiBhc3NlcnRpb24uIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIiVzICglcyVzKSJdID0gIiVzICglcyVzKSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSdW5uaW5n
IGF1ZGl0Il0gPSAiUnVubmluZyBhdWRpdCI7Citsb2NhbGl6ZWRTdHJpbmdzWyJDb2xsZWN0aW5n
IGNvbnRlbnTigKYiXSA9ICJDb2xsZWN0aW5nIGNvbnRlbnTigKYiOworbG9jYWxpemVkU3RyaW5n
c1siV3JpdGluZyBmaWxl4oCmIl0gPSAiV3JpdGluZyBmaWxl4oCmIjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVV0aWxzLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlVXRpbHMuanMKaW5kZXggMjM2Y2UxZDAzZDNh
M2VmMDdiZTY3NjVkMmM3MDI4Y2IxMWQ2YjkwMS4uYTBiZWEyMDNlYTU2YTYyOGM5MDIyNWNiZGE0
Y2UwZTcyYzU4ZDg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9GaWxlVXRpbHMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9GaWxlVXRpbHMuanMKQEAgLTQwLDggKzQwLDYgQEAgV2ViSW5zcGVjdG9yLk91dHB1dFN0cmVh
bURlbGVnYXRlLnByb3RvdHlwZSA9IHsKIAogICAgIG9uQ2h1bmtUcmFuc2ZlcnJlZDogZnVuY3Rp
b24oc291cmNlKSB7IH0sCiAKLSAgICBvblRyYW5zZmVyRmluaXNoZWQ6IGZ1bmN0aW9uKHNvdXJj
ZSkgeyB9LAotCiAgICAgb25FcnJvcjogZnVuY3Rpb24oc291cmNlLCBldmVudCkgeyB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnku
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hBUkVudHJ5LmpzCmluZGV4
IGVlYTUzMzlhM2YwMWIzZDkxM2I1NWM4YTA2ZTVlOTBkYWU3Nzg0MDguLjgwNGFiMmI5OTlhNjNm
YzkxYjYyZjM5MmMyYWZiOTBlOGEyNjcwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9IQVJFbnRyeS5qcwpAQCAtMTY0LDcgKzE2NCw3IEBAIFdlYkluc3BlY3Rv
ci5IQVJFbnRyeS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0ZXh0OiB0aGlzLl9yZXF1ZXN0
LnJlcXVlc3RGb3JtRGF0YQogICAgICAgICB9OwogICAgICAgICBpZiAodGhpcy5fcmVxdWVzdC5m
b3JtUGFyYW1ldGVycykKLSAgICAgICAgICAgcmVzLnBhcmFtcyA9IHRoaXMuX2J1aWxkUGFyYW1l
dGVycyh0aGlzLl9yZXF1ZXN0LmZvcm1QYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgIHJlcy5wYXJh
bXMgPSB0aGlzLl9idWlsZFBhcmFtZXRlcnModGhpcy5fcmVxdWVzdC5mb3JtUGFyYW1ldGVycyk7
CiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfSwKIApAQCAtMjc5LDE5ICsyNzksMjQgQEAgV2Vi
SW5zcGVjdG9yLkhBUkxvZy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgYnVpbGQ6IGZ1bmN0
aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciB3ZWJLaXRWZXJzaW9uID0gL0FwcGxlV2ViS2l0XC8o
W14gXSspLy5leGVjKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KTsKLQogICAgICAgICByZXR1
cm4gewogICAgICAgICAgICAgdmVyc2lvbjogIjEuMiIsCi0gICAgICAgICAgICBjcmVhdG9yOiB7
Ci0gICAgICAgICAgICAgICAgbmFtZTogIldlYkluc3BlY3RvciIsCi0gICAgICAgICAgICAgICAg
dmVyc2lvbjogd2ViS2l0VmVyc2lvbiA/IHdlYktpdFZlcnNpb25bMV0gOiAibi9hIgotICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIGNyZWF0b3I6IHRoaXMuX2NyZWF0b3IoKSwKICAgICAgICAg
ICAgIHBhZ2VzOiB0aGlzLl9idWlsZFBhZ2VzKCksCiAgICAgICAgICAgICBlbnRyaWVzOiB0aGlz
Ll9yZXF1ZXN0cy5tYXAodGhpcy5fY29udmVydFJlc291cmNlLmJpbmQodGhpcykpCiAgICAgICAg
IH0KICAgICB9LAogCisgICAgX2NyZWF0b3I6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZh
ciB3ZWJLaXRWZXJzaW9uID0gL0FwcGxlV2ViS2l0XC8oW14gXSspLy5leGVjKHdpbmRvdy5uYXZp
Z2F0b3IudXNlckFnZW50KTsKKworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgbmFtZTog
IldlYkluc3BlY3RvciIsCisgICAgICAgICAgICB2ZXJzaW9uOiB3ZWJLaXRWZXJzaW9uID8gd2Vi
S2l0VmVyc2lvblsxXSA6ICJuL2EiCisgICAgICAgIH07CisgICAgfSwKKwogICAgIC8qKgogICAg
ICAqIEByZXR1cm4ge0FycmF5fQogICAgICAqLwpAQCAtMzQ4LDMgKzM1Myw4NyBAQCBXZWJJbnNw
ZWN0b3IuSEFSTG9nLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5I
QVJFbnRyeS5fdG9NaWxsaXNlY29uZHModGltZSAtIHN0YXJ0VGltZSk7CiAgICAgfQogfQorCisv
KioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitXZWJJbnNwZWN0b3IuSEFSV3JpdGVyID0gZnVuY3Rp
b24oKQoreworfQorCitXZWJJbnNwZWN0b3IuSEFSV3JpdGVyLnByb3RvdHlwZSA9IHsKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5PdXRwdXRTdHJlYW19IHN0cmVhbQorICAg
ICAqIEBwYXJhbSB7QXJyYXkuPFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdD59IHJlcXVlc3Rz
CisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUHJvZ3Jlc3N9IHByb2dyZXNzCisgICAgICov
CisgICAgd3JpdGU6IGZ1bmN0aW9uKHN0cmVhbSwgcmVxdWVzdHMsIHByb2dyZXNzKQorICAgIHsK
KyAgICAgICAgdGhpcy5fc3RyZWFtID0gc3RyZWFtOworICAgICAgICB0aGlzLl9oYXJMb2cgPSAo
bmV3IFdlYkluc3BlY3Rvci5IQVJMb2cocmVxdWVzdHMpKS5idWlsZCgpOworICAgICAgICB0aGlz
Ll9wZW5kaW5nUmVxdWVzdHMgPSAxOyAvLyBHdWFyZCBhZ2FpbnN0IGNvbXBsZXRpbmcgcmVzb3Vy
Y2UgdHJhbnNmZXIgYmVmb3JlIGFsbCByZXF1ZXN0cyBhcmUgbWFkZS4KKyAgICAgICAgdmFyIGVu
dHJpZXMgPSB0aGlzLl9oYXJMb2cuZW50cmllczsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgY29udGVudCA9IHJlcXVl
c3RzW2ldLmNvbnRlbnQ7CisgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICJ1bmRl
ZmluZWQiICYmIHJlcXVlc3RzW2ldLmZpbmlzaGVkKSB7CisgICAgICAgICAgICAgICAgKyt0aGlz
Ll9wZW5kaW5nUmVxdWVzdHM7CisgICAgICAgICAgICAgICAgcmVxdWVzdHNbaV0ucmVxdWVzdENv
bnRlbnQodGhpcy5fb25Db250ZW50QXZhaWxhYmxlLmJpbmQodGhpcywgZW50cmllc1tpXSkpOwor
ICAgICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50ICE9PSBudWxsKQorICAgICAgICAgICAgICAg
IGVudHJpZXNbaV0ucmVzcG9uc2UuY29udGVudC50ZXh0ID0gY29udGVudDsKKyAgICAgICAgfQor
ICAgICAgICB2YXIgY29tcG9zaXRlUHJvZ3Jlc3MgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbXBvc2l0
ZVByb2dyZXNzKHByb2dyZXNzKTsKKyAgICAgICAgdGhpcy5fd3JpdGVQcm9ncmVzcyA9IGNvbXBv
c2l0ZVByb2dyZXNzLmNyZWF0ZVN1YlByb2dyZXNzKCk7CisgICAgICAgIGlmICgtLXRoaXMuX3Bl
bmRpbmdSZXF1ZXN0cykgeworICAgICAgICAgICAgdGhpcy5fcmVxdWVzdHNQcm9ncmVzcyA9IGNv
bXBvc2l0ZVByb2dyZXNzLmNyZWF0ZVN1YlByb2dyZXNzKCk7CisgICAgICAgICAgICB0aGlzLl9y
ZXF1ZXN0c1Byb2dyZXNzLnNldFRpdGxlKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sbGVjdGlu
ZyBjb250ZW504oCmIikpOworICAgICAgICAgICAgdGhpcy5fcmVxdWVzdHNQcm9ncmVzcy5zZXRU
b3RhbFdvcmsodGhpcy5fcGVuZGluZ1JlcXVlc3RzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICB0aGlzLl9iZWdpbldyaXRlKCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7T2JqZWN0fSBlbnRyeQorICAgICAqIEBwYXJhbSB7c3RyaW5nfG51bGx9IGNvbnRlbnQKKyAg
ICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNvbnRlbnRFbmNvZGVkCisgICAgICogQHBhcmFtIHtzdHJp
bmc9fSBtaW1lVHlwZQorICAgICAqLworICAgIF9vbkNvbnRlbnRBdmFpbGFibGU6IGZ1bmN0aW9u
KGVudHJ5LCBjb250ZW50LCBjb250ZW50RW5jb2RlZCwgbWltZVR5cGUpCisgICAgeworICAgICAg
ICBpZiAoY29udGVudCAhPT0gbnVsbCkKKyAgICAgICAgICAgIGVudHJ5LnJlc3BvbnNlLmNvbnRl
bnQudGV4dCA9IGNvbnRlbnQ7CisgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0c1Byb2dyZXNzKQor
ICAgICAgICAgICAgdGhpcy5fcmVxdWVzdHNQcm9ncmVzcy53b3JrZWQoKTsKKyAgICAgICAgaWYg
KCEtLXRoaXMuX3BlbmRpbmdSZXF1ZXN0cykgeworICAgICAgICAgICAgdGhpcy5fcmVxdWVzdHNQ
cm9ncmVzcy5kb25lKCk7CisgICAgICAgICAgICB0aGlzLl9iZWdpbldyaXRlKCk7CisgICAgICAg
IH0KKyAgICB9LAorCisgICAgX2JlZ2luV3JpdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IGNvbnN0IGpzb25JbmRlbnQgPSAyOworICAgICAgICB0aGlzLl90ZXh0ID0gSlNPTi5zdHJpbmdp
Znkoe2xvZzogdGhpcy5faGFyTG9nfSwgbnVsbCwganNvbkluZGVudCk7CisgICAgICAgIHRoaXMu
X3dyaXRlUHJvZ3Jlc3Muc2V0VGl0bGUoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXcml0aW5nIGZp
bGXigKYiKSk7CisgICAgICAgIHRoaXMuX3dyaXRlUHJvZ3Jlc3Muc2V0VG90YWxXb3JrKHRoaXMu
X3RleHQubGVuZ3RoKTsKKyAgICAgICAgdGhpcy5fYnl0ZXNXcml0dGVuID0gMDsKKyAgICAgICAg
dGhpcy5fd3JpdGVOZXh0Q2h1bmsodGhpcy5fc3RyZWFtKTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuT3V0cHV0U3RyZWFtfSBzdHJlYW0KKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gZXJyb3IKKyAgICAgKi8KKyAgICBfd3JpdGVOZXh0Q2h1bms6IGZ1bmN0
aW9uKHN0cmVhbSwgZXJyb3IpCisgICAgeworICAgICAgICBpZiAodGhpcy5fYnl0ZXNXcml0dGVu
ID49IHRoaXMuX3RleHQubGVuZ3RoIHx8IGVycm9yKSB7CisgICAgICAgICAgICBzdHJlYW0uY2xv
c2UoKTsKKyAgICAgICAgICAgIHRoaXMuX3dyaXRlUHJvZ3Jlc3MuZG9uZSgpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IDEwMDAwMDsK
KyAgICAgICAgdmFyIHRleHQgPSB0aGlzLl90ZXh0LnN1YnN0cmluZyh0aGlzLl9ieXRlc1dyaXR0
ZW4sIHRoaXMuX2J5dGVzV3JpdHRlbiArIGNodW5rU2l6ZSk7CisgICAgICAgIHRoaXMuX2J5dGVz
V3JpdHRlbiArPSB0ZXh0Lmxlbmd0aDsKKyAgICAgICAgc3RyZWFtLndyaXRlKHRleHQsIHRoaXMu
X3dyaXRlTmV4dENodW5rLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl93cml0ZVByb2dyZXNz
LnNldFdvcmtlZCh0aGlzLl9ieXRlc1dyaXR0ZW4pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKaW5kZXggYzdiOTAw
NjMyMTdjMGJiYjQ5MDE4OGFjODYyYjg3ZmI4NDNlZDQ1Ny4uOTFlN2IxZmM5YjZiZGIyNDJhN2Zm
N2MzMzFiYTkwZGRmMTM2NDMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTY1LDcgKzY1LDcgQEAgV2ViSW5zcGVjdG9y
Lk5ldHdvcmtMb2dWaWV3ID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2N1cnJlbnRNYXRjaGVkUmVx
dWVzdEluZGV4ID0gLTE7CiAKICAgICB0aGlzLl9jcmVhdGVTdGF0dXNiYXJCdXR0b25zKCk7Ci0g
ICAgdGhpcy5fY3JlYXRlRmlsdGVyU3RhdHVzQmFySXRlbXMoKTsKKyAgICB0aGlzLl9jcmVhdGVT
dGF0dXNCYXJJdGVtcygpOwogICAgIHRoaXMuX2xpbmtpZmllciA9IG5ldyBXZWJJbnNwZWN0b3Iu
TGlua2lmaWVyKCk7CiAKICAgICBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXF1ZXN0U3Rh
cnRlZCwgdGhpcy5fb25SZXF1ZXN0U3RhcnRlZCwgdGhpcyk7CkBAIC0xMTgsNyArMTE4LDcgQEAg
V2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIGdldCBzdGF0
dXNCYXJJdGVtcygpCiAgICAgewotICAgICAgICByZXR1cm4gW3RoaXMuX2xhcmdlclJlcXVlc3Rz
QnV0dG9uLmVsZW1lbnQsIHRoaXMuX3ByZXNlcnZlTG9nVG9nZ2xlLmVsZW1lbnQsIHRoaXMuX2Ns
ZWFyQnV0dG9uLmVsZW1lbnQsIHRoaXMuX2ZpbHRlckJhckVsZW1lbnRdOworICAgICAgICByZXR1
cm4gW3RoaXMuX2xhcmdlclJlcXVlc3RzQnV0dG9uLmVsZW1lbnQsIHRoaXMuX3ByZXNlcnZlTG9n
VG9nZ2xlLmVsZW1lbnQsIHRoaXMuX2NsZWFyQnV0dG9uLmVsZW1lbnQsIHRoaXMuX2ZpbHRlckJh
ckVsZW1lbnQsIHRoaXMuX3Byb2dyZXNzQmFyQ29udGFpbmVyXTsKICAgICB9LAogCiAgICAgZ2V0
IHVzZUxhcmdlUm93cygpCkBAIC0zMjUsNyArMzI1LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtM
b2dWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdXBkYXRlT2Zmc2NyZWVuUm93cygp
OwogICAgIH0sCiAKLSAgICBfY3JlYXRlRmlsdGVyU3RhdHVzQmFySXRlbXM6IGZ1bmN0aW9uKCkK
KyAgICBfY3JlYXRlU3RhdHVzQmFySXRlbXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZh
ciBmaWx0ZXJCYXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAg
ICAgIGZpbHRlckJhckVsZW1lbnQuY2xhc3NOYW1lID0gInNjb3BlLWJhciBzdGF0dXMtYmFyLWl0
ZW0iOwpAQCAtMzU4LDYgKzM1OCw4IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICBjcmVhdGVGaWx0ZXJFbGVtZW50LmNhbGwodGhpcywgdHlw
ZS5uYW1lKCksIHR5cGUuY2F0ZWdvcnlUaXRsZSgpKTsKICAgICAgICAgfQogICAgICAgICB0aGlz
Ll9maWx0ZXJCYXJFbGVtZW50ID0gZmlsdGVyQmFyRWxlbWVudDsKKyAgICAgICAgdGhpcy5fcHJv
Z3Jlc3NCYXJDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAg
ICAgdGhpcy5fcHJvZ3Jlc3NCYXJDb250YWluZXIuY2xhc3NOYW1lID0gInN0YXR1cy1iYXItaXRl
bSI7CiAgICAgfSwKIAogICAgIF9jcmVhdGVTdW1tYXJ5QmFyOiBmdW5jdGlvbigpCkBAIC05NDQs
MTUgKzk0NiwxMiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiQ29weSByZXF1ZXN0
IGhlYWRlcnMiIDogIkNvcHkgUmVxdWVzdCBIZWFkZXJzIiksIHRoaXMuX2NvcHlSZXF1ZXN0SGVh
ZGVycy5iaW5kKHRoaXMsIHJlcXVlc3QpKTsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LnJlc3Bv
bnNlSGVhZGVyc1RleHQpCiAgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMo
KSA/ICJDb3B5IHJlc3BvbnNlIGhlYWRlcnMiIDogIkNvcHkgUmVzcG9uc2UgSGVhZGVycyIpLCB0
aGlzLl9jb3B5UmVzcG9uc2VIZWFkZXJzLmJpbmQodGhpcywgcmVxdWVzdCkpOwotICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVj
dG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/ICJDb3B5IGVudHJ5IGFzIEhBUiIgOiAiQ29w
eSBFbnRyeSBhcyBIQVIiKSwgdGhpcy5fY29weVJlcXVlc3QuYmluZCh0aGlzLCByZXF1ZXN0KSk7
CiAgICAgICAgIH0KICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/ICJDb3B5IGFs
bCBhcyBIQVIiIDogIkNvcHkgQWxsIGFzIEhBUiIpLCB0aGlzLl9jb3B5QWxsLmJpbmQodGhpcykp
OwogCiAgICAgICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZEhvc3QuY2FuU2F2ZSgpKSB7CiAgICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKLSAgICAgICAgICAgIGlmIChy
ZXF1ZXN0KQotICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiU2F2
ZSBlbnRyeSBhcyBIQVIiIDogIlNhdmUgRW50cnkgYXMgSEFSIiksIHRoaXMuX2V4cG9ydFJlcXVl
c3QuYmluZCh0aGlzLCByZXF1ZXN0KSk7Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJ
dGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNlTWVudVRp
dGxlcygpID8gIlNhdmUgYWxsIGFzIEhBUiIgOiAiU2F2ZSBBbGwgYXMgSEFSIiksIHRoaXMuX2V4
cG9ydEFsbC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVz
KCkgPyAiU2F2ZSB3aXRoIGNvbnRlbnQgYXMgSEFSIiA6ICJTYXZlIHdpdGggQ29udGVudCBhcyBI
QVIiKSwgdGhpcy5fZXhwb3J0QWxsLmJpbmQodGhpcykpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKHRoaXMuX2NhbkNsZWFyQnJvd3NlckNhY2hlIHx8IHRoaXMuX2NhbkNsZWFyQnJvd3NlckNv
b2tpZXMpCkBAIC05NjMsNyArOTYyLDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiQ2xl
YXIgYnJvd3NlciBjb29raWVzIiA6ICJDbGVhciBCcm93c2VyIENvb2tpZXMiKSwgdGhpcy5fY2xl
YXJCcm93c2VyQ29va2llcy5iaW5kKHRoaXMpKTsKIAogCi0gICAgICAgIGlmIChyZXF1ZXN0LnR5
cGUgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlhIUikgeworICAgICAgICBpZiAocmVx
dWVzdCAmJiByZXF1ZXN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlhIUikg
ewogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CiAgICAgICAgICAg
ICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVwbGF5IFhI
UiIpLCB0aGlzLl9yZXBsYXlYSFIuYmluZCh0aGlzLCByZXF1ZXN0LnJlcXVlc3RJZCkpOwogICAg
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CkBAIC05ODYsMTIgKzk4NSw2
IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIElu
c3BlY3RvckZyb250ZW5kSG9zdC5jb3B5VGV4dChKU09OLnN0cmluZ2lmeShoYXJBcmNoaXZlLCBu
dWxsLCAyKSk7CiAgICAgfSwKIAotICAgIF9jb3B5UmVxdWVzdDogZnVuY3Rpb24ocmVxdWVzdCkK
LSAgICB7Ci0gICAgICAgIHZhciBoYXIgPSAobmV3IFdlYkluc3BlY3Rvci5IQVJFbnRyeShyZXF1
ZXN0KSkuYnVpbGQoKTsKLSAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNvcHlUZXh0KEpT
T04uc3RyaW5naWZ5KGhhciwgbnVsbCwgMikpOwotICAgIH0sCi0KICAgICBfY29weUxvY2F0aW9u
OiBmdW5jdGlvbihyZXF1ZXN0KQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmNvcHlUZXh0KHJlcXVlc3QudXJsKTsKQEAgLTEwMDksMTcgKzEwMDIsMTYgQEAgV2ViSW5zcGVj
dG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIF9leHBvcnRBbGw6IGZ1bmN0
aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciBoYXJBcmNoaXZlID0gewotICAgICAgICAgICAgbG9n
OiAobmV3IFdlYkluc3BlY3Rvci5IQVJMb2codGhpcy5fcmVxdWVzdHMpKS5idWlsZCgpCi0gICAg
ICAgIH07Ci0gICAgICAgIAotICAgICAgICBXZWJJbnNwZWN0b3IuZmlsZU1hbmFnZXIuc2F2ZShX
ZWJJbnNwZWN0b3IuaW5zcGVjdGVkUGFnZURvbWFpbiArICIuaGFyIiwgSlNPTi5zdHJpbmdpZnko
aGFyQXJjaGl2ZSwgbnVsbCwgMiksIHRydWUpOwotICAgIH0sCi0KLSAgICBfZXhwb3J0UmVxdWVz
dDogZnVuY3Rpb24ocmVxdWVzdCkKLSAgICB7Ci0gICAgICAgIHZhciBoYXIgPSAobmV3IFdlYklu
c3BlY3Rvci5IQVJFbnRyeShyZXF1ZXN0KSkuYnVpbGQoKTsKLSAgICAgICAgV2ViSW5zcGVjdG9y
LmZpbGVNYW5hZ2VyLnNhdmUocmVxdWVzdC5kaXNwbGF5TmFtZSArICIuaGFyIiwgSlNPTi5zdHJp
bmdpZnkoaGFyLCBudWxsLCAyKSwgdHJ1ZSk7CisgICAgICAgIHZhciBmaWxlbmFtZSA9IFdlYklu
c3BlY3Rvci5pbnNwZWN0ZWRQYWdlRG9tYWluICsgIi5oYXIiOworICAgICAgICB2YXIgc3RyZWFt
ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlT3V0cHV0U3RyZWFtKCk7CisgICAgICAgIHN0cmVhbS5v
cGVuKGZpbGVuYW1lLCBvcGVuQ2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgIGZ1bmN0aW9u
IG9wZW5DYWxsYmFjaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwcm9ncmVzc0luZGlj
YXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuUHJvZ3Jlc3NJbmRpY2F0b3IoKTsKKyAgICAgICAgICAg
IHRoaXMuX3Byb2dyZXNzQmFyQ29udGFpbmVyLmFwcGVuZENoaWxkKHByb2dyZXNzSW5kaWNhdG9y
LmVsZW1lbnQpOworICAgICAgICAgICAgdmFyIGhhcldyaXRlciA9IG5ldyBXZWJJbnNwZWN0b3Iu
SEFSV3JpdGVyKCk7CisgICAgICAgICAgICBoYXJXcml0ZXIud3JpdGUoc3RyZWFtLCB0aGlzLl9y
ZXF1ZXN0cywgcHJvZ3Jlc3NJbmRpY2F0b3IpOworICAgICAgICB9CiAgICAgfSwKIAogICAgIF9j
bGVhckJyb3dzZXJDYWNoZTogZnVuY3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTNiNmUxZWFhYTVjYTMw
YmNjNjhjOWRlODQ3Yjg0MTAzNTM4OTk3ZC4uOGQwODI2YmIyMjBmZjFkZDRmZmY2Nzg2ZDA4ODZk
ZmNmNjVkMjViZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA5LTIxICBBbmRyZXkgS29z
eWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3Vw
cG9ydCBzYXZpbmcgSEFSIHdpdGggcmVzb3VyY2VzIGNvbnRlbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MzQxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBtb3ZlZCBTdHJpbmdPdXRwdXRTdHJlYW0g
dG8gaW5zcGVjdG9yLXRlc3QuanMgZm9yIHJldXNlOworICAgICAgICAtIGFkZGVkIHRlc3QgZm9y
IEhBUldyaXRlciBhbmQgcmVzcG9uc2UgY29udGVudCBpbiBIQVIuCisKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVf
SW5zcGVjdG9yVGVzdCk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuKToKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2hhci1jb250ZW50LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9oYXIt
Y29udGVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUvdGltZWxp
bmUtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfVGltZWxpbmUpOgorCiAyMDEyLTA5LTIz
ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBT
b3J0aW5nIGEgbm9uLWFycmF5IGNyZWF0ZXMgcHJvcHJldGllcyAoc3BlYy12aW9sYXRpb24pCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVz
dC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Lmpz
CmluZGV4IDE3N2E2MTY2YzcyNzE5ZmI4MDA0NjBiOWVhOTEwOTVhNmYwYWNhOGEuLjdkNzE0OWM2
NjQ1OGI1YzYwM2U1MWI5YWVhNzQ2OTk5NzZiMTU3NzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCkBAIC0zNzIsNiArMzcyLDI2
IEBAIEluc3BlY3RvclRlc3QudGV4dENvbnRlbnRXaXRoTGluZUJyZWFrcyA9IGZ1bmN0aW9uKG5v
ZGUpCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAorSW5zcGVjdG9yVGVzdC5TdHJpbmdPdXRwdXRT
dHJlYW0gPSBmdW5jdGlvbihjYWxsYmFjaykKK3sKKyAgICB0aGlzLl9jYWxsYmFjayA9IGNhbGxi
YWNrOworICAgIHRoaXMuX2J1ZmZlciA9ICIiOworfTsKKworSW5zcGVjdG9yVGVzdC5TdHJpbmdP
dXRwdXRTdHJlYW0ucHJvdG90eXBlID0geworICAgIHdyaXRlOiBmdW5jdGlvbihjaHVuaywgY2Fs
bGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9idWZmZXIgKz0gY2h1bms7CisgICAgICAgIGlm
IChjYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMpOworICAgIH0sCisKKyAgICBj
bG9zZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fY2FsbGJhY2sodGhpcy5fYnVm
ZmVyKTsKKyAgICB9Cit9OworCiB9OwogCiB2YXIgaW5pdGlhbGl6ZUNhbGxJZCA9IDA7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2hhci1jb250
ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaGFyLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxOGU2MGMyNDQ3MGM2OGVi
NjMxNjdjNzA5ZGE2MTZhZDcwOWMxNjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2hhci1jb250ZW50LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjogWEhSIGxvYWRlZDogMQorVGVz
dHMgY29udmVyc2lvbiBvZiBJbnNwZWN0b3IncyByZXNvdXJjZSByZXByZXNlbnRhdGlvbiBpbnRv
IEhBUiBmb3JtYXQuCisKK2luaXRpYXRvci5jc3M6IC5pbWFnZS1iYWNrZ3JvdW5kIHsKKyAgICBi
YWNrZ3JvdW5kLWltYWdlOiB1cmwoInJlc291cmNlLnBocD90eXBlPWltYWdlJnJhbmRvbT0xJnNp
emU9MjAwIik7Cit9CisKKy5pbWFnZS1iYWNrZ3JvdW5kLTIgeworICAgIGJhY2tncm91bmQtaW1h
Z2U6IHVybCgicmVzb3VyY2UucGhwP3R5cGU9aW1hZ2UmcmFuZG9tPTEmc2l6ZT0zMDAiKTsKK30K
KworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaGFyLWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaGFyLWNvbnRlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTE3OGM5ZDY5ZWRmYjNkNTQ1MGM4
YWNmYjQ3OTFmNzRjYWZjOWI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9oYXItY29udGVudC5odG1sCkBAIC0wLDAgKzEsNTEgQEAK
KzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vbmV0d29yay10ZXN0LmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdD4KK3ZhciB0ZXN0ID0gZnVuY3Rpb24oKQoreworICAgIGNvbnN0
IHJlcXVlc3RSZWdFeHAgPSAvXC9pbml0aWF0b3IuY3NzJC87CisKKyAgICBmdW5jdGlvbiBvblJl
cXVlc3RGaW5pc2hlZCgpCisgICAgeworICAgICAgICB2YXIgd3JpdGVyID0gbmV3IFdlYkluc3Bl
Y3Rvci5IQVJXcml0ZXIoKTsKKyAgICAgICAgdmFyIHN0cmVhbSA9IG5ldyBJbnNwZWN0b3JUZXN0
LlN0cmluZ091dHB1dFN0cmVhbShvblNhdmVkKTsKKyAgICAgICAgd3JpdGVyLndyaXRlKHN0cmVh
bSwgV2ViSW5zcGVjdG9yLm5ldHdvcmtMb2cucmVxdWVzdHMsIG5ldyBXZWJJbnNwZWN0b3IuUHJv
Z3Jlc3MoKSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gb25TYXZlZChkYXRhKQorICAgIHsKKyAg
ICAgICAgdmFyIGhhciA9IEpTT04ucGFyc2UoZGF0YSk7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJpbml0aWF0b3IuY3NzOiAiICsgZmluZEVudHJ5KGhhciwgcmVxdWVzdFJlZ0V4
cCkucmVzcG9uc2UuY29udGVudC50ZXh0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0
ZVRlc3QoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5kRW50cnkoaGFyLCByZWdleHApCisg
ICAgeworICAgICAgICB2YXIgZW50cmllcyA9IGhhci5sb2cuZW50cmllczsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgdmFy
IGVudHJ5ID0gZW50cmllc1tpXTsKKyAgICAgICAgICAgICBpZiAocmVnZXhwLnRlc3QoZW50cnku
cmVxdWVzdC51cmwpKQorICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAgIH0K
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkZBSUw6IGNhbid0IGZpbmQgcmVzb3Vy
Y2UgZm9yICIgKyByZWdleHApOworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBJ
bnNwZWN0b3JUZXN0Lm1ha2VTaW1wbGVYSFIoIkdFVCIsICJyZXNvdXJjZXMvaW5pdGlhdG9yLmNz
cyIsIGZhbHNlLCBvblJlcXVlc3RGaW5pc2hlZCk7Cit9Cis8L3NjcmlwdD4KKworCis8L2hlYWQ+
CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgY29udmVyc2lvbiBvZiBJ
bnNwZWN0b3IncyByZXNvdXJjZSByZXByZXNlbnRhdGlvbiBpbnRvIEhBUiBmb3JtYXQuCis8L3A+
CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS90aW1lbGluZS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5l
L3RpbWVsaW5lLXRlc3QuanMKaW5kZXggYjFmN2VmMDBkZmQ4Njg0ZmVjZjEyNTNkZWZhNjYxNmJk
MGM0ZjAyOS4uNGQ2OTMwMTkxMGI5YjY1ZTA1OTQxMzUyMGI2ZWZiMWE0MzViN2U0NiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL3RpbWVsaW5lLXRlc3QuanMKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL3RpbWVsaW5lLXRlc3QuanMKQEAgLTIw
NywyNCArMjA3LDQgQEAgSW5zcGVjdG9yVGVzdC5GYWtlRmlsZVJlYWRlci5wcm90b3R5cGUgPSB7
CiAgICAgfQogfTsKIAotSW5zcGVjdG9yVGVzdC5TdHJpbmdPdXRwdXRTdHJlYW0gPSBmdW5jdGlv
bihjYWxsYmFjaykKLXsKLSAgICB0aGlzLl9jYWxsYmFjayA9IGNhbGxiYWNrOwotICAgIHRoaXMu
X2J1ZmZlciA9ICIiOwotfTsKLQotSW5zcGVjdG9yVGVzdC5TdHJpbmdPdXRwdXRTdHJlYW0ucHJv
dG90eXBlID0gewotICAgIHdyaXRlOiBmdW5jdGlvbihjaHVuaywgY2FsbGJhY2spCi0gICAgewot
ICAgICAgICB0aGlzLl9idWZmZXIgKz0gY2h1bms7Ci0gICAgICAgIGlmIChjYWxsYmFjaykKLSAg
ICAgICAgICAgIGNhbGxiYWNrKHRoaXMpOwotICAgIH0sCi0KLSAgICBjbG9zZTogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgdGhpcy5fY2FsbGJhY2sodGhpcy5fYnVmZmVyKTsKLSAgICB9Ci19
OwotCiB9Owo=
</data>
<flag name="review"
          id="177338"
          type_id="1"
          status="+"
          setter="vsevik"
    />
          </attachment>
      

    </bug>

</bugzilla>