<?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>66204</bug_id>
          
          <creation_ts>2011-08-14 02:31:31 -0700</creation_ts>
          <short_desc>garden-o-matic should be able to rebaseline expected failures</short_desc>
          <delta_ts>2011-08-17 13:16:04 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          <blocked>64188</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>noel.gordon</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>450927</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-14 02:31:31 -0700</bug_when>
    <thetext>garden-o-matic should be able to rebaseline expected failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450928</commentid>
    <comment_count>1</comment_count>
      <attachid>103877</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-14 02:32:23 -0700</bug_when>
    <thetext>Created attachment 103877
work-in-progress (breaks garden-o-matic)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450929</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-14 02:34:44 -0700</bug_when>
    <thetext>Noel asked for this feature.  (Also, this gives me an opportunity to re-build the results detail view using our fancy object-oriented toolkit.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450930</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-14 02:39:32 -0700</bug_when>
    <thetext>@dglakov: Thoughts on how to upcall from views to controllers?  This patch uses two approaches:

1) Direct function calls on a controller object (e.g., to fetch information from the network).
2) onFooBar properties, which can be overridden to observe events.

Instead of onFooBar properties, we could use honest-to-goodness DOM events (e.g., triggering them with http://api.jquery.com/trigger/ or manually).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450940</commentid>
    <comment_count>4</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-14 09:28:02 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; @dglakov: Thoughts on how to upcall from views to controllers?  This patch uses two approaches:
&gt; 
&gt; 1) Direct function calls on a controller object (e.g., to fetch information from the network).
&gt; 2) onFooBar properties, which can be overridden to observe events.
&gt; 
&gt; Instead of onFooBar properties, we could use honest-to-goodness DOM events (e.g., triggering them with http://api.jquery.com/trigger/ or manually).

Firing/listening to events sounds nice and easy to do:

var event = document.createEvent(&quot;Event&quot;);
event.initEvent(&quot;TheRooTheRoofTheRoof&quot;, false, false);
event.isOn = &quot;fire&quot;;
target.dispatchEvent(event);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451353</commentid>
    <comment_count>5</comment_count>
      <attachid>103971</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-15 16:03:33 -0700</bug_when>
    <thetext>Created attachment 103971
more work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452385</commentid>
    <comment_count>6</comment_count>
      <attachid>104197</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-17 11:15:15 -0700</bug_when>
    <thetext>Created attachment 104197
Machine transfer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452471</commentid>
    <comment_count>7</comment_count>
      <attachid>104213</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-17 12:31:41 -0700</bug_when>
    <thetext>Created attachment 104213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452490</commentid>
    <comment_count>8</comment_count>
      <attachid>104213</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-17 13:08:08 -0700</bug_when>
    <thetext>Comment on attachment 104213
Patch

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

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/controllers.js:30
&gt; +contollers.resultsDetails = base.extends(Object, {

ResultsDetails</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452500</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-17 13:16:04 -0700</bug_when>
    <thetext>Committed r93236: &lt;http://trac.webkit.org/changeset/93236&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103877</attachid>
            <date>2011-08-14 02:32:23 -0700</date>
            <delta_ts>2011-08-15 16:03:28 -0700</delta_ts>
            <desc>work-in-progress (breaks garden-o-matic)</desc>
            <filename>bug-66204-20110814023222.patch</filename>
            <type>text/plain</type>
            <size>16784</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMwMjkKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9j
b250cm9sbGVycy9yZWJhc2VsaW5lLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2NvbnRyb2xsZXJzL3Jl
YmFzZWxpbmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE2MjZkYzZkZTI1ZGZiNTg3ZjYzY2Y3NWMyZDY5MTQw
MjQyYWIxNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jb250cm9sbGVycy9y
ZWJhc2VsaW5lLmpzCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworKGZ1bmN0aW9uKCkg
eworCit2YXIgY29udHJvbGxlciA9IHt9OworY29udHJvbGxlci5mZXRjaFJlc3VsdHNVUkxzID0g
cmVzdWx0cy5mZXRjaFJlc3VsdHNVUkxzOworCiskKGZ1bmN0aW9uKCkgeworICAgIG1vZGVsLnVw
ZGF0ZVJlc3VsdHNCeUJ1aWxkZXIoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBmYWlsdXJlcyA9
IHJlc3VsdHMuZXhwZWN0ZWRPclVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdChtb2RlbC5zdGF0ZS5y
ZXN1bHRzQnlCdWlsZGVyKTsKKyAgICAgICAgdmFyIHJlc3VsdHNDaG9vc2VyID0gbmV3IHVpLnJl
c3VsdHMuQ2hvb3NlcihPYmplY3Qua2V5cyhmYWlsdXJlcykpOworICAgICAgICB2YXIgcmVzdWx0
c1ZpZXcgPSBuZXcgdWkucmVzdWx0cy5WaWV3KGNvbnRyb2xsZXIpOworCisgICAgICAgIHJlc3Vs
dHNDaG9vc2VyLm9uU2VsZWN0ID0gZnVuY3Rpb24odGVzdE5hbWUpIHsKKyAgICAgICAgICAgIHJl
c3VsdHNWaWV3LnNob3codGVzdE5hbWUsIGZhaWx1cmVzW3Rlc3ROYW1lXSk7CisgICAgICAgIH07
CisKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyZXN1bHRzQ2hvb3Nlcik7Cisg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVzdWx0c1ZpZXcpOworICAgIH0pOwor
fSk7CisKK30pKCk7CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5jc3MgYi9Ub29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvbWFpbi5jc3MKaW5kZXggNjAwYTBiZDVkNTM3OTlmZGJmNWM4MDZlNDM1ZDQy
ODZjZjFlMjRiNS4uZTY3ZjRkZTVhYzM4ZjBmMTY2ZTgzNThiMTliYmUxY2JkNmZjOWVkNiAxMDA2
NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uY3NzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9t
YWluLmNzcwpAQCAtMjc0LDEzICsyNzQsNyBAQCBidXR0b24uZGVmYXVsdDpob3ZlciB7CiAvKioq
IHJlc3VsdHMtZGV0YWlsICoqKi8KIAogLnJlc3VsdHMtZGV0YWlsIHsKLSAgICBkaXNwbGF5OiBu
b25lOwotICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1
OwotICAgIHRvcDogMjUlOwotICAgIGxlZnQ6IDBweDsKLSAgICByaWdodDogMHB4OwotICAgIGJv
dHRvbTogMHB4OwogfQogCiAucmVzdWx0cy1kZXRhaWwgLnRvb2xiYXIgewpAQCAtMzEwLDcgKzMw
NCw3IEBAIGJ1dHRvbi5kZWZhdWx0OmhvdmVyIHsKICAgICBmbG9hdDogcmlnaHQ7CiB9CiAKLS5y
ZXN1bHRzLWRldGFpbCAuY29udGVudCB7CisucmVzdWx0cy1kZXRhaWwgdGQgewogICAgIGJhY2tn
cm91bmQtY29sb3I6IHdoaXRlOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFp
bi5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzCmluZGV4IDgyOGVmMjM0NDJjMmM3OWRiMjE1
N2QwNDkyY2E1ODYwOTVmMTVhODguLjQ0NDdiMGZkYmZiM2E3NDE0OTA4MTlkNTljNDdiNmRjNTMz
OTM4YTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzCisrKyBiL1Rvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9tYWluLmpzCkBAIC0xNzEsNyArMTcxLDcgQEAgZnVuY3Rpb24gZmFpbHVyZUluZm9G
cm9tUmVzdWx0c0RldGFpbCgpCiAgICAgcmV0dXJuIHsKICAgICAgICAgJ2J1aWxkZXJOYW1lJzog
ZmFpbHVyZURldGFpbHMuYXR0cihjb25maWcua0J1aWxkZXJOYW1lQXR0ciksCiAgICAgICAgICd0
ZXN0TmFtZSc6IGZhaWx1cmVEZXRhaWxzLmF0dHIoY29uZmlnLmtUZXN0TmFtZUF0dHIpLAotICAg
ICAgICAnZmFpbHVyZVR5cGVMaXN0JzogZmFpbHVyZURldGFpbHMuYXR0cihjb25maWcua0ZhaWx1
cmVUeXBlc0F0dHIpLnNwbGl0KCcgJyksCisgICAgICAgICdmYWlsdXJlVHlwZUxpc3QnOiByZXN1
bHRzLmZhaWx1cmVUeXBlTGlzdChmYWlsdXJlRGV0YWlscy5hdHRyKGNvbmZpZy5rRmFpbHVyZVR5
cGVzQXR0cikpLAogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3JlYmFz
ZWxpbmUuaHRtbCBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9yZWJhc2VsaW5lLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODZmYWIyNzBhNmRmMDBlODExNjE5YjZmMWJhYjkyYWIwZjgwMjdhYQotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9yZWJhc2VsaW5lLmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8IS0tCitDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2FyZSBtZXQ6CisxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisK
K1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKK0FORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCitCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCitDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCitJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKK0FSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKK1RIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5HYXJkZW4tTy1NYXRp
YyBSZWJhc2VsaW5lPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibWFpbi5j
c3MiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2FqYXguZ29vZ2xlYXBp
cy5jb20vYWpheC9saWJzL2pxdWVyeXVpLzEuOC4xNS90aGVtZXMvYmFzZS9qcXVlcnktdWkuY3Nz
Ij4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlz
LmNvbS9hamF4L2xpYnMvanF1ZXJ5LzEuNi4yL2pxdWVyeS5taW4uanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5dWkv
MS44LjE1L2pxdWVyeS11aS5taW4uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImNvbmZpZy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0ibmV0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjaGVja291dC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzdWx0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0idWkuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InVpL3Jlc3VsdHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Im1vZGVsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjb250cm9sbGVycy9yZWJh
c2VsaW5lLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9yZXN1bHRzLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Jlc3VsdHMuanMKaW5kZXgg
YzU1ODdiMGUxZjU3ZmFkOWQxODllODA1ZTdmN2VkZGNhMjI1YjAwYy4uMmY1MWQ5NTdjYjU1NTQ3
YzY1OWRkNTAyOTkyNzE1ZTBkYmU5ZmI3YiAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Jl
c3VsdHMuanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Jlc3VsdHMuanMKQEAgLTE2Myw2ICsxNjMs
MTEgQEAgcmVzdWx0cy5mYWlsdXJlVHlwZVRvRXh0ZW5zaW9uTGlzdCA9IGZ1bmN0aW9uKGZhaWx1
cmVUeXBlKQogICAgIH0KIH07CiAKK3Jlc3VsdHMuZmFpbHVyZVR5cGVMaXN0ID0gZnVuY3Rpb24o
ZmFpbHVyZUJsb2IpCit7CisgICAgcmV0dXJuIGZhaWx1cmVCbG9iLnNwbGl0KCcgJyk7Cit9Owor
CiByZXN1bHRzLmNhblJlYmFzZWxpbmUgPSBmdW5jdGlvbihmYWlsdXJlVHlwZUxpc3QpCiB7CiAg
ICAgcmV0dXJuIGZhaWx1cmVUeXBlTGlzdC5zb21lKGZ1bmN0aW9uKGVsZW1lbnQpIHsKQEAgLTIw
NSwxOSArMjEwLDI5IEBAIGZ1bmN0aW9uIGFkZEltcGxpZWRFeHBlY3RhdGlvbnMocmVzdWx0c0xp
c3QpCiAKIHJlc3VsdHMudW5leHBlY3RlZFJlc3VsdHMgPSBmdW5jdGlvbihyZXN1bHROb2RlKQog
ewotICAgIHZhciBhY3R1YWxSZXN1bHRzID0gcmVzdWx0Tm9kZS5hY3R1YWwuc3BsaXQoJyAnKTsK
LSAgICB2YXIgZXhwZWN0ZWRSZXN1bHRzID0gYWRkSW1wbGllZEV4cGVjdGF0aW9ucyhyZXN1bHRO
b2RlLmV4cGVjdGVkLnNwbGl0KCcgJykpCisgICAgdmFyIGFjdHVhbFJlc3VsdHMgPSByZXN1bHRz
LmZhaWx1cmVUeXBlTGlzdChyZXN1bHROb2RlLmFjdHVhbCk7CisgICAgdmFyIGV4cGVjdGVkUmVz
dWx0cyA9IGFkZEltcGxpZWRFeHBlY3RhdGlvbnMocmVzdWx0cy5mYWlsdXJlVHlwZUxpc3QocmVz
dWx0Tm9kZS5leHBlY3RlZCkpCiAKICAgICByZXR1cm4gJC5ncmVwKGFjdHVhbFJlc3VsdHMsIGZ1
bmN0aW9uKHJlc3VsdCkgewogICAgICAgICByZXR1cm4gZXhwZWN0ZWRSZXN1bHRzLmluZGV4T2Yo
cmVzdWx0KSA9PSAtMTsKICAgICB9KTsKIH07CiAKK2Z1bmN0aW9uIGlzRXhwZWN0ZWRPclVuZXhw
ZWN0ZWRGYWlsdXJlKHJlc3VsdE5vZGUpCit7CisgICAgaWYgKCFyZXN1bHROb2RlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgdmFyIGFjdHVhbFJlc3VsdHMgPSByZXN1bHRzLmZhaWx1cmVU
eXBlTGlzdChyZXN1bHROb2RlLmFjdHVhbCk7CisgICAgaWYgKGFueUlzU3VjY2VzcyhhY3R1YWxS
ZXN1bHRzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBhbnlJc0ZhaWx1cmUo
YWN0dWFsUmVzdWx0cyk7Cit9CisKIGZ1bmN0aW9uIGlzVW5leHBlY3RlZEZhaWx1cmUocmVzdWx0
Tm9kZSkKIHsKICAgICBpZiAoIXJlc3VsdE5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoYW55SXNTdWNjZXNzKHJlc3VsdE5vZGUuYWN0dWFsLnNwbGl0KCcgJykpKQorICAgIGlm
IChhbnlJc1N1Y2Nlc3MocmVzdWx0cy5mYWlsdXJlVHlwZUxpc3QocmVzdWx0Tm9kZS5hY3R1YWwp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBhbnlJc0ZhaWx1cmUocmVzdWx0
cy51bmV4cGVjdGVkUmVzdWx0cyhyZXN1bHROb2RlKSk7CiB9CkBAIC0yMjYsNyArMjQxLDcgQEAg
ZnVuY3Rpb24gaXNVbmV4cGVjdGVkU3VjY2Vzc2VzKHJlc3VsdE5vZGUpCiB7CiAgICAgaWYgKCFy
ZXN1bHROb2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFueUlzRmFpbHVyZShy
ZXN1bHROb2RlLmFjdHVhbC5zcGxpdCgnICcpKSkKKyAgICBpZiAoYW55SXNGYWlsdXJlKHJlc3Vs
dHMuZmFpbHVyZVR5cGVMaXN0KHJlc3VsdE5vZGUuYWN0dWFsKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICByZXR1cm4gYW55SXNTdWNjZXNzKHJlc3VsdHMudW5leHBlY3RlZFJlc3VsdHMo
cmVzdWx0Tm9kZSkpOwogfQpAQCAtMjM2LDYgKzI1MSwxMSBAQCBmdW5jdGlvbiBpc1Jlc3VsdE5v
ZGUobm9kZSkKICAgICByZXR1cm4gISFub2RlLmFjdHVhbDsKIH0KIAorcmVzdWx0cy5leHBlY3Rl
ZE9yVW5leHBlY3RlZEZhaWx1cmVzID0gZnVuY3Rpb24ocmVzdWx0c1RyZWUpCit7CisgICAgcmV0
dXJuIGJhc2UuZmlsdGVyVHJlZShyZXN1bHRzVHJlZS50ZXN0cywgaXNSZXN1bHROb2RlLCBpc0V4
cGVjdGVkT3JVbmV4cGVjdGVkRmFpbHVyZSk7Cit9OworCiByZXN1bHRzLnVuZXhwZWN0ZWRGYWls
dXJlcyA9IGZ1bmN0aW9uKHJlc3VsdHNUcmVlKQogewogICAgIHJldHVybiBiYXNlLmZpbHRlclRy
ZWUocmVzdWx0c1RyZWUudGVzdHMsIGlzUmVzdWx0Tm9kZSwgaXNVbmV4cGVjdGVkRmFpbHVyZSk7
CkBAIC0yNjAsNiArMjgwLDExIEBAIGZ1bmN0aW9uIHJlc3VsdHNCeVRlc3QocmVzdWx0c0J5QnVp
bGRlciwgZmlsdGVyKQogICAgIHJldHVybiByZXN1bHRzQnlUZXN0OwogfQogCityZXN1bHRzLmV4
cGVjdGVkT3JVbmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QgPSBmdW5jdGlvbihyZXN1bHRzQnlCdWls
ZGVyKQoreworICAgIHJldHVybiByZXN1bHRzQnlUZXN0KHJlc3VsdHNCeUJ1aWxkZXIsIHJlc3Vs
dHMuZXhwZWN0ZWRPclVuZXhwZWN0ZWRGYWlsdXJlcyk7Cit9OworCiByZXN1bHRzLnVuZXhwZWN0
ZWRGYWlsdXJlc0J5VGVzdCA9IGZ1bmN0aW9uKHJlc3VsdHNCeUJ1aWxkZXIpCiB7CiAgICAgcmV0
dXJuIHJlc3VsdHNCeVRlc3QocmVzdWx0c0J5QnVpbGRlciwgcmVzdWx0cy51bmV4cGVjdGVkRmFp
bHVyZXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3VpLmpzIGIvVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL3VpLmpzCmluZGV4IGFjNzkyMTExMDBiOWFiNTVkZTMwM2U1NDEzNWU2MjQ2Y2NhOGUxMGEu
LjYxNTg0ZWVhZmNmODg0NGQzNmQ0NmZjZDYwNDQwZmY4NjU0NWNjNzkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy91aS5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvdWkuanMKQEAgLTI3LDE0
ICsyNywxNCBAQCB2YXIgdWkgPSB1aSB8fCB7fTsKIAogKGZ1bmN0aW9uICgpIHsKIAotZnVuY3Rp
b24gZGlzcGxheVVSTEZvckJ1aWxkZXIoYnVpbGRlck5hbWUpCit1aS5kaXNwbGF5VVJMRm9yQnVp
bGRlciA9IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKQogewogICAgIHJldHVybiAnaHR0cDovL2J1aWxk
LmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC93YXRlcmZhbGw/JyArICQucGFyYW0oewog
ICAgICAgICAnYnVpbGRlcic6IGJ1aWxkZXJOYW1lCiAgICAgfSk7CiB9CiAKLWZ1bmN0aW9uIGRp
c3BsYXlOYW1lRm9yQnVpbGRlcihidWlsZGVyTmFtZSkKK3VpLmRpc3BsYXlOYW1lRm9yQnVpbGRl
ciA9IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKQogewogICAgIHJldHVybiBidWlsZGVyTmFtZS5yZXBs
YWNlKC9XZWJraXQgLywgJycpOwogfQpAQCAtNTcsNyArNTcsNyBAQCB1aS5pbmZvYmFyTWVzc2Fn
ZUZvckNvbXBpbGVFcnJvcnMgPSBmdW5jdGlvbihidWlsZGVyTmFtZUxpc3QpCiAgICAgJC5lYWNo
KGJ1aWxkZXJOYW1lTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGJ1aWxkZXJOYW1lKSB7CiAgICAgICAg
IHZhciBsaXN0RWxlbWVudCA9ICQoJzxsaT48YSB0YXJnZXQ9Il9ibGFuayI+PC9hPjwvbGk+Jyk7
CiAgICAgICAgIGxpc3QuYXBwZW5kKGxpc3RFbGVtZW50KTsKLSAgICAgICAgJCgnYScsIGxpc3RF
bGVtZW50KS5hdHRyKCdocmVmJywgZGlzcGxheVVSTEZvckJ1aWxkZXIoYnVpbGRlck5hbWUpKS50
ZXh0KGRpc3BsYXlOYW1lRm9yQnVpbGRlcihidWlsZGVyTmFtZSkpOworICAgICAgICAkKCdhJywg
bGlzdEVsZW1lbnQpLmF0dHIoJ2hyZWYnLCB1aS5kaXNwbGF5VVJMRm9yQnVpbGRlcihidWlsZGVy
TmFtZSkpLnRleHQodWkuZGlzcGxheU5hbWVGb3JCdWlsZGVyKGJ1aWxkZXJOYW1lKSk7CiAgICAg
fSk7CiAKICAgICByZXR1cm4gYmxvY2s7CkBAIC05MSw3ICs5MSw3IEBAIGZ1bmN0aW9uIGJ1aWxk
ZXJUYWJsZURhdGFDZWxscyhyZXN1bHROb2Rlc0J5QnVpbGRlcikKIAogICAgICQuZWFjaChjb25m
aWcua0J1aWxkZXJzLCBmdW5jdGlvbihpbmRleCwgYnVpbGRlck5hbWUpIHsKICAgICAgICAgdmFy
IGJsb2NrID0gJCgnPHRkIGNsYXNzPSJidWlsZGVyIj48L3RkPicpOwotICAgICAgICBibG9jay5h
dHRyKCd0aXRsZScsIGRpc3BsYXlOYW1lRm9yQnVpbGRlcihidWlsZGVyTmFtZSkpOworICAgICAg
ICBibG9jay5hdHRyKCd0aXRsZScsIHVpLmRpc3BsYXlOYW1lRm9yQnVpbGRlcihidWlsZGVyTmFt
ZSkpOwogICAgICAgICBibG9jay5hdHRyKGNvbmZpZy5rQnVpbGRlck5hbWVBdHRyLCBidWlsZGVy
TmFtZSk7CiAKICAgICAgICAgaWYgKGJ1aWxkZXJOYW1lIGluIHJlc3VsdE5vZGVzQnlCdWlsZGVy
KSB7CkBAIC0xMzIsNyArMTMyLDcgQEAgdWkuZmFpbHVyZUluZm9MaXN0Rm9yU3VtbWFyeSA9IGZ1
bmN0aW9uKHRlc3RTdW1tYXJ5KQogICAgICAgICB2YXIgZmFpbHVyZVR5cGVzID0gJCh0aGlzKS5h
dHRyKGNvbmZpZy5rRmFpbHVyZVR5cGVzQXR0cik7CiAgICAgICAgIGlmICghZmFpbHVyZVR5cGVz
KQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHZhciBmYWlsdXJlVHlwZUxpc3QgPSBmYWls
dXJlVHlwZXMuc3BsaXQoJyAnKTsKKyAgICAgICAgdmFyIGZhaWx1cmVUeXBlTGlzdCA9IHJlc3Vs
dHMuZmFpbHVyZVR5cGVMaXN0KGZhaWx1cmVUeXBlcyk7CiAgICAgICAgIHZhciBidWlsZGVyTmFt
ZSA9ICQodGhpcykuYXR0cihjb25maWcua0J1aWxkZXJOYW1lQXR0cik7CiAgICAgICAgIGZhaWx1
cmVJbmZvTGlzdC5wdXNoKHsKICAgICAgICAgICAgICd0ZXN0TmFtZSc6IHRlc3ROYW1lLApkaWZm
IC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3VpL3Jlc3VsdHMuanMgYi9Ub29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
dWkvcmVzdWx0cy5qcwppbmRleCBlY2ViYmQ5NDcwNzhlMWJiZjlmZTM1MDQ0ZThlZGM0ZDcyZTJk
YzFlLi4xNmIzOTY2NWQ3NTIwYTYzZTBlN2E1NTJiNDAyYjcxMjAzMzI3M2IwIDEwMDY0NAotLS0g
YS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvdWkvcmVzdWx0cy5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvdWkv
cmVzdWx0cy5qcwpAQCAtNzAsNiArNzAsNyBAQCB1aS5yZXN1bHRzLlJlc3VsdHNHcmlkID0gYmFz
ZS5leHRlbmRzKCdkaXYnLCB7CiAgICAgfSwKICAgICBhZGRDb21wYXJpc29uOiBmdW5jdGlvbihy
ZXN1bHRUeXBlLCByZXN1bHRzVVJMc0J5S2luZCkKICAgICB7CisgICAgICAgIGNvbnNvbGUubG9n
KHJlc3VsdFR5cGUsIHJlc3VsdHNVUkxzQnlLaW5kKQogICAgICAgICB2YXIgY29tcGFyaXNvbiA9
IG5ldyB1aS5yZXN1bHRzLkNvbXBhcmlzb24oKTsKICAgICAgICAgdmFyIGNvbnN0cnVjdG9yID0g
Y29uc3RydWN0b3JGb3JSZXN1bHRUeXBlKHJlc3VsdFR5cGUpOwogCkBAIC0xMTEsNCArMTEyLDc2
IEBAIHVpLnJlc3VsdHMuUmVzdWx0c0dyaWQgPSBiYXNlLmV4dGVuZHMoJ2RpdicsIHsKICAgICB9
CiB9KTsKIAordWkucmVzdWx0cy5SZXN1bHRzRGV0YWlscyA9IGJhc2UuZXh0ZW5kcygnZGl2Jywg
eworICAgIGluaXQ6IGZ1bmN0aW9uKGNvbnRyb2xsZXIpCisgICAgeworICAgICAgICB0aGlzLmNs
YXNzTmFtZSA9ICdyZXN1bHRzLWRldGFpbCc7CisgICAgICAgIHRoaXMuX2NvbnRyb2xsZXIgPSBj
b250cm9sbGVyOworICAgIH0sCisgICAgc2hvdzogZnVuY3Rpb24oZmFpbHVyZUluZm8pIHsKKyAg
ICAgICAgY29uc29sZS5sb2coZmFpbHVyZUluZm8pOworICAgICAgICB0aGlzLl9jb250cm9sbGVy
LmZldGNoUmVzdWx0c1VSTHMoZmFpbHVyZUluZm8sIGZ1bmN0aW9uKHJlc3VsdHNVUkxzKSB7Cisg
ICAgICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHRzVVJMcyk7CisgICAgICAgICAgICB2YXIgcmVz
dWx0c0dyaWQgPSBuZXcgdWkucmVzdWx0cy5SZXN1bHRzR3JpZCgpOworICAgICAgICAgICAgcmVz
dWx0c0dyaWQuYWRkUmVzdWx0cyhyZXN1bHRzVVJMcyk7CisgICAgICAgICAgICAkKHRoaXMpLmVt
cHR5KCkuYXBwZW5kKHJlc3VsdHNHcmlkKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICB9
LAorfSk7CisKK3VpLnJlc3VsdHMuQnVpbGRlclNlbGVjdG9yID0gYmFzZS5leHRlbmRzKCd1bCcs
IHsKKyAgICBpbml0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmNsYXNzTmFtZSA9
ICdidWlsZGVyLXNlbGVjdG9yJzsKKyAgICB9LAorICAgIHNob3c6IGZ1bmN0aW9uKGJ1aWxkZXJO
YW1lTGlzdCkgeworICAgICAgICBidWlsZGVyTmFtZUxpc3QuZm9yRWFjaChmdW5jdGlvbihidWls
ZGVyTmFtZSkgeworICAgICAgICAgICAgdmFyIGJ1aWxkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnbGknKTsKKyAgICAgICAgICAgIGJ1aWxkZXJFbGVtZW50LmlubmVySFRNTCA9
ICc8YSBocmVmPSJqYXZhc2NyaXB0OjsiPjwvYT4nOworICAgICAgICAgICAgJCgnYScsIGJ1aWxk
ZXJFbGVtZW50KS50ZXh0KHVpLmRpc3BsYXlOYW1lRm9yQnVpbGRlcihidWlsZGVyTmFtZSkpLmJp
bmQoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGhpcy5vbkJ1aWxkZXJT
ZWxlY3RlZCAmJiB0aGlzLm9uQnVpbGRlclNlbGVjdGVkKGJ1aWxkZXJOYW1lKTsKKyAgICAgICAg
ICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGJ1aWxkZXJF
bGVtZW50KTsKKyAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICB9LAorICAgIG9uQnVpbGRlclNl
bGVjdGVkOiBmdW5jdGlvbihidWlsZGVyTmFtZSkgeyB9Cit9KTsKKwordWkucmVzdWx0cy5WaWV3
ID0gYmFzZS5leHRlbmRzKCdkaXYnLCB7CisgICAgaW5pdDogZnVuY3Rpb24oY29udHJvbGxlcikK
KyAgICB7CisgICAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ3Jlc3VsdHMtdmlldyc7CisgICAgICAg
IHRoaXMuX2J1aWxkZXJTZWxlY3RvciA9IG5ldyB1aS5yZXN1bHRzLkJ1aWxkZXJTZWxlY3Rvcigp
OworICAgICAgICB0aGlzLl9yZXN1bHRzRGV0YWlscyA9IG5ldyB1aS5yZXN1bHRzLlJlc3VsdHNE
ZXRhaWxzKGNvbnRyb2xsZXIpOworICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHRoaXMuX2J1aWxk
ZXJTZWxlY3Rvcik7CisgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQodGhpcy5fcmVzdWx0c0RldGFp
bHMpOworICAgIH0sCisgICAgc2hvdzogZnVuY3Rpb24odGVzdE5hbWUsIHJlc3VsdHNCeUJ1aWxk
ZXIpCisgICAgeworICAgICAgICB0aGlzLl9idWlsZGVyU2VsZWN0b3Iuc2hvdyhPYmplY3Qua2V5
cyhyZXN1bHRzQnlCdWlsZGVyKSk7CisgICAgICAgIHRoaXMuX2J1aWxkZXJTZWxlY3Rvci5vbkJ1
aWxkZXJTZWxlY3RlZCA9IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKSB7CisgICAgICAgICAgICB0aGlz
Ll9yZXN1bHRzRGV0YWlscy5zaG93KHsKKyAgICAgICAgICAgICAgICAndGVzdE5hbWUnOiB0ZXN0
TmFtZSwKKyAgICAgICAgICAgICAgICAnYnVpbGRlck5hbWUnOiBidWlsZGVyTmFtZSwKKyAgICAg
ICAgICAgICAgICAnZmFpbHVyZVR5cGVMaXN0JzogcmVzdWx0cy5mYWlsdXJlVHlwZUxpc3QocmVz
dWx0c0J5QnVpbGRlcltidWlsZGVyTmFtZV0uYWN0dWFsKQorICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0uYmluZCh0aGlzKTsKKyAgICB9Cit9KTsKKwordWkucmVzdWx0cy5DaG9vc2VyID0gYmFz
ZS5leHRlbmRzKCdkaXYnLCB7CisgICAgaW5pdDogZnVuY3Rpb24odGVzdE5hbWVMaXN0KQorICAg
IHsKKyAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAncmVzdWx0LXNlbGVjdG9yJzsKKyAgICAgICAg
dGhpcy5pbm5lckhUTUwgPSAnPGxhYmVsPlRlc3QgbmFtZTogPGlucHV0IHR5cGU9InRleHQiPjwv
bGFiZWw+JzsKKyAgICAgICAgJCgnaW5wdXQnLCB0aGlzKS5hdXRvY29tcGxldGUoeworICAgICAg
ICAgICAgc291cmNlOiB0ZXN0TmFtZUxpc3QsCisgICAgICAgICAgICBzZWxlY3Q6IGZ1bmN0aW9u
KGV2ZW50LCBzZWxlY3RlZCkgeworICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3QgJiYgdGhp
cy5vblNlbGVjdChzZWxlY3RlZC5pdGVtLnZhbHVlKTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlz
KQorICAgICAgICB9KTsKKyAgICB9LAorICAgIG9uU2VsZWN0OiBmdW5jdGlvbih0ZXN0TmFtZSkg
eyB9Cit9KTsKKwogfSkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA3Y2NiYzU1ZTZhYTI0NTdhYTMzMTYyYjg2YWM4Mzk3M2Q5MzZkZjkwLi4x
M2EzYTQ2ZWY2MzNlY2ZjZjA1OGViMmZjZDIwMTUxODFiMDMxYzkyIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjAgQEAKIDIwMTEt
MDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAorICAgICAgICBnYXJkZW4t
by1tYXRpYyBzaG91bGQgYmUgYWJsZSB0byByZWJhc2VsaW5lIGV4cGVjdGVkIGZhaWx1cmVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjIwNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L2NvbnRyb2xsZXJzL3JlYmFzZWxpbmUuanM6IEFkZGVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9t
YWluLmNzczoKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5qczoKKyAgICAgICAgKiBCdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvcmViYXNlbGluZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmVzdWx0cy5q
czoKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvdWkuanM6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3VpL3Jl
c3VsdHMuanM6CisKKzIwMTEtMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
KwogICAgICAgICBTd2l0Y2ggcmVzdWx0cyBkZXRhaWwgdmlldyBvdmVyIHRvIG5ldy1zdHlsZSBv
YmplY3Qtb3JpZW50ZWQgVUkgd2lkZ2V0cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjYyMDAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103971</attachid>
            <date>2011-08-15 16:03:33 -0700</date>
            <delta_ts>2011-08-17 11:15:06 -0700</delta_ts>
            <desc>more work</desc>
            <filename>bug-66204-20110815160332.patch</filename>
            <type>text/plain</type>
            <size>19017</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMwMjkKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9j
b250cm9sbGVycy9yZWJhc2VsaW5lLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2NvbnRyb2xsZXJzL3Jl
YmFzZWxpbmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ5ZGZkN2VkZjA3ZjAzMDM5YmIxYTg2ZTNjYzg5NTAx
YTBmNWQxZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jb250cm9sbGVycy9y
ZWJhc2VsaW5lLmpzCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworKGZ1bmN0aW9uKCkg
eworCisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgZ28gc29tZXdoZXJlIG1vcmUgZ2VuZXJh
bC4KK1Jlc3VsdHNWaWV3Q29udHJvbGxlciA9IGJhc2UuZXh0ZW5kcyhPYmplY3QsIHsKKyAgICBp
bml0OiBmdW5jdGlvbihyZXN1bHRzQnlUZXN0KQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVzdWx0
c0J5VGVzdCA9IHJlc3VsdHNCeVRlc3Q7CisgICAgfSwKKyAgICBfZmFpbHVyZUluZm9Gb3JUZXN0
QW5kQnVpbGRlcjogZnVuY3Rpb24odGVzdE5hbWUsIGJ1aWxkZXJOYW1lKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgICd0ZXN0TmFtZSc6IHRlc3ROYW1lLAorICAgICAgICAg
ICAgJ2J1aWxkZXJOYW1lJzogYnVpbGRlck5hbWUsCisgICAgICAgICAgICAnZmFpbHVyZVR5cGVM
aXN0JzogcmVzdWx0cy5mYWlsdXJlVHlwZUxpc3QodGhpcy5fcmVzdWx0c0J5VGVzdFt0ZXN0TmFt
ZV1bYnVpbGRlck5hbWVdLmFjdHVhbCkKKyAgICAgICAgfQorICAgIH0sCisgICAgb25UZXN0U2Vs
ZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50LCB0ZXN0TmFtZSkKKyAgICB7CisgICAgICAgICAgICB2YXIg
YnVpbGRlck5hbWVMaXN0ID0gT2JqZWN0LmtleXModGhpcy5fcmVzdWx0c0J5VGVzdFt0ZXN0TmFt
ZV0pOworICAgICAgICAgICAgdmlldy5zZXRCdWlsZGVyTGlzdChidWlsZGVyTmFtZUxpc3QpCisg
ICAgICAgICAgICB2aWV3LnNob3dSZXN1bHRzKHRoaXMuX2ZhaWx1cmVJbmZvRm9yVGVzdEFuZEJ1
aWxkZXIodGVzdE5hbWUsIGJ1aWxkZXJOYW1lTGlzdFswXSkpOworICAgIH0sCisgICAgb25CdWls
ZGVyU2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50LCBidWlsZGVyTmFtZSkgeworICAgICAgICB2aWV3
LnNob3dSZXN1bHRzKHRoaXMuX2ZhaWx1cmVJbmZvRm9yVGVzdEFuZEJ1aWxkZXIodmlldy5jdXJy
ZW50VGVzdE5hbWUoKSwgYnVpbGRlck5hbWUpKTsKKyAgICB9LAorICAgIHJlZ2lzdGVyVmlldzog
ZnVuY3Rpb24odmlldykKKyAgICB7CisgICAgICAgIHZpZXcuc2V0VGVzdExpc3QoT2JqZWN0Lmtl
eXModGhpcy5fcmVzdWx0c0J5VGVzdCkpOworICAgICAgICAkKHZpZXcpLmJpbmQoJ3Rlc3RzZWxl
Y3RlZCcsIHRoaXMub25UZXN0U2VsZWN0ZWQuYmluZCh0aGlzKSk7CisgICAgICAgICQodmlldyku
YmluZCgnYnVpbGRlcnNlbGVjdGVkJywgdGhpcy5vbkJ1aWxkZXJTZWxlY3RlZC5iaW5kKHRoaXMp
KTsKKyAgICB9Cit9KTsKKworJChmdW5jdGlvbigpIHsKKyAgICBtb2RlbC51cGRhdGVSZXN1bHRz
QnlCdWlsZGVyKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgcmVzdWx0c1ZpZXcgPSBuZXcgdWku
cmVzdWx0cy5WaWV3KHsKKyAgICAgICAgICAgIGZldGNoUmVzdWx0c1VSTHM6IHJlc3VsdHMuZmV0
Y2hSZXN1bHRzVVJMcworICAgICAgICB9KTsKKworICAgICAgICB2YXIgZmFpbHVyZUJ5VGVzdCA9
IHJlc3VsdHMuZXhwZWN0ZWRPclVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdChtb2RlbC5zdGF0ZS5y
ZXN1bHRzQnlCdWlsZGVyKTsKKyAgICAgICAgdmFyIGNvbnRyb2xsZXIgPSBuZXcgUmVzdWx0c1Zp
ZXdDb250cm9sbGVyKGZhaWx1cmVCeVRlc3QpOworICAgICAgICBjb250cm9sbGVyLnJlZ2lzdGVy
VmlldyhyZXN1bHRzVmlldyk7CisKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChy
ZXN1bHRzVmlldyk7CisgICAgfSk7Cit9KTsKKworfSkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9tYWluLmNzcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmNzcwppbmRleCA2MDBhMGJk
NWQ1Mzc5OWZkYmY1YzgwNmU0MzVkNDI4NmNmMWUyNGI1Li5kYTkyMjJiMjg2OTU1MTJiZjcxYWYy
MGIwZjZlNjRkMmZkNjBjNTYwIDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5jc3MK
KysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uY3NzCkBAIC0yNzMsMjIgKzI3MywxNiBAQCBidXR0
b24uZGVmYXVsdDpob3ZlciB7CiAKIC8qKiogcmVzdWx0cy1kZXRhaWwgKioqLwogCi0ucmVzdWx0
cy1kZXRhaWwgewotICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAgcG9zaXRpb246IGZpeGVkOworLnJl
c3VsdHMtdmlldyB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKLSAgICB0b3A6IDI1
JTsKLSAgICBsZWZ0OiAwcHg7Ci0gICAgcmlnaHQ6IDBweDsKLSAgICBib3R0b206IDBweDsKIH0K
IAotLnJlc3VsdHMtZGV0YWlsIC50b29sYmFyIHsKKy5yZXN1bHRzLXZpZXcgLnRvb2xiYXIgewog
ICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjYzZjNmM2OwogICAgIGJvcmRlci1ib3R0b206IDFw
eCBzb2xpZCAjYzZjNmM2OwogfQogCi0ucmVzdWx0cy1kZXRhaWwgLnRvb2xiYXIgLnN0YXR1cyB7
CisucmVzdWx0cy12aWV3IC50b29sYmFyIC5zdGF0dXMgewogICAgIGZvbnQtc2l6ZTogMTFweDsK
ICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICBoZWlnaHQ6IDI5cHg7CkBAIC0yOTcsMjAgKzI5
MSwyMCBAQCBidXR0b24uZGVmYXVsdDpob3ZlciB7CiAgICAgcGFkZGluZzogMCA4cHg7CiB9CiAK
LS5yZXN1bHRzLWRldGFpbCAudG9vbGJhciAuc3RhdHVzIC5idWlsZGVyLW5hbWUgeworLnJlc3Vs
dHMtdmlldyAudG9vbGJhciAuc3RhdHVzIC5idWlsZGVyLW5hbWUgewogICAgIGZvbnQtd2VpZ2h0
OiBub3JtYWw7CiAgICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogfQogCi0ucmVzdWx0cy1kZXRhaWwg
LnRvb2xiYXIgLnN0YXR1cyAuc2VsZWN0ZWQgeworLnJlc3VsdHMtdmlldyAudG9vbGJhciAuc3Rh
dHVzIC5zZWxlY3RlZCB7CiAgICAgZm9udC1zdHlsZTogaXRhbGljOwogfQogCi0ucmVzdWx0cy1k
ZXRhaWwgLnRvb2xiYXIgLmFjdGlvbnMgeworLnJlc3VsdHMtdmlldyAudG9vbGJhciAuYWN0aW9u
cyB7CiAgICAgZmxvYXQ6IHJpZ2h0OwogfQogCi0ucmVzdWx0cy1kZXRhaWwgLmNvbnRlbnQgewor
LnJlc3VsdHMtZGV0YWlsIHRkIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanMgYi9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFp
bi5qcwppbmRleCA4MjhlZjIzNDQyYzJjNzlkYjIxNTdkMDQ5MmNhNTg2MDk1ZjE1YTg4Li40NDQ3
YjBmZGJmYjNhNzQxNDkwODE5ZDU5YzQ3YjZkYzUzMzkzOGE4IDEwMDY0NAotLS0gYS9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvbWFpbi5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5qcwpAQCAtMTcxLDcg
KzE3MSw3IEBAIGZ1bmN0aW9uIGZhaWx1cmVJbmZvRnJvbVJlc3VsdHNEZXRhaWwoKQogICAgIHJl
dHVybiB7CiAgICAgICAgICdidWlsZGVyTmFtZSc6IGZhaWx1cmVEZXRhaWxzLmF0dHIoY29uZmln
LmtCdWlsZGVyTmFtZUF0dHIpLAogICAgICAgICAndGVzdE5hbWUnOiBmYWlsdXJlRGV0YWlscy5h
dHRyKGNvbmZpZy5rVGVzdE5hbWVBdHRyKSwKLSAgICAgICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IGZh
aWx1cmVEZXRhaWxzLmF0dHIoY29uZmlnLmtGYWlsdXJlVHlwZXNBdHRyKS5zcGxpdCgnICcpLAor
ICAgICAgICAnZmFpbHVyZVR5cGVMaXN0JzogcmVzdWx0cy5mYWlsdXJlVHlwZUxpc3QoZmFpbHVy
ZURldGFpbHMuYXR0cihjb25maWcua0ZhaWx1cmVUeXBlc0F0dHIpKSwKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9yZWJhc2VsaW5lLmh0bWwgYi9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvcmViYXNlbGluZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ZmFiMjcwYTZkZjAwZTgxMTYxOWI2ZjFi
YWI5MmFiMGY4MDI3YWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmViYXNl
bGluZS5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCithcmUgbWV0OgorMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKzIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCitBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKK1RIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKK1BVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKK1NVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KK0NPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCitB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCitUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCistLT4KKzxodG1s
PgorPGhlYWQ+Cis8dGl0bGU+R2FyZGVuLU8tTWF0aWMgUmViYXNlbGluZTwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im1haW4uY3NzIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iaHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnl1aS8x
LjguMTUvdGhlbWVzL2Jhc2UvanF1ZXJ5LXVpLmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjYu
Mi9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29v
Z2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeXVpLzEuOC4xNS9qcXVlcnktdWkubWluLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjb25maWcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
ImJhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Im5ldC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iY2hlY2tvdXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc3VsdHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InVpLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJ1
aS9yZXN1bHRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJtb2RlbC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iY29udHJvbGxlcnMvcmViYXNlbGluZS5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmVzdWx0cy5qcyBiL1Rv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9yZXN1bHRzLmpzCmluZGV4IGM1NTg3YjBlMWY1N2ZhZDlkMTg5ZTgwNWU3
ZjdlZGRjYTIyNWIwMGMuLjJmNTFkOTU3Y2I1NTU0N2M2NTlkZDUwMjk5MjcxNWUwZGJlOWZiN2Ig
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9yZXN1bHRzLmpzCisrKyBiL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9yZXN1bHRzLmpzCkBAIC0xNjMsNiArMTYzLDExIEBAIHJlc3VsdHMuZmFpbHVyZVR5cGVU
b0V4dGVuc2lvbkxpc3QgPSBmdW5jdGlvbihmYWlsdXJlVHlwZSkKICAgICB9CiB9OwogCityZXN1
bHRzLmZhaWx1cmVUeXBlTGlzdCA9IGZ1bmN0aW9uKGZhaWx1cmVCbG9iKQoreworICAgIHJldHVy
biBmYWlsdXJlQmxvYi5zcGxpdCgnICcpOworfTsKKwogcmVzdWx0cy5jYW5SZWJhc2VsaW5lID0g
ZnVuY3Rpb24oZmFpbHVyZVR5cGVMaXN0KQogewogICAgIHJldHVybiBmYWlsdXJlVHlwZUxpc3Qu
c29tZShmdW5jdGlvbihlbGVtZW50KSB7CkBAIC0yMDUsMTkgKzIxMCwyOSBAQCBmdW5jdGlvbiBh
ZGRJbXBsaWVkRXhwZWN0YXRpb25zKHJlc3VsdHNMaXN0KQogCiByZXN1bHRzLnVuZXhwZWN0ZWRS
ZXN1bHRzID0gZnVuY3Rpb24ocmVzdWx0Tm9kZSkKIHsKLSAgICB2YXIgYWN0dWFsUmVzdWx0cyA9
IHJlc3VsdE5vZGUuYWN0dWFsLnNwbGl0KCcgJyk7Ci0gICAgdmFyIGV4cGVjdGVkUmVzdWx0cyA9
IGFkZEltcGxpZWRFeHBlY3RhdGlvbnMocmVzdWx0Tm9kZS5leHBlY3RlZC5zcGxpdCgnICcpKQor
ICAgIHZhciBhY3R1YWxSZXN1bHRzID0gcmVzdWx0cy5mYWlsdXJlVHlwZUxpc3QocmVzdWx0Tm9k
ZS5hY3R1YWwpOworICAgIHZhciBleHBlY3RlZFJlc3VsdHMgPSBhZGRJbXBsaWVkRXhwZWN0YXRp
b25zKHJlc3VsdHMuZmFpbHVyZVR5cGVMaXN0KHJlc3VsdE5vZGUuZXhwZWN0ZWQpKQogCiAgICAg
cmV0dXJuICQuZ3JlcChhY3R1YWxSZXN1bHRzLCBmdW5jdGlvbihyZXN1bHQpIHsKICAgICAgICAg
cmV0dXJuIGV4cGVjdGVkUmVzdWx0cy5pbmRleE9mKHJlc3VsdCkgPT0gLTE7CiAgICAgfSk7CiB9
OwogCitmdW5jdGlvbiBpc0V4cGVjdGVkT3JVbmV4cGVjdGVkRmFpbHVyZShyZXN1bHROb2RlKQor
eworICAgIGlmICghcmVzdWx0Tm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHZhciBh
Y3R1YWxSZXN1bHRzID0gcmVzdWx0cy5mYWlsdXJlVHlwZUxpc3QocmVzdWx0Tm9kZS5hY3R1YWwp
OworICAgIGlmIChhbnlJc1N1Y2Nlc3MoYWN0dWFsUmVzdWx0cykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gYW55SXNGYWlsdXJlKGFjdHVhbFJlc3VsdHMpOworfQorCiBmdW5j
dGlvbiBpc1VuZXhwZWN0ZWRGYWlsdXJlKHJlc3VsdE5vZGUpCiB7CiAgICAgaWYgKCFyZXN1bHRO
b2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFueUlzU3VjY2VzcyhyZXN1bHRO
b2RlLmFjdHVhbC5zcGxpdCgnICcpKSkKKyAgICBpZiAoYW55SXNTdWNjZXNzKHJlc3VsdHMuZmFp
bHVyZVR5cGVMaXN0KHJlc3VsdE5vZGUuYWN0dWFsKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXR1cm4gYW55SXNGYWlsdXJlKHJlc3VsdHMudW5leHBlY3RlZFJlc3VsdHMocmVzdWx0
Tm9kZSkpOwogfQpAQCAtMjI2LDcgKzI0MSw3IEBAIGZ1bmN0aW9uIGlzVW5leHBlY3RlZFN1Y2Nl
c3NlcyhyZXN1bHROb2RlKQogewogICAgIGlmICghcmVzdWx0Tm9kZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmIChhbnlJc0ZhaWx1cmUocmVzdWx0Tm9kZS5hY3R1YWwuc3BsaXQoJyAn
KSkpCisgICAgaWYgKGFueUlzRmFpbHVyZShyZXN1bHRzLmZhaWx1cmVUeXBlTGlzdChyZXN1bHRO
b2RlLmFjdHVhbCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIGFueUlzU3Vj
Y2VzcyhyZXN1bHRzLnVuZXhwZWN0ZWRSZXN1bHRzKHJlc3VsdE5vZGUpKTsKIH0KQEAgLTIzNiw2
ICsyNTEsMTEgQEAgZnVuY3Rpb24gaXNSZXN1bHROb2RlKG5vZGUpCiAgICAgcmV0dXJuICEhbm9k
ZS5hY3R1YWw7CiB9CiAKK3Jlc3VsdHMuZXhwZWN0ZWRPclVuZXhwZWN0ZWRGYWlsdXJlcyA9IGZ1
bmN0aW9uKHJlc3VsdHNUcmVlKQoreworICAgIHJldHVybiBiYXNlLmZpbHRlclRyZWUocmVzdWx0
c1RyZWUudGVzdHMsIGlzUmVzdWx0Tm9kZSwgaXNFeHBlY3RlZE9yVW5leHBlY3RlZEZhaWx1cmUp
OworfTsKKwogcmVzdWx0cy51bmV4cGVjdGVkRmFpbHVyZXMgPSBmdW5jdGlvbihyZXN1bHRzVHJl
ZSkKIHsKICAgICByZXR1cm4gYmFzZS5maWx0ZXJUcmVlKHJlc3VsdHNUcmVlLnRlc3RzLCBpc1Jl
c3VsdE5vZGUsIGlzVW5leHBlY3RlZEZhaWx1cmUpOwpAQCAtMjYwLDYgKzI4MCwxMSBAQCBmdW5j
dGlvbiByZXN1bHRzQnlUZXN0KHJlc3VsdHNCeUJ1aWxkZXIsIGZpbHRlcikKICAgICByZXR1cm4g
cmVzdWx0c0J5VGVzdDsKIH0KIAorcmVzdWx0cy5leHBlY3RlZE9yVW5leHBlY3RlZEZhaWx1cmVz
QnlUZXN0ID0gZnVuY3Rpb24ocmVzdWx0c0J5QnVpbGRlcikKK3sKKyAgICByZXR1cm4gcmVzdWx0
c0J5VGVzdChyZXN1bHRzQnlCdWlsZGVyLCByZXN1bHRzLmV4cGVjdGVkT3JVbmV4cGVjdGVkRmFp
bHVyZXMpOworfTsKKwogcmVzdWx0cy51bmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QgPSBmdW5jdGlv
bihyZXN1bHRzQnlCdWlsZGVyKQogewogICAgIHJldHVybiByZXN1bHRzQnlUZXN0KHJlc3VsdHNC
eUJ1aWxkZXIsIHJlc3VsdHMudW5leHBlY3RlZEZhaWx1cmVzKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy91aS5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy91aS5qcwppbmRleCBhYzc5MjExMTAw
YjlhYjU1ZGUzMDNlNTQxMzVlNjI0NmNjYThlMTBhLi42MTU4NGVlYWZjZjg4NDRkMzZkNDZmY2Q2
MDQ0MGZmODY1NDVjYzc5IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvdWkuanMKKysrIGIv
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3VpLmpzCkBAIC0yNywxNCArMjcsMTQgQEAgdmFyIHVpID0gdWkgfHwg
e307CiAKIChmdW5jdGlvbiAoKSB7CiAKLWZ1bmN0aW9uIGRpc3BsYXlVUkxGb3JCdWlsZGVyKGJ1
aWxkZXJOYW1lKQordWkuZGlzcGxheVVSTEZvckJ1aWxkZXIgPSBmdW5jdGlvbihidWlsZGVyTmFt
ZSkKIHsKICAgICByZXR1cm4gJ2h0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53
ZWJraXQvd2F0ZXJmYWxsPycgKyAkLnBhcmFtKHsKICAgICAgICAgJ2J1aWxkZXInOiBidWlsZGVy
TmFtZQogICAgIH0pOwogfQogCi1mdW5jdGlvbiBkaXNwbGF5TmFtZUZvckJ1aWxkZXIoYnVpbGRl
ck5hbWUpCit1aS5kaXNwbGF5TmFtZUZvckJ1aWxkZXIgPSBmdW5jdGlvbihidWlsZGVyTmFtZSkK
IHsKICAgICByZXR1cm4gYnVpbGRlck5hbWUucmVwbGFjZSgvV2Via2l0IC8sICcnKTsKIH0KQEAg
LTU3LDcgKzU3LDcgQEAgdWkuaW5mb2Jhck1lc3NhZ2VGb3JDb21waWxlRXJyb3JzID0gZnVuY3Rp
b24oYnVpbGRlck5hbWVMaXN0KQogICAgICQuZWFjaChidWlsZGVyTmFtZUxpc3QsIGZ1bmN0aW9u
KGluZGV4LCBidWlsZGVyTmFtZSkgewogICAgICAgICB2YXIgbGlzdEVsZW1lbnQgPSAkKCc8bGk+
PGEgdGFyZ2V0PSJfYmxhbmsiPjwvYT48L2xpPicpOwogICAgICAgICBsaXN0LmFwcGVuZChsaXN0
RWxlbWVudCk7Ci0gICAgICAgICQoJ2EnLCBsaXN0RWxlbWVudCkuYXR0cignaHJlZicsIGRpc3Bs
YXlVUkxGb3JCdWlsZGVyKGJ1aWxkZXJOYW1lKSkudGV4dChkaXNwbGF5TmFtZUZvckJ1aWxkZXIo
YnVpbGRlck5hbWUpKTsKKyAgICAgICAgJCgnYScsIGxpc3RFbGVtZW50KS5hdHRyKCdocmVmJywg
dWkuZGlzcGxheVVSTEZvckJ1aWxkZXIoYnVpbGRlck5hbWUpKS50ZXh0KHVpLmRpc3BsYXlOYW1l
Rm9yQnVpbGRlcihidWlsZGVyTmFtZSkpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIGJsb2NrOwpA
QCAtOTEsNyArOTEsNyBAQCBmdW5jdGlvbiBidWlsZGVyVGFibGVEYXRhQ2VsbHMocmVzdWx0Tm9k
ZXNCeUJ1aWxkZXIpCiAKICAgICAkLmVhY2goY29uZmlnLmtCdWlsZGVycywgZnVuY3Rpb24oaW5k
ZXgsIGJ1aWxkZXJOYW1lKSB7CiAgICAgICAgIHZhciBibG9jayA9ICQoJzx0ZCBjbGFzcz0iYnVp
bGRlciI+PC90ZD4nKTsKLSAgICAgICAgYmxvY2suYXR0cigndGl0bGUnLCBkaXNwbGF5TmFtZUZv
ckJ1aWxkZXIoYnVpbGRlck5hbWUpKTsKKyAgICAgICAgYmxvY2suYXR0cigndGl0bGUnLCB1aS5k
aXNwbGF5TmFtZUZvckJ1aWxkZXIoYnVpbGRlck5hbWUpKTsKICAgICAgICAgYmxvY2suYXR0cihj
b25maWcua0J1aWxkZXJOYW1lQXR0ciwgYnVpbGRlck5hbWUpOwogCiAgICAgICAgIGlmIChidWls
ZGVyTmFtZSBpbiByZXN1bHROb2Rlc0J5QnVpbGRlcikgewpAQCAtMTMyLDcgKzEzMiw3IEBAIHVp
LmZhaWx1cmVJbmZvTGlzdEZvclN1bW1hcnkgPSBmdW5jdGlvbih0ZXN0U3VtbWFyeSkKICAgICAg
ICAgdmFyIGZhaWx1cmVUeXBlcyA9ICQodGhpcykuYXR0cihjb25maWcua0ZhaWx1cmVUeXBlc0F0
dHIpOwogICAgICAgICBpZiAoIWZhaWx1cmVUeXBlcykKICAgICAgICAgICAgIHJldHVybgotICAg
ICAgICB2YXIgZmFpbHVyZVR5cGVMaXN0ID0gZmFpbHVyZVR5cGVzLnNwbGl0KCcgJyk7CisgICAg
ICAgIHZhciBmYWlsdXJlVHlwZUxpc3QgPSByZXN1bHRzLmZhaWx1cmVUeXBlTGlzdChmYWlsdXJl
VHlwZXMpOwogICAgICAgICB2YXIgYnVpbGRlck5hbWUgPSAkKHRoaXMpLmF0dHIoY29uZmlnLmtC
dWlsZGVyTmFtZUF0dHIpOwogICAgICAgICBmYWlsdXJlSW5mb0xpc3QucHVzaCh7CiAgICAgICAg
ICAgICAndGVzdE5hbWUnOiB0ZXN0TmFtZSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy91
aS9yZXN1bHRzLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3VpL3Jlc3VsdHMuanMKaW5kZXggZWNlYmJk
OTQ3MDc4ZTFiYmY5ZmUzNTA0NGU4ZWRjNGQ3MmUyZGMxZS4uNDlmMjE0YTUxMzkzZDQzOTI1ZDNm
NjdkZjgwM2U3MDJkZThlYTY1YSAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3VpL3Jlc3Vs
dHMuanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3VpL3Jlc3VsdHMuanMKQEAgLTExMSw0ICsxMTEs
MTA5IEBAIHVpLnJlc3VsdHMuUmVzdWx0c0dyaWQgPSBiYXNlLmV4dGVuZHMoJ2RpdicsIHsKICAg
ICB9CiB9KTsKIAordWkucmVzdWx0cy5SZXN1bHRzRGV0YWlscyA9IGJhc2UuZXh0ZW5kcygnZGl2
JywgeworICAgIGluaXQ6IGZ1bmN0aW9uKG1vZGVsKQorICAgIHsKKyAgICAgICAgdGhpcy5jbGFz
c05hbWUgPSAncmVzdWx0cy1kZXRhaWwnOworICAgICAgICB0aGlzLl9tb2RlbCA9IG1vZGVsOwor
ICAgIH0sCisgICAgc2hvdzogZnVuY3Rpb24oZmFpbHVyZUluZm8pIHsKKyAgICAgICAgdGhpcy5f
bW9kZWwuZmV0Y2hSZXN1bHRzVVJMcyhmYWlsdXJlSW5mbywgZnVuY3Rpb24ocmVzdWx0c1VSTHMp
IHsKKyAgICAgICAgICAgIHZhciByZXN1bHRzR3JpZCA9IG5ldyB1aS5yZXN1bHRzLlJlc3VsdHNH
cmlkKCk7CisgICAgICAgICAgICByZXN1bHRzR3JpZC5hZGRSZXN1bHRzKHJlc3VsdHNVUkxzKTsK
KyAgICAgICAgICAgICQodGhpcykuZW1wdHkoKS5hcHBlbmQocmVzdWx0c0dyaWQpOworICAgICAg
ICB9LmJpbmQodGhpcykpOworICAgIH0sCit9KTsKKwordWkucmVzdWx0cy5UZXN0U2VsZWN0b3Ig
PSBiYXNlLmV4dGVuZHMoJ2lucHV0JywgeworICAgIGluaXQ6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ3Rlc3Qtc2VsZWN0b3InOworICAgICAgICB0aGlzLnR5
cGUgPSAndGV4dCc7CisgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSAnVGVzdCBuYW1lJzsKKyAg
ICB9LAorICAgIHNldFRlc3RMaXN0OiBmdW5jdGlvbih0ZXN0TmFtZUxpc3QpCisgICAgeworICAg
ICAgICAkKHRoaXMpLmF1dG9jb21wbGV0ZSh7CisgICAgICAgICAgICBzb3VyY2U6IHRlc3ROYW1l
TGlzdCwKKyAgICAgICAgICAgIHNlbGVjdDogZnVuY3Rpb24oZXZlbnQsIHNlbGVjdGVkKSB7Cisg
ICAgICAgICAgICAgICAgJCh0aGlzKS50cmlnZ2VyKCd0ZXN0c2VsZWN0ZWQnLCBbc2VsZWN0ZWQu
aXRlbS52YWx1ZV0pOworICAgICAgICAgICAgfS5iaW5kKHRoaXMpCisgICAgICAgIH0pOworICAg
IH0KK30pOworCit1aS5yZXN1bHRzLkJ1aWxkZXJTZWxlY3RvciA9IGJhc2UuZXh0ZW5kcygnc2Vs
ZWN0JywgeworICAgIGluaXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuY2xhc3NO
YW1lID0gJ2J1aWxkZXItc2VsZWN0b3InOworCisgICAgICAgICQodGhpcykuY2hhbmdlKGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA9PSAtMSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB2YXIgYnVpbGRlck5hbWUgPSB0aGlzLm9w
dGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XS52YWx1ZTsKKyAgICAgICAgICAgICQodGhpcykudHJp
Z2dlcignYnVpbGRlcnNlbGVjdGVkJywgW2J1aWxkZXJOYW1lXSk7CisgICAgICAgIH0uYmluZCh0
aGlzKSk7CisgICAgfSwKKyAgICBzaG93OiBmdW5jdGlvbihidWlsZGVyTmFtZUxpc3QpIHsKKyAg
ICAgICAgJCh0aGlzKS5lbXB0eSgpOworICAgICAgICBidWlsZGVyTmFtZUxpc3QuZm9yRWFjaChm
dW5jdGlvbihidWlsZGVyTmFtZSkgeworICAgICAgICAgICAgdmFyIGJ1aWxkZXJFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7CisgICAgICAgICAgICBidWlsZGVyRWxl
bWVudC50ZXh0Q29udGVudCA9IHVpLmRpc3BsYXlOYW1lRm9yQnVpbGRlcihidWlsZGVyTmFtZSk7
CisgICAgICAgICAgICBidWlsZGVyRWxlbWVudC52YWx1ZSA9IGJ1aWxkZXJOYW1lOworICAgICAg
ICAgICAgdGhpcy5hcHBlbmRDaGlsZChidWlsZGVyRWxlbWVudCk7CisgICAgICAgIH0uYmluZCh0
aGlzKSk7CisgICAgfQorfSk7CisKK3VpLnJlc3VsdHMuQWN0aW9ucyA9IGJhc2UuZXh0ZW5kcygn
ZGl2JywgeworICAgIGluaXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuY2xhc3NO
YW1lID0gJ2FjdGlvbnMnOworICAgICAgICB0aGlzLmlubmVySFRNTCA9ICc8YnV0dG9uIGNsYXNz
PSJyZWJhc2VsaW5lIGRlZmF1bHQiPlJlYmFzZWxpbmU8L2J1dHRvbj4nICsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0icHJldmlvdXMiPiYjOTY2NDs8L2J1dHRvbj4n
ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0ibmV4dCI+JiM5NjU0
OzwvYnV0dG9uPic7CisgICAgICAgIHRoaXMuX3JvdXRlQ2xpY2tFdmVudCgnLnJlYmFzZWxpbmUn
LCAncmViYXNlbGluZScpOworICAgICAgICB0aGlzLl9yb3V0ZUNsaWNrRXZlbnQoJy5wcmV2aW91
cycsICdwcmV2aW91cycpOworICAgICAgICB0aGlzLl9yb3V0ZUNsaWNrRXZlbnQoJy5uZXh0Jywg
J25leHQnKTsKKyAgICB9LAorICAgIF9yb3V0ZUNsaWNrRXZlbnQ6IGZ1bmN0aW9uKHNlbGVjdG9y
LCBldmVudE5hbWUpIHsKKyAgICAgICAgJChzZWxlY3RvciwgdGhpcykuYmluZCgnY2xpY2snLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICQodGhpcykudHJpZ2dlcihldmVudE5hbWUpOworICAg
ICAgICB9LmJpbmQodGhpcykpOworICAgIH0KK30pOworCit1aS5yZXN1bHRzLlZpZXcgPSBiYXNl
LmV4dGVuZHMoJ2RpdicsIHsKKyAgICBpbml0OiBmdW5jdGlvbihtb2RlbCkKKyAgICB7CisgICAg
ICAgIHRoaXMuY2xhc3NOYW1lID0gJ3Jlc3VsdHMtdmlldyc7CisgICAgICAgIHRoaXMuaW5uZXJI
VE1MID0gJzxkaXYgY2xhc3M9InRvb2xiYXIiPjwvZGl2PjxkaXYgY2xhc3M9ImNvbnRlbnQiPjwv
ZGl2Pic7CisKKyAgICAgICAgdGhpcy5fdGVzdFNlbGVjdG9yID0gbmV3IHVpLnJlc3VsdHMuVGVz
dFNlbGVjdG9yKCk7CisgICAgICAgIHRoaXMuX2J1aWxkZXJTZWxlY3RvciA9IG5ldyB1aS5yZXN1
bHRzLkJ1aWxkZXJTZWxlY3RvcigpOworICAgICAgICB0aGlzLl9yZXN1bHRzRGV0YWlscyA9IG5l
dyB1aS5yZXN1bHRzLlJlc3VsdHNEZXRhaWxzKG1vZGVsKTsKKworICAgICAgICAkKCcudG9vbGJh
cicsIHRoaXMpLmFwcGVuZChuZXcgdWkucmVzdWx0cy5BY3Rpb25zKCkpLmFwcGVuZCh0aGlzLl90
ZXN0U2VsZWN0b3IpLmFwcGVuZCh0aGlzLl9idWlsZGVyU2VsZWN0b3IpOworICAgICAgICAkKCcu
Y29udGVudCcsIHRoaXMpLmFwcGVuZCh0aGlzLl9yZXN1bHRzRGV0YWlscyk7CisgICAgfSwKKyAg
ICBzZXRUZXN0TGlzdDogZnVuY3Rpb24odGVzdE5hbWVMaXN0KQorICAgIHsKKyAgICAgICAgdGhp
cy5fdGVzdFNlbGVjdG9yLnNldFRlc3RMaXN0KHRlc3ROYW1lTGlzdCk7CisgICAgfSwKKyAgICBj
dXJyZW50VGVzdE5hbWU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90
ZXN0U2VsZWN0b3IudmFsdWU7CisgICAgfSwKKyAgICBzZXRCdWlsZGVyTGlzdDogZnVuY3Rpb24o
YnVpbGROYW1lTGlzdCkKKyAgICB7CisgICAgICAgIHRoaXMuX2J1aWxkZXJTZWxlY3Rvci5zaG93
KGJ1aWxkTmFtZUxpc3QpOworICAgIH0sCisgICAgc2hvd1Jlc3VsdHM6IGZ1bmN0aW9uKGZhaWx1
cmVJbmZvKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVzdWx0c0RldGFpbHMuc2hvdyhmYWlsdXJl
SW5mbyk7CisgICAgfQorfSk7CisKIH0pKCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2NjYmM1NWU2YWEyNDU3YWEzMzE2MmI4NmFjODM5NzNk
OTM2ZGY5MC4uMTNhM2E0NmVmNjMzZWNmY2YwNThlYjJmY2QyMDE1MTgxYjAzMWM5MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIw
IEBACiAyMDExLTA4LTE0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAg
ICAgZ2FyZGVuLW8tbWF0aWMgc2hvdWxkIGJlIGFibGUgdG8gcmViYXNlbGluZSBleHBlY3RlZCBm
YWlsdXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjYyMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9jb250cm9sbGVycy9yZWJhc2VsaW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBC
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvbWFpbi5jc3M6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanM6CisgICAgICAg
ICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3JlYmFzZWxpbmUuaHRtbDogQWRkZWQuCisgICAgICAgICogQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L3Jlc3VsdHMuanM6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3VpLmpzOgorICAgICAgICAqIEJ1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy91aS9yZXN1bHRzLmpzOgorCisyMDExLTA4LTE0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CisKICAgICAgICAgU3dpdGNoIHJlc3VsdHMgZGV0YWlsIHZpZXcgb3ZlciB0byBu
ZXctc3R5bGUgb2JqZWN0LW9yaWVudGVkIFVJIHdpZGdldHMKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MjAwCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104197</attachid>
            <date>2011-08-17 11:15:15 -0700</date>
            <delta_ts>2011-08-17 12:31:37 -0700</delta_ts>
            <desc>Machine transfer</desc>
            <filename>bug-66204-20110817111514.patch</filename>
            <type>text/plain</type>
            <size>26998</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMwMjkKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9j
b250cm9sbGVycy5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jb250cm9sbGVycy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jZGI4N2JhNjhhZTkzOGE4ZjE3ODJmNTZhZDc2MWE4M2E4NDI2OTFlCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL2NvbnRyb2xsZXJzLmpzCkBAIC0wLDAgKzEsNzMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKwordmFyIGNvbnRvbGxlcnMgPSBjb250b2xsZXJzIHx8IHt9OworCisoZnVuY3Rp
b24oKXsKKworY29udG9sbGVycy5yZXN1bHRzRGV0YWlscyA9IGJhc2UuZXh0ZW5kcyhPYmplY3Qs
IHsKKyAgICBpbml0OiBmdW5jdGlvbih2aWV3LCByZXN1bHRzQnlUZXN0KQorICAgIHsKKyAgICAg
ICAgdGhpcy5fdmlldyA9IHZpZXc7CisgICAgICAgIHRoaXMuX3Jlc3VsdHNCeVRlc3QgPSByZXN1
bHRzQnlUZXN0OworCisgICAgICAgIHRoaXMuX3ZpZXcuc2V0VGVzdExpc3QoT2JqZWN0LmtleXMo
dGhpcy5fcmVzdWx0c0J5VGVzdCkpOworICAgICAgICAkKHRoaXMuX3ZpZXcpLmJpbmQoJ3Rlc3Rz
ZWxlY3RlZCcsIHRoaXMub25UZXN0U2VsZWN0ZWQuYmluZCh0aGlzKSk7CisgICAgICAgICQodGhp
cy5fdmlldykuYmluZCgnYnVpbGRlcnNlbGVjdGVkJywgdGhpcy5vbkJ1aWxkZXJTZWxlY3RlZC5i
aW5kKHRoaXMpKTsKKyAgICAgICAgJCh0aGlzLl92aWV3KS5iaW5kKCdyZWJhc2VsaW5lJywgdGhp
cy5vblJlYmFzZWxpbmUuYmluZCh0aGlzKSk7CisgICAgICAgIC8vIEZJWE1FOiBCaW5kIHRoZSBu
ZXh0L3ByZXZpb3VzIGV2ZW50cy4KKyAgICB9LAorICAgIF9mYWlsdXJlSW5mb0ZvclRlc3RBbmRC
dWlsZGVyOiBmdW5jdGlvbih0ZXN0TmFtZSwgYnVpbGRlck5hbWUpCisgICAgeworICAgICAgICBy
ZXR1cm4geworICAgICAgICAgICAgJ3Rlc3ROYW1lJzogdGVzdE5hbWUsCisgICAgICAgICAgICAn
YnVpbGRlck5hbWUnOiBidWlsZGVyTmFtZSwKKyAgICAgICAgICAgICdmYWlsdXJlVHlwZUxpc3Qn
OiByZXN1bHRzLmZhaWx1cmVUeXBlTGlzdCh0aGlzLl9yZXN1bHRzQnlUZXN0W3Rlc3ROYW1lXVti
dWlsZGVyTmFtZV0uYWN0dWFsKQorICAgICAgICB9CisgICAgfSwKKyAgICBkaXNtaXNzOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICAkKHRoaXMuX3ZpZXcpLmRldGFjaCgpOworICAgIH0KKyAg
ICBvblRlc3RTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQsIHRlc3ROYW1lKQorICAgIHsKKyAgICAg
ICAgdmFyIGJ1aWxkZXJOYW1lTGlzdCA9IE9iamVjdC5rZXlzKHRoaXMuX3Jlc3VsdHNCeVRlc3Rb
dGVzdE5hbWVdKTsKKyAgICAgICAgdGhpcy5fdmlldy5zZXRCdWlsZGVyTGlzdChidWlsZGVyTmFt
ZUxpc3QpCisgICAgICAgIHRoaXMuX3ZpZXcuc2hvd1Jlc3VsdHModGhpcy5fZmFpbHVyZUluZm9G
b3JUZXN0QW5kQnVpbGRlcih0ZXN0TmFtZSwgYnVpbGRlck5hbWVMaXN0WzBdKSk7CisgICAgfSwK
KyAgICBvbkJ1aWxkZXJTZWxlY3RlZDogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuX3ZpZXcu
c2hvd1Jlc3VsdHModGhpcy5fZmFpbHVyZUluZm9Gb3JUZXN0QW5kQnVpbGRlcih0aGlzLl92aWV3
LmN1cnJlbnRUZXN0TmFtZSgpLCB0aGlzLl92aWV3LmN1cnJlbnRCdWlsZGVyTmFtZSgpKSk7Cisg
ICAgfSwKKyAgICBvblJlYmFzZWxpbmU6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgdGVzdE5h
bWUgPSB0aGlzLl92aWV3LmN1cnJlbnRUZXN0TmFtZSgpOworICAgICAgICB2YXIgYnVpbGRlck5h
bWUgPSB0aGlzLl92aWV3LmN1cnJlbnRCdWlsZGVyTmFtZSgpOworICAgICAgICBtb2RlbC5xdWV1
ZUZvclJlYmFzZWxpbmUoeworICAgICAgICAgICAgJ3Rlc3ROYW1lJzogdGVzdE5hbWUsCisgICAg
ICAgICAgICAnYnVpbGRlck5hbWUnOiBidWlsZGVyTmFtZQorICAgICAgICB9KTsKKyAgICB9Cit9
KTsKKworfSkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jb250cm9sbGVycy9yZWJh
c2VsaW5lLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2NvbnRyb2xsZXJzL3JlYmFzZWxpbmUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTgyNjhjZmYwMGI2NjcwY2YzZDBjZjQwMTZlNmRjMDAyN2Y2ZGVjYgotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jb250cm9sbGVycy9yZWJhc2VsaW5lLmpzCkBA
IC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworKGZ1bmN0aW9uKCkgeworCiskKGZ1bmN0aW9u
KCkgeworICAgIG1vZGVsLnVwZGF0ZVJlc3VsdHNCeUJ1aWxkZXIoZnVuY3Rpb24oKSB7CisgICAg
ICAgIHZhciByZXN1bHRzVmlldyA9IG5ldyB1aS5yZXN1bHRzLlZpZXcoeworICAgICAgICAgICAg
ZmV0Y2hSZXN1bHRzVVJMczogcmVzdWx0cy5mZXRjaFJlc3VsdHNVUkxzCisgICAgICAgIH0pOwor
CisgICAgICAgIHZhciBmYWlsdXJlQnlUZXN0ID0gcmVzdWx0cy5leHBlY3RlZE9yVW5leHBlY3Rl
ZEZhaWx1cmVzQnlUZXN0KG1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1aWxkZXIpOworICAgICAgICB2
YXIgY29udHJvbGxlciA9IG5ldyBjb250b2xsZXJzLnJlc3VsdHNEZXRhaWxzKHJlc3VsdHNWaWV3
LCBmYWlsdXJlQnlUZXN0KTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyZXN1
bHRzVmlldyk7CisgICAgfSk7Cit9KTsKKworfSkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9nYXJkZW4tby1tYXRpYy5odG1sIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRlbi1vLW1hdGlj
Lmh0bWwKaW5kZXggYmVhZTNmNDQxYTA2YWMxMTMwZmM1YTZiNDQ1NmQyYTc5ZTFiYTAxYi4uN2E5
MDQ0ZWQ0MmM5ZDFkMGZkNzM0NTcwM2ViMWE5Y2NjMjk2MmVjZCAxMDA2NDQKLS0tIGEvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL2dhcmRlbi1vLW1hdGljLmh0bWwKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRl
bi1vLW1hdGljLmh0bWwKQEAgLTM5LDE2ICszOSw2IEBAIEphbWVzLCBhIHdlYiBkZXZlbG9wZXIg
ZnJvbSBCaXJtaW5naGFtLCBVSy4KICAgICA8YnV0dG9uIGNsYXNzPSJzaG93LXNlbGVjdGVkLWZh
aWx1cmVzIj5TaG93IFNlbGVjdGVkIEZhaWx1cmVzPC9idXR0b24+PGJ1dHRvbiBjbGFzcz0icmVi
YXNlbGluZS1zZWxlY3RlZCI+UmViYXNlbGluZSBTZWxlY3RlZDwvYnV0dG9uPjxidXR0b24gY2xh
c3M9InVwZGF0ZS1leHBlY3RhdGlvbnMtc2VsZWN0ZWQiPk1hcmsgU2VsZWN0ZWQgYXMgRXhwZWN0
ZWQ8L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJyZWZyZXNoIj5SZWZyZXNoPC9idXR0b24+CiA8L2Rp
dj4KIDxkaXYgY2xhc3M9InJlY2VudC1oaXN0b3J5Ij48L2Rpdj4KLTxkaXYgY2xhc3M9InJlc3Vs
dHMtZGV0YWlsIj4KLSAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyIj4KLSAgICAgICAgPGRpdiBjbGFz
cz0iYWN0aW9ucyI+Ci0gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJyZWJhc2VsaW5lIGRlZmF1
bHQiPkFkZCB0byBSZWJhc2VsaW5lIFF1ZXVlPC9idXR0b24+PGJ1dHRvbiBjbGFzcz0idXBkYXRl
LWV4cGVjdGF0aW9uIj5NYXJrIEZhaWx1cmUgYXMgRXhwZWN0ZWQ8L2J1dHRvbj48YnV0dG9uIGNs
YXNzPSJwcmV2aW91cyI+JiM5NjY0OzwvYnV0dG9uPjxidXR0b24gY2xhc3M9Im5leHQiPiYjOTY1
NDs8L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJkaXNtaXNzIj5DbG9zZTwvYnV0dG9uPgotICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0ic3RhdHVzIj48L2Rpdj4KLSAgICAgICAgPGRp
diBjbGFzcz0iY2xlYXIiPjwvZGl2PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImNvbnRl
bnQiPjwvZGl2PgotPC9kaXY+CiA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMu
Y29tL2FqYXgvbGlicy9qcXVlcnkvMS42LjIvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+IAogPHNj
cmlwdCBzcmM9ImNvbmZpZy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iYmFzZS5qcyI+PC9z
Y3JpcHQ+CkBAIC02MSw2ICs1MSw3IEBAIEphbWVzLCBhIHdlYiBkZXZlbG9wZXIgZnJvbSBCaXJt
aW5naGFtLCBVSy4KIDxzY3JpcHQgc3JjPSJ1aS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
dWkvcmVzdWx0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ibW9kZWwuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9ImNvbnRyb2xsZXJzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJt
YWluLmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9tYWluLmNzcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmNzcwppbmRleCA2MDBhMGJk
NWQ1Mzc5OWZkYmY1YzgwNmU0MzVkNDI4NmNmMWUyNGI1Li4xMWZkZWFlZGIxOWY0YjhlMjM1MjJh
ODRjNzA3YzZiZTc2NDMzMmE5IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5jc3MK
KysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uY3NzCkBAIC0yNzEsMjQgKzI3MSwxOCBAQCBidXR0
b24uZGVmYXVsdDpob3ZlciB7CiAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogfQogCi0vKioqIHJl
c3VsdHMtZGV0YWlsICoqKi8KKy8qKiogcmVzdWx0cy12aWV3ICoqKi8KIAotLnJlc3VsdHMtZGV0
YWlsIHsKLSAgICBkaXNwbGF5OiBub25lOwotICAgIHBvc2l0aW9uOiBmaXhlZDsKKy5yZXN1bHRz
LXZpZXcgewogICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7Ci0gICAgdG9wOiAyNSU7Ci0g
ICAgbGVmdDogMHB4OwotICAgIHJpZ2h0OiAwcHg7Ci0gICAgYm90dG9tOiAwcHg7CiB9CiAKLS5y
ZXN1bHRzLWRldGFpbCAudG9vbGJhciB7CisucmVzdWx0cy12aWV3IC50b29sYmFyIHsKICAgICBi
b3JkZXItdG9wOiAxcHggc29saWQgI2M2YzZjNjsKICAgICBib3JkZXItYm90dG9tOiAxcHggc29s
aWQgI2M2YzZjNjsKIH0KIAotLnJlc3VsdHMtZGV0YWlsIC50b29sYmFyIC5zdGF0dXMgeworLnJl
c3VsdHMtdmlldyAudG9vbGJhciAuc2VsZWN0b3IgewogICAgIGZvbnQtc2l6ZTogMTFweDsKICAg
ICBmb250LXdlaWdodDogYm9sZDsKICAgICBoZWlnaHQ6IDI5cHg7CkBAIC0yOTcsMjAgKzI5MSwx
NiBAQCBidXR0b24uZGVmYXVsdDpob3ZlciB7CiAgICAgcGFkZGluZzogMCA4cHg7CiB9CiAKLS5y
ZXN1bHRzLWRldGFpbCAudG9vbGJhciAuc3RhdHVzIC5idWlsZGVyLW5hbWUgewotICAgIGZvbnQt
d2VpZ2h0OiBub3JtYWw7Ci0gICAgcGFkZGluZy1sZWZ0OiAyMHB4OwotfQotCi0ucmVzdWx0cy1k
ZXRhaWwgLnRvb2xiYXIgLnN0YXR1cyAuc2VsZWN0ZWQgewotICAgIGZvbnQtc3R5bGU6IGl0YWxp
YzsKKy5yZXN1bHRzLXZpZXcgLnRlc3Qtc2VsZWN0b3IgeworICAgIHdpZHRoOiA0MDBweDsKKyAg
ICBtYXJnaW4tcmlnaHQ6IDZweDsKIH0KIAotLnJlc3VsdHMtZGV0YWlsIC50b29sYmFyIC5hY3Rp
b25zIHsKKy5yZXN1bHRzLXZpZXcgLnRvb2xiYXIgLmFjdGlvbnMgewogICAgIGZsb2F0OiByaWdo
dDsKIH0KIAotLnJlc3VsdHMtZGV0YWlsIC5jb250ZW50IHsKKy5yZXN1bHRzLWRldGFpbCB0ZCB7
CiAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9tYWluLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanMKaW5kZXggODI4ZWYyMzQ0
MmMyYzc5ZGIyMTU3ZDA0OTJjYTU4NjA5NWYxNWE4OC4uYjJhNTExOWE4NDcxMTQyODQwODBmZTUw
YzkwYzAyYmJkNDIxYWU2YSAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanMKKysr
IGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanMKQEAgLTMxLDYgKzMxLDggQEAgdmFyIGdfdXBkYXRl
VGltZXJJZCA9IDA7CiB2YXIgZ19yZXN1bHRzRGV0YWlsc0l0ZXJhdG9yID0gbnVsbDsKIHZhciBn
X3RyZWVTdGF0ZSA9IHt9OwogCit2YXIgZ19yZXN1bHRzVmlld0NvbnRyb2xsZXIgPSBudWxsOwor
CiB2YXIga0J1aWxkRmFpbGVkSW5mb2JhclR5cGUgPSAnYnVpbGQtZmFpbGVkJzsKIAogZnVuY3Rp
b24gZGlzbWlzc0J1dHRlcmJhcigpCkBAIC0xMzksMTMgKzE0MSw3IEBAIGZ1bmN0aW9uIHNob3dS
ZXN1bHRzRGV0YWlsKGZhaWx1cmVJbmZvKQogCiBmdW5jdGlvbiBoaWRlUmVzdWx0c0RldGFpbCgp
CiB7Ci0gICAgJCgnLnJlc3VsdHMtZGV0YWlsJykuZmFkZU91dCgnZmFzdCcsIGZ1bmN0aW9uKCkg
ewotICAgICAgICAkKCcucmVzdWx0cy1kZXRhaWwgLnN0YXR1cycpLmVtcHR5KCk7Ci0gICAgICAg
ICQoJy5yZXN1bHRzLWRldGFpbCAuY29udGVudCcpLmVtcHR5KCk7Ci0gICAgICAgIC8vIFN0cmlj
dGx5IHNwZWFraW5nLCB3ZSBkb24ndCBuZWVkIHRvIGNsZWFyIGdfcmVzdWx0c0RldGFpbHNJdGVy
YXRvciwKLSAgICAgICAgLy8gYnV0IGRvaW5nIHNvIGhlbHBzIHRoZSBnYXJiYWdlIGNvbGxlY3Rv
ciBmcmVlIG1lbW9yeS4KLSAgICAgICAgZ19yZXN1bHRzRGV0YWlsc0l0ZXJhdG9yID0gbnVsbDsK
LSAgICB9KTsKKyAgICBnX3Jlc3VsdHNWaWV3Q29udHJvbGxlci5kaXNtaXNzKCk7CiAgICAgY2hl
Y2tvdXQudXBkYXRlRXhwZWN0YXRpb25zKG1vZGVsLnRha2VFeHBlY3RhdGlvblVwZGF0ZVF1ZXVl
KCksIGZ1bmN0aW9uKCkgewogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGNvbmZpcm0gd2l0
aCB0aGUgdXNlIGJlZm9yZSBleGVjdXRpbmcgdGhlIHF1ZXVlPwogICAgICAgICByZWJhc2VsaW5l
KG1vZGVsLnRha2VSZWJhc2VsaW5lUXVldWUoKSk7CkBAIC0xNzEsNyArMTY3LDcgQEAgZnVuY3Rp
b24gZmFpbHVyZUluZm9Gcm9tUmVzdWx0c0RldGFpbCgpCiAgICAgcmV0dXJuIHsKICAgICAgICAg
J2J1aWxkZXJOYW1lJzogZmFpbHVyZURldGFpbHMuYXR0cihjb25maWcua0J1aWxkZXJOYW1lQXR0
ciksCiAgICAgICAgICd0ZXN0TmFtZSc6IGZhaWx1cmVEZXRhaWxzLmF0dHIoY29uZmlnLmtUZXN0
TmFtZUF0dHIpLAotICAgICAgICAnZmFpbHVyZVR5cGVMaXN0JzogZmFpbHVyZURldGFpbHMuYXR0
cihjb25maWcua0ZhaWx1cmVUeXBlc0F0dHIpLnNwbGl0KCcgJyksCisgICAgICAgICdmYWlsdXJl
VHlwZUxpc3QnOiByZXN1bHRzLmZhaWx1cmVUeXBlTGlzdChmYWlsdXJlRGV0YWlscy5hdHRyKGNv
bmZpZy5rRmFpbHVyZVR5cGVzQXR0cikpLAogICAgIH0KIH0KIApAQCAtMjEyLDYgKzIwOCwxNCBA
QCBmdW5jdGlvbiB1cGRhdGVFeHBlY3RhdGlvbnNGb3JTZWxlY3RlZCgpCiAKIGZ1bmN0aW9uIHNo
b3dTZWxlY3RlZEZhaWx1cmVzKCkKIHsKKyAgICBpZiAoZ19yZXN1bHRzVmlld0NvbnRyb2xsZXIp
IHsKKyAgICAgICAgZ19yZXN1bHRzVmlld0NvbnRyb2xsZXItPmRpc21pc3MoKTsKKyAgICAgICAg
Z19yZXN1bHRzVmlld0NvbnRyb2xsZXIgPSBudWxsOworICAgIH0KKworCisgICAgdmFyIGZhaWx1
cmVJbmZvTGlzdCA9IHNlbGVjdGVkRmFpbHVyZXMoKTsKKwogICAgIHZhciBsaXN0T2ZBcmd1bWVu
dEFycmF5cyA9IHNlbGVjdGVkRmFpbHVyZXMoKS5tYXAoZnVuY3Rpb24oZmFpbHVyZUluZm8pIHsg
cmV0dXJuIFtmYWlsdXJlSW5mb107IH0pOwogICAgIGdfcmVzdWx0c0RldGFpbHNJdGVyYXRvciA9
IG5ldyBiYXNlLkNhbGxiYWNrSXRlcmF0b3Ioc2hvd1Jlc3VsdHNEZXRhaWwsIGxpc3RPZkFyZ3Vt
ZW50QXJyYXlzKTsKICAgICBnX3Jlc3VsdHNEZXRhaWxzSXRlcmF0b3IuY2FsbE5leHQoKTsKQEAg
LTI5OSwxMiArMzAzLDYgQEAgJCgnLnJlYmFzZWxpbmUtc2VsZWN0ZWQnKS5saXZlKCdjbGljaycs
IHJlYmFzZWxpbmVTZWxlY3RlZCk7CiAkKCcudXBkYXRlLWV4cGVjdGF0aW9ucy1zZWxlY3RlZCcp
LmxpdmUoJ2NsaWNrJywgdXBkYXRlRXhwZWN0YXRpb25zRm9yU2VsZWN0ZWQpOwogJCgnLnJlZnJl
c2gnKS5saXZlKCdjbGljaycsIHVwZGF0ZSk7CiAKLSQoJy5yZXN1bHRzLWRldGFpbCAuYWN0aW9u
cyAubmV4dCcpLmxpdmUoJ2NsaWNrJywgbmV4dFJlc3VsdHNEZXRhaWwpOwotJCgnLnJlc3VsdHMt
ZGV0YWlsIC5hY3Rpb25zIC5wcmV2aW91cycpLmxpdmUoJ2NsaWNrJywgcHJldmlvdXNSZXN1bHRz
RGV0YWlsKTsKLSQoJy5yZXN1bHRzLWRldGFpbCAuYWN0aW9ucyAucmViYXNlbGluZScpLmxpdmUo
J2NsaWNrJywgYWRkVG9SZWJhc2VsaW5lUXVldWUpOwotJCgnLnJlc3VsdHMtZGV0YWlsIC5hY3Rp
b25zIC51cGRhdGUtZXhwZWN0YXRpb24nKS5saXZlKCdjbGljaycsIGFkZFRvRXhwZWN0YXRpb25V
cGRhdGVRdWV1ZSk7Ci0kKCcucmVzdWx0cy1kZXRhaWwgLmFjdGlvbnMgLmRpc21pc3MnKS5saXZl
KCdjbGljaycsIGhpZGVSZXN1bHRzRGV0YWlsKTsKLQogJChkb2N1bWVudCkucmVhZHkoZnVuY3Rp
b24oKSB7CiAgICAgZ191cGRhdGVUaW1lcklkID0gd2luZG93LnNldEludGVydmFsKHVwZGF0ZSwg
Y29uZmlnLmtVcGRhdGVGcmVxdWVuY3kpOwogICAgIHVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3JlYmFzZWxpbmUuaHRtbCBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9yZWJhc2VsaW5l
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDM5ZjA1YjA3Y2FiMTM1NGNhZWIxYjIzMTQ3ODRlZGJmYWM3MjNh
MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9yZWJhc2VsaW5lLmh0bWwKQEAg
LTAsMCArMSw0NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCitDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
K2FyZSBtZXQ6CisxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKK0FORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCitCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCitDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCitJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKK0FSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
K1RIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5HYXJkZW4tTy1NYXRpYyBSZWJhc2VsaW5lPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0ibWFpbi5jc3MiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRw
czovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeXVpLzEuOC4xNS90aGVtZXMv
YmFzZS9qcXVlcnktdWkuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Imh0dHBz
Oi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzEuNi4yL2pxdWVyeS5taW4u
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9h
amF4L2xpYnMvanF1ZXJ5dWkvMS44LjE1L2pxdWVyeS11aS5taW4uanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9ImNvbmZpZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYmFzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0ibmV0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjaGVj
a291dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzdWx0cy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0idWkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InVpL3Jlc3VsdHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Im1vZGVsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJjb250cm9sbGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iY29udHJvbGxlcnMvcmVi
YXNlbGluZS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvcmVzdWx0cy5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9yZXN1bHRzLmpzCmluZGV4
IGM1NTg3YjBlMWY1N2ZhZDlkMTg5ZTgwNWU3ZjdlZGRjYTIyNWIwMGMuLjJmNTFkOTU3Y2I1NTU0
N2M2NTlkZDUwMjk5MjcxNWUwZGJlOWZiN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9y
ZXN1bHRzLmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9yZXN1bHRzLmpzCkBAIC0xNjMsNiArMTYz
LDExIEBAIHJlc3VsdHMuZmFpbHVyZVR5cGVUb0V4dGVuc2lvbkxpc3QgPSBmdW5jdGlvbihmYWls
dXJlVHlwZSkKICAgICB9CiB9OwogCityZXN1bHRzLmZhaWx1cmVUeXBlTGlzdCA9IGZ1bmN0aW9u
KGZhaWx1cmVCbG9iKQoreworICAgIHJldHVybiBmYWlsdXJlQmxvYi5zcGxpdCgnICcpOworfTsK
KwogcmVzdWx0cy5jYW5SZWJhc2VsaW5lID0gZnVuY3Rpb24oZmFpbHVyZVR5cGVMaXN0KQogewog
ICAgIHJldHVybiBmYWlsdXJlVHlwZUxpc3Quc29tZShmdW5jdGlvbihlbGVtZW50KSB7CkBAIC0y
MDUsMTkgKzIxMCwyOSBAQCBmdW5jdGlvbiBhZGRJbXBsaWVkRXhwZWN0YXRpb25zKHJlc3VsdHNM
aXN0KQogCiByZXN1bHRzLnVuZXhwZWN0ZWRSZXN1bHRzID0gZnVuY3Rpb24ocmVzdWx0Tm9kZSkK
IHsKLSAgICB2YXIgYWN0dWFsUmVzdWx0cyA9IHJlc3VsdE5vZGUuYWN0dWFsLnNwbGl0KCcgJyk7
Ci0gICAgdmFyIGV4cGVjdGVkUmVzdWx0cyA9IGFkZEltcGxpZWRFeHBlY3RhdGlvbnMocmVzdWx0
Tm9kZS5leHBlY3RlZC5zcGxpdCgnICcpKQorICAgIHZhciBhY3R1YWxSZXN1bHRzID0gcmVzdWx0
cy5mYWlsdXJlVHlwZUxpc3QocmVzdWx0Tm9kZS5hY3R1YWwpOworICAgIHZhciBleHBlY3RlZFJl
c3VsdHMgPSBhZGRJbXBsaWVkRXhwZWN0YXRpb25zKHJlc3VsdHMuZmFpbHVyZVR5cGVMaXN0KHJl
c3VsdE5vZGUuZXhwZWN0ZWQpKQogCiAgICAgcmV0dXJuICQuZ3JlcChhY3R1YWxSZXN1bHRzLCBm
dW5jdGlvbihyZXN1bHQpIHsKICAgICAgICAgcmV0dXJuIGV4cGVjdGVkUmVzdWx0cy5pbmRleE9m
KHJlc3VsdCkgPT0gLTE7CiAgICAgfSk7CiB9OwogCitmdW5jdGlvbiBpc0V4cGVjdGVkT3JVbmV4
cGVjdGVkRmFpbHVyZShyZXN1bHROb2RlKQoreworICAgIGlmICghcmVzdWx0Tm9kZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHZhciBhY3R1YWxSZXN1bHRzID0gcmVzdWx0cy5mYWlsdXJl
VHlwZUxpc3QocmVzdWx0Tm9kZS5hY3R1YWwpOworICAgIGlmIChhbnlJc1N1Y2Nlc3MoYWN0dWFs
UmVzdWx0cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYW55SXNGYWlsdXJl
KGFjdHVhbFJlc3VsdHMpOworfQorCiBmdW5jdGlvbiBpc1VuZXhwZWN0ZWRGYWlsdXJlKHJlc3Vs
dE5vZGUpCiB7CiAgICAgaWYgKCFyZXN1bHROb2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKGFueUlzU3VjY2VzcyhyZXN1bHROb2RlLmFjdHVhbC5zcGxpdCgnICcpKSkKKyAgICBp
ZiAoYW55SXNTdWNjZXNzKHJlc3VsdHMuZmFpbHVyZVR5cGVMaXN0KHJlc3VsdE5vZGUuYWN0dWFs
KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gYW55SXNGYWlsdXJlKHJlc3Vs
dHMudW5leHBlY3RlZFJlc3VsdHMocmVzdWx0Tm9kZSkpOwogfQpAQCAtMjI2LDcgKzI0MSw3IEBA
IGZ1bmN0aW9uIGlzVW5leHBlY3RlZFN1Y2Nlc3NlcyhyZXN1bHROb2RlKQogewogICAgIGlmICgh
cmVzdWx0Tm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhbnlJc0ZhaWx1cmUo
cmVzdWx0Tm9kZS5hY3R1YWwuc3BsaXQoJyAnKSkpCisgICAgaWYgKGFueUlzRmFpbHVyZShyZXN1
bHRzLmZhaWx1cmVUeXBlTGlzdChyZXN1bHROb2RlLmFjdHVhbCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcmV0dXJuIGFueUlzU3VjY2VzcyhyZXN1bHRzLnVuZXhwZWN0ZWRSZXN1bHRz
KHJlc3VsdE5vZGUpKTsKIH0KQEAgLTIzNiw2ICsyNTEsMTEgQEAgZnVuY3Rpb24gaXNSZXN1bHRO
b2RlKG5vZGUpCiAgICAgcmV0dXJuICEhbm9kZS5hY3R1YWw7CiB9CiAKK3Jlc3VsdHMuZXhwZWN0
ZWRPclVuZXhwZWN0ZWRGYWlsdXJlcyA9IGZ1bmN0aW9uKHJlc3VsdHNUcmVlKQoreworICAgIHJl
dHVybiBiYXNlLmZpbHRlclRyZWUocmVzdWx0c1RyZWUudGVzdHMsIGlzUmVzdWx0Tm9kZSwgaXNF
eHBlY3RlZE9yVW5leHBlY3RlZEZhaWx1cmUpOworfTsKKwogcmVzdWx0cy51bmV4cGVjdGVkRmFp
bHVyZXMgPSBmdW5jdGlvbihyZXN1bHRzVHJlZSkKIHsKICAgICByZXR1cm4gYmFzZS5maWx0ZXJU
cmVlKHJlc3VsdHNUcmVlLnRlc3RzLCBpc1Jlc3VsdE5vZGUsIGlzVW5leHBlY3RlZEZhaWx1cmUp
OwpAQCAtMjYwLDYgKzI4MCwxMSBAQCBmdW5jdGlvbiByZXN1bHRzQnlUZXN0KHJlc3VsdHNCeUJ1
aWxkZXIsIGZpbHRlcikKICAgICByZXR1cm4gcmVzdWx0c0J5VGVzdDsKIH0KIAorcmVzdWx0cy5l
eHBlY3RlZE9yVW5leHBlY3RlZEZhaWx1cmVzQnlUZXN0ID0gZnVuY3Rpb24ocmVzdWx0c0J5QnVp
bGRlcikKK3sKKyAgICByZXR1cm4gcmVzdWx0c0J5VGVzdChyZXN1bHRzQnlCdWlsZGVyLCByZXN1
bHRzLmV4cGVjdGVkT3JVbmV4cGVjdGVkRmFpbHVyZXMpOworfTsKKwogcmVzdWx0cy51bmV4cGVj
dGVkRmFpbHVyZXNCeVRlc3QgPSBmdW5jdGlvbihyZXN1bHRzQnlCdWlsZGVyKQogewogICAgIHJl
dHVybiByZXN1bHRzQnlUZXN0KHJlc3VsdHNCeUJ1aWxkZXIsIHJlc3VsdHMudW5leHBlY3RlZEZh
aWx1cmVzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy91aS5qcyBiL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy91aS5qcwppbmRleCBhYzc5MjExMTAwYjlhYjU1ZGUzMDNlNTQxMzVlNjI0NmNjYThlMTBh
Li42MTU4NGVlYWZjZjg4NDRkMzZkNDZmY2Q2MDQ0MGZmODY1NDVjYzc5IDEwMDY0NAotLS0gYS9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9UZXN0RmFpbHVyZXMvdWkuanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3VpLmpzCkBAIC0yNywx
NCArMjcsMTQgQEAgdmFyIHVpID0gdWkgfHwge307CiAKIChmdW5jdGlvbiAoKSB7CiAKLWZ1bmN0
aW9uIGRpc3BsYXlVUkxGb3JCdWlsZGVyKGJ1aWxkZXJOYW1lKQordWkuZGlzcGxheVVSTEZvckJ1
aWxkZXIgPSBmdW5jdGlvbihidWlsZGVyTmFtZSkKIHsKICAgICByZXR1cm4gJ2h0dHA6Ly9idWls
ZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvd2F0ZXJmYWxsPycgKyAkLnBhcmFtKHsK
ICAgICAgICAgJ2J1aWxkZXInOiBidWlsZGVyTmFtZQogICAgIH0pOwogfQogCi1mdW5jdGlvbiBk
aXNwbGF5TmFtZUZvckJ1aWxkZXIoYnVpbGRlck5hbWUpCit1aS5kaXNwbGF5TmFtZUZvckJ1aWxk
ZXIgPSBmdW5jdGlvbihidWlsZGVyTmFtZSkKIHsKICAgICByZXR1cm4gYnVpbGRlck5hbWUucmVw
bGFjZSgvV2Via2l0IC8sICcnKTsKIH0KQEAgLTU3LDcgKzU3LDcgQEAgdWkuaW5mb2Jhck1lc3Nh
Z2VGb3JDb21waWxlRXJyb3JzID0gZnVuY3Rpb24oYnVpbGRlck5hbWVMaXN0KQogICAgICQuZWFj
aChidWlsZGVyTmFtZUxpc3QsIGZ1bmN0aW9uKGluZGV4LCBidWlsZGVyTmFtZSkgewogICAgICAg
ICB2YXIgbGlzdEVsZW1lbnQgPSAkKCc8bGk+PGEgdGFyZ2V0PSJfYmxhbmsiPjwvYT48L2xpPicp
OwogICAgICAgICBsaXN0LmFwcGVuZChsaXN0RWxlbWVudCk7Ci0gICAgICAgICQoJ2EnLCBsaXN0
RWxlbWVudCkuYXR0cignaHJlZicsIGRpc3BsYXlVUkxGb3JCdWlsZGVyKGJ1aWxkZXJOYW1lKSku
dGV4dChkaXNwbGF5TmFtZUZvckJ1aWxkZXIoYnVpbGRlck5hbWUpKTsKKyAgICAgICAgJCgnYScs
IGxpc3RFbGVtZW50KS5hdHRyKCdocmVmJywgdWkuZGlzcGxheVVSTEZvckJ1aWxkZXIoYnVpbGRl
ck5hbWUpKS50ZXh0KHVpLmRpc3BsYXlOYW1lRm9yQnVpbGRlcihidWlsZGVyTmFtZSkpOwogICAg
IH0pOwogCiAgICAgcmV0dXJuIGJsb2NrOwpAQCAtOTEsNyArOTEsNyBAQCBmdW5jdGlvbiBidWls
ZGVyVGFibGVEYXRhQ2VsbHMocmVzdWx0Tm9kZXNCeUJ1aWxkZXIpCiAKICAgICAkLmVhY2goY29u
ZmlnLmtCdWlsZGVycywgZnVuY3Rpb24oaW5kZXgsIGJ1aWxkZXJOYW1lKSB7CiAgICAgICAgIHZh
ciBibG9jayA9ICQoJzx0ZCBjbGFzcz0iYnVpbGRlciI+PC90ZD4nKTsKLSAgICAgICAgYmxvY2su
YXR0cigndGl0bGUnLCBkaXNwbGF5TmFtZUZvckJ1aWxkZXIoYnVpbGRlck5hbWUpKTsKKyAgICAg
ICAgYmxvY2suYXR0cigndGl0bGUnLCB1aS5kaXNwbGF5TmFtZUZvckJ1aWxkZXIoYnVpbGRlck5h
bWUpKTsKICAgICAgICAgYmxvY2suYXR0cihjb25maWcua0J1aWxkZXJOYW1lQXR0ciwgYnVpbGRl
ck5hbWUpOwogCiAgICAgICAgIGlmIChidWlsZGVyTmFtZSBpbiByZXN1bHROb2Rlc0J5QnVpbGRl
cikgewpAQCAtMTMyLDcgKzEzMiw3IEBAIHVpLmZhaWx1cmVJbmZvTGlzdEZvclN1bW1hcnkgPSBm
dW5jdGlvbih0ZXN0U3VtbWFyeSkKICAgICAgICAgdmFyIGZhaWx1cmVUeXBlcyA9ICQodGhpcyku
YXR0cihjb25maWcua0ZhaWx1cmVUeXBlc0F0dHIpOwogICAgICAgICBpZiAoIWZhaWx1cmVUeXBl
cykKICAgICAgICAgICAgIHJldHVybgotICAgICAgICB2YXIgZmFpbHVyZVR5cGVMaXN0ID0gZmFp
bHVyZVR5cGVzLnNwbGl0KCcgJyk7CisgICAgICAgIHZhciBmYWlsdXJlVHlwZUxpc3QgPSByZXN1
bHRzLmZhaWx1cmVUeXBlTGlzdChmYWlsdXJlVHlwZXMpOwogICAgICAgICB2YXIgYnVpbGRlck5h
bWUgPSAkKHRoaXMpLmF0dHIoY29uZmlnLmtCdWlsZGVyTmFtZUF0dHIpOwogICAgICAgICBmYWls
dXJlSW5mb0xpc3QucHVzaCh7CiAgICAgICAgICAgICAndGVzdE5hbWUnOiB0ZXN0TmFtZSwKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy91aS9yZXN1bHRzLmpzIGIvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L3VpL3Jlc3VsdHMuanMKaW5kZXggZWNlYmJkOTQ3MDc4ZTFiYmY5ZmUzNTA0NGU4ZWRjNGQ3MmUy
ZGMxZS4uZjkxNWVhODAzOWZhNzY0MjBjMDExMTdmMTUyMDgxMzIyOTJiYzVlYiAxMDA2NDQKLS0t
IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3VpL3Jlc3VsdHMuanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Vp
L3Jlc3VsdHMuanMKQEAgLTEsMyArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCiB2YXIgdWkgPSB1aSB8
fCB7fTsKIHVpLnJlc3VsdHMgPSB1aS5yZXN1bHRzIHx8IHt9OwogCkBAIC0xMTEsNCArMTM2LDEx
NyBAQCB1aS5yZXN1bHRzLlJlc3VsdHNHcmlkID0gYmFzZS5leHRlbmRzKCdkaXYnLCB7CiAgICAg
fQogfSk7CiAKK3VpLnJlc3VsdHMuUmVzdWx0c0RldGFpbHMgPSBiYXNlLmV4dGVuZHMoJ2Rpdics
IHsKKyAgICBpbml0OiBmdW5jdGlvbihkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIHRoaXMuY2xh
c3NOYW1lID0gJ3Jlc3VsdHMtZGV0YWlsJzsKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKyAgICB9LAorICAgIHNob3c6IGZ1bmN0aW9uKGZhaWx1cmVJbmZvKSB7CisgICAgICAg
IHRoaXMuX2RlbGVnYXRlLmZldGNoUmVzdWx0c1VSTHMoZmFpbHVyZUluZm8sIGZ1bmN0aW9uKHJl
c3VsdHNVUkxzKSB7CisgICAgICAgICAgICB2YXIgcmVzdWx0c0dyaWQgPSBuZXcgdWkucmVzdWx0
cy5SZXN1bHRzR3JpZCgpOworICAgICAgICAgICAgcmVzdWx0c0dyaWQuYWRkUmVzdWx0cyhyZXN1
bHRzVVJMcyk7CisgICAgICAgICAgICAkKHRoaXMpLmVtcHR5KCkuYXBwZW5kKHJlc3VsdHNHcmlk
KTsKKyAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICB9LAorfSk7CisKK3VpLnJlc3VsdHMuVGVz
dFNlbGVjdG9yID0gYmFzZS5leHRlbmRzKCdpbnB1dCcsIHsKKyAgICBpbml0OiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB0aGlzLmNsYXNzTmFtZSA9ICd0ZXN0LXNlbGVjdG9yJzsKKyAgICAg
ICAgdGhpcy50eXBlID0gJ3RleHQnOworICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gJ1Rlc3Qg
bmFtZSc7CisgICAgfSwKKyAgICBzZXRUZXN0TGlzdDogZnVuY3Rpb24odGVzdE5hbWVMaXN0KQor
ICAgIHsKKyAgICAgICAgJCh0aGlzKS5hdXRvY29tcGxldGUoeworICAgICAgICAgICAgc291cmNl
OiB0ZXN0TmFtZUxpc3QsCisgICAgICAgICAgICBzZWxlY3Q6IGZ1bmN0aW9uKGV2ZW50LCBzZWxl
Y3RlZCkgeworICAgICAgICAgICAgICAgICQodGhpcykudHJpZ2dlcigndGVzdHNlbGVjdGVkJywg
W3NlbGVjdGVkLml0ZW0udmFsdWVdKTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlzKQorICAgICAg
ICB9KTsKKyAgICB9Cit9KTsKKwordWkucmVzdWx0cy5CdWlsZGVyU2VsZWN0b3IgPSBiYXNlLmV4
dGVuZHMoJ3NlbGVjdCcsIHsKKyAgICBpbml0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0
aGlzLmNsYXNzTmFtZSA9ICdidWlsZGVyLXNlbGVjdG9yJzsKKyAgICAgICAgJCh0aGlzKS5oaWRl
KCk7CisgICAgICAgICQodGhpcykuY2hhbmdlKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgJCh0
aGlzKS50cmlnZ2VyKCdidWlsZGVyc2VsZWN0ZWQnKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpKTsK
KyAgICB9LAorICAgIHNob3c6IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lTGlzdCkgeworICAgICAgICAk
KHRoaXMpLmVtcHR5KCk7CisgICAgICAgICQodGhpcykuc2hvdygpOworICAgICAgICBidWlsZGVy
TmFtZUxpc3QuZm9yRWFjaChmdW5jdGlvbihidWlsZGVyTmFtZSkgeworICAgICAgICAgICAgdmFy
IGJ1aWxkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7CisgICAg
ICAgICAgICBidWlsZGVyRWxlbWVudC50ZXh0Q29udGVudCA9IHVpLmRpc3BsYXlOYW1lRm9yQnVp
bGRlcihidWlsZGVyTmFtZSk7CisgICAgICAgICAgICBidWlsZGVyRWxlbWVudC52YWx1ZSA9IGJ1
aWxkZXJOYW1lOworICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChidWlsZGVyRWxlbWVudCk7
CisgICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgfSwKKyAgICBzZWxlY3RlZEJ1aWxkZXI6IGZ1
bmN0aW9uKCkgeworICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ID09IC0xKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zW3RoaXMuc2VsZWN0ZWRJ
bmRleF0udmFsdWU7CisgICAgfQorfSk7CisKK3VpLnJlc3VsdHMuQWN0aW9ucyA9IGJhc2UuZXh0
ZW5kcygnZGl2JywgeworICAgIGluaXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMu
Y2xhc3NOYW1lID0gJ2FjdGlvbnMnOworICAgICAgICB0aGlzLmlubmVySFRNTCA9ICc8YnV0dG9u
IGNsYXNzPSJyZWJhc2VsaW5lIGRlZmF1bHQiPlJlYmFzZWxpbmU8L2J1dHRvbj4nICsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0icHJldmlvdXMiPiYjOTY2NDs8L2J1
dHRvbj4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0ibmV4dCI+
JiM5NjU0OzwvYnV0dG9uPic7CisgICAgICAgIHRoaXMuX3JvdXRlQ2xpY2tFdmVudCgnLnJlYmFz
ZWxpbmUnLCAncmViYXNlbGluZScpOworICAgICAgICB0aGlzLl9yb3V0ZUNsaWNrRXZlbnQoJy5w
cmV2aW91cycsICdwcmV2aW91cycpOworICAgICAgICB0aGlzLl9yb3V0ZUNsaWNrRXZlbnQoJy5u
ZXh0JywgJ25leHQnKTsKKyAgICB9LAorICAgIF9yb3V0ZUNsaWNrRXZlbnQ6IGZ1bmN0aW9uKHNl
bGVjdG9yLCBldmVudE5hbWUpIHsKKyAgICAgICAgJChzZWxlY3RvciwgdGhpcykuYmluZCgnY2xp
Y2snLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICQodGhpcykudHJpZ2dlcihldmVudE5hbWUp
OworICAgICAgICB9LmJpbmQodGhpcykpOworICAgIH0KK30pOworCit1aS5yZXN1bHRzLlZpZXcg
PSBiYXNlLmV4dGVuZHMoJ2RpdicsIHsKKyAgICBpbml0OiBmdW5jdGlvbihkZWxlZ2F0ZSkKKyAg
ICB7CisgICAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ3Jlc3VsdHMtdmlldyc7CisgICAgICAgIHRo
aXMuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9InRvb2xiYXIiPjxkaXYgY2xhc3M9InNlbGVjdG9y
Ij48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjb250ZW50Ij48L2Rpdj4nOworCisgICAgICAgIHRo
aXMuX3Rlc3RTZWxlY3RvciA9IG5ldyB1aS5yZXN1bHRzLlRlc3RTZWxlY3RvcigpOworICAgICAg
ICB0aGlzLl9idWlsZGVyU2VsZWN0b3IgPSBuZXcgdWkucmVzdWx0cy5CdWlsZGVyU2VsZWN0b3Io
KTsKKyAgICAgICAgdGhpcy5fcmVzdWx0c0RldGFpbHMgPSBuZXcgdWkucmVzdWx0cy5SZXN1bHRz
RGV0YWlscyhkZWxlZ2F0ZSk7CisKKyAgICAgICAgJCgnLnRvb2xiYXInLCB0aGlzKS5wcmVwZW5k
KG5ldyB1aS5yZXN1bHRzLkFjdGlvbnMoKSkKKyAgICAgICAgJCgnLnNlbGVjdG9yJywgdGhpcyku
YXBwZW5kKHRoaXMuX3Rlc3RTZWxlY3RvcikuYXBwZW5kKHRoaXMuX2J1aWxkZXJTZWxlY3Rvcik7
CisgICAgICAgICQoJy5jb250ZW50JywgdGhpcykuYXBwZW5kKHRoaXMuX3Jlc3VsdHNEZXRhaWxz
KTsKKyAgICB9LAorICAgIHNldFRlc3RMaXN0OiBmdW5jdGlvbih0ZXN0TmFtZUxpc3QpCisgICAg
eworICAgICAgICB0aGlzLl90ZXN0U2VsZWN0b3Iuc2V0VGVzdExpc3QodGVzdE5hbWVMaXN0KTsK
KyAgICB9LAorICAgIGN1cnJlbnRUZXN0TmFtZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3Rlc3RTZWxlY3Rvci52YWx1ZTsKKyAgICB9LAorICAgIGN1cnJlbnRCdWls
ZGVyTmFtZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fYnVpbGRlclNlbGVjdG9y
LnNlbGVjdGVkQnVpbGRlcigpOworICAgIH0sCisgICAgc2V0QnVpbGRlckxpc3Q6IGZ1bmN0aW9u
KGJ1aWxkTmFtZUxpc3QpCisgICAgeworICAgICAgICB0aGlzLl9idWlsZGVyU2VsZWN0b3Iuc2hv
dyhidWlsZE5hbWVMaXN0KTsKKyAgICB9LAorICAgIHNob3dSZXN1bHRzOiBmdW5jdGlvbihmYWls
dXJlSW5mbykKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc3VsdHNEZXRhaWxzLnNob3coZmFpbHVy
ZUluZm8pOworICAgIH0KK30pOworCiB9KSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdjY2JjNTVlNmFhMjQ1N2FhMzMxNjJiODZhYzgzOTcz
ZDkzNmRmOTAuLjEzYTNhNDZlZjYzM2VjZmNmMDU4ZWIyZmNkMjAxNTE4MWIwMzFjOTIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwy
MCBAQAogMjAxMS0wOC0xNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAg
ICAgIGdhcmRlbi1vLW1hdGljIHNob3VsZCBiZSBhYmxlIHRvIHJlYmFzZWxpbmUgZXhwZWN0ZWQg
ZmFpbHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY2MjA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvY29udHJvbGxlcnMvcmViYXNlbGluZS5qczogQWRkZWQuCisgICAgICAgICog
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL21haW4uY3NzOgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzOgorICAgICAg
ICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9yZWJhc2VsaW5lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEJ1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9yZXN1bHRzLmpzOgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy91aS5qczoKKyAgICAgICAgKiBCdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvdWkvcmVzdWx0cy5qczoKKworMjAxMS0wOC0xNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgorCiAgICAgICAgIFN3aXRjaCByZXN1bHRzIGRldGFpbCB2aWV3IG92ZXIgdG8g
bmV3LXN0eWxlIG9iamVjdC1vcmllbnRlZCBVSSB3aWRnZXRzCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjIwMAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104213</attachid>
            <date>2011-08-17 12:31:41 -0700</date>
            <delta_ts>2011-08-17 13:08:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66204-20110817123140.patch</filename>
            <type>text/plain</type>
            <size>30201</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDkzMjMzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzQgQEAKKzIwMTEtMDgtMTcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBnYXJkZW4tby1tYXRpYyBzaG91bGQgYmUgYWJsZSB0byByZWJhc2VsaW5lIGV4cGVj
dGVkIGZhaWx1cmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NjIwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyB2aWV3IGZvciBkaXNwbGF5aW5nIGV4cGVj
dCwgYWN0dWFsLCBhbmQKKyAgICAgICAgZGlmZmVyZW5jZXMgYmV0d2VlbiByZXN1bHRzLiAgVGhl
IG5ldyB2aWV3IGFsc28gaGFzIGEgZmxlZGdsaW5nCisgICAgICAgIGNvbnRyb2xsZXIgdGhhdCBo
YW5kbGVzIHNvbWUgYmFzaWMgb3BlcmF0aW9ucy4gIFRoZSBuZXcgdmlldyBpcworICAgICAgICBl
eGVyY2lzZWQgYnkgcmViYXNlbGluZS5odG1sLCB3aGljaCBsZXRzIHlvdSByZWJhc2VsaW5lcyBl
eHBlY3RlZAorICAgICAgICBmYWlsdXJlcywgYnV0IHRoZSBuZXcgdmlldyBpcyBub3QgZnVsbHkg
aW50ZWdyYXRlZCBpbnRvCisgICAgICAgIGdhcmRlbi1vLW1hdGljLmh0bWwKKworICAgICAgICBN
b3JlIHBhdGNoZXMgd2lsbCBiZSByZXF1aXJlZCB0byBtYWtlIHRoaXMgc3R1ZmYgZnVsbHkgd29y
a2luZywgYnV0CisgICAgICAgIHRoaXMgcGF0Y2ggd2FzIGFscmVhZHkgc29tZXdoYXQgc3BpcmFs
aW5nIG91dCBvZiBjb250cm9sLiAgSG9wZWZ1bGx5CisgICAgICAgIHRoaXMgcGF0Y2ggd2lsbCBz
ZXJ2ZSBhcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGZ1cnRoZXIgZGV2ZWxvcG1lbnQuCisK
KyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvY29udHJvbGxlcnM6IEFkZGVkLgorICAgICAgICAqIEJ1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9jb250cm9sbGVycy5qczogQWRkZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2NvbnRyb2xs
ZXJzL3JlYmFzZWxpbmUuanM6IEFkZGVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9nYXJkZW4tby1t
YXRpYy5odG1sOgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmNzczoKKyAgICAgICAgKiBCdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvbWFpbi5qczoKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmViYXNlbGluZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmVzdWx0cy5qczoKKyAgICAgICAgKiBCdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
cnVuLXVuaXR0ZXN0cy5odG1sOgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy91aS5qczoKKyAgICAgICAg
KiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvdWkvcmVzdWx0cy5qczoKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvdWkvcmVzdWx0
c191bml0dGVzdHMuanM6IEFkZGVkLgorCiAyMDExLTA4LTE3ICBBbGV4aXMgTWVuYXJkICA8YWxl
eGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIEFkZCBhIG5ldyBidWlsZCBzbGF2
ZSBmb3IgdGhlIFF0IHBvcnQgb24gTWFjIE9TIFNub3dMZW9wYXJkLgpJbmRleDogVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL2NvbnRyb2xsZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jb250
cm9sbGVycy5qcwkocmV2aXNpb24gMCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jb250cm9sbGVycy5q
cwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCit2YXIgY29udG9s
bGVycyA9IGNvbnRvbGxlcnMgfHwge307CisKKyhmdW5jdGlvbigpeworCitjb250b2xsZXJzLnJl
c3VsdHNEZXRhaWxzID0gYmFzZS5leHRlbmRzKE9iamVjdCwgeworICAgIGluaXQ6IGZ1bmN0aW9u
KHZpZXcsIHJlc3VsdHNCeVRlc3QpCisgICAgeworICAgICAgICB0aGlzLl92aWV3ID0gdmlldzsK
KyAgICAgICAgdGhpcy5fcmVzdWx0c0J5VGVzdCA9IHJlc3VsdHNCeVRlc3Q7CisKKyAgICAgICAg
dGhpcy5fdmlldy5zZXRUZXN0TGlzdChPYmplY3Qua2V5cyh0aGlzLl9yZXN1bHRzQnlUZXN0KSk7
CisgICAgICAgICQodGhpcy5fdmlldykuYmluZCgndGVzdHNlbGVjdGVkJywgdGhpcy5vblRlc3RT
ZWxlY3RlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgJCh0aGlzLl92aWV3KS5iaW5kKCdidWlsZGVy
c2VsZWN0ZWQnLCB0aGlzLm9uQnVpbGRlclNlbGVjdGVkLmJpbmQodGhpcykpOworICAgICAgICAk
KHRoaXMuX3ZpZXcpLmJpbmQoJ3JlYmFzZWxpbmUnLCB0aGlzLm9uUmViYXNlbGluZS5iaW5kKHRo
aXMpKTsKKyAgICAgICAgLy8gRklYTUU6IEJpbmQgdGhlIG5leHQvcHJldmlvdXMgZXZlbnRzLgor
ICAgIH0sCisgICAgX2ZhaWx1cmVJbmZvRm9yVGVzdEFuZEJ1aWxkZXI6IGZ1bmN0aW9uKHRlc3RO
YW1lLCBidWlsZGVyTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAn
dGVzdE5hbWUnOiB0ZXN0TmFtZSwKKyAgICAgICAgICAgICdidWlsZGVyTmFtZSc6IGJ1aWxkZXJO
YW1lLAorICAgICAgICAgICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IHJlc3VsdHMuZmFpbHVyZVR5cGVM
aXN0KHRoaXMuX3Jlc3VsdHNCeVRlc3RbdGVzdE5hbWVdW2J1aWxkZXJOYW1lXS5hY3R1YWwpCisg
ICAgICAgIH0KKyAgICB9LAorICAgIGRpc21pc3M6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
ICQodGhpcy5fdmlldykuZGV0YWNoKCk7CisgICAgfSwKKyAgICBzaG93VGVzdDogZnVuY3Rpb24o
dGVzdE5hbWUpCisgICAgeworICAgICAgICB2YXIgYnVpbGRlck5hbWVMaXN0ID0gT2JqZWN0Lmtl
eXModGhpcy5fcmVzdWx0c0J5VGVzdFt0ZXN0TmFtZV0pOworICAgICAgICB0aGlzLl92aWV3LnNl
dEJ1aWxkZXJMaXN0KGJ1aWxkZXJOYW1lTGlzdCkKKyAgICAgICAgdGhpcy5fdmlldy5zaG93UmVz
dWx0cyh0aGlzLl9mYWlsdXJlSW5mb0ZvclRlc3RBbmRCdWlsZGVyKHRlc3ROYW1lLCBidWlsZGVy
TmFtZUxpc3RbMF0pKTsKKyAgICB9LAorICAgIG9uVGVzdFNlbGVjdGVkOiBmdW5jdGlvbihldmVu
dCwgdGVzdE5hbWUpCisgICAgeworICAgICAgICB0aGlzLnNob3dUZXN0KHRlc3ROYW1lKQorICAg
IH0sCisgICAgb25CdWlsZGVyU2VsZWN0ZWQ6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLl92
aWV3LnNob3dSZXN1bHRzKHRoaXMuX2ZhaWx1cmVJbmZvRm9yVGVzdEFuZEJ1aWxkZXIodGhpcy5f
dmlldy5jdXJyZW50VGVzdE5hbWUoKSwgdGhpcy5fdmlldy5jdXJyZW50QnVpbGRlck5hbWUoKSkp
OworICAgIH0sCisgICAgb25SZWJhc2VsaW5lOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHRl
c3ROYW1lID0gdGhpcy5fdmlldy5jdXJyZW50VGVzdE5hbWUoKTsKKyAgICAgICAgdmFyIGJ1aWxk
ZXJOYW1lID0gdGhpcy5fdmlldy5jdXJyZW50QnVpbGRlck5hbWUoKTsKKyAgICAgICAgbW9kZWwu
cXVldWVGb3JSZWJhc2VsaW5lKHsKKyAgICAgICAgICAgICd0ZXN0TmFtZSc6IHRlc3ROYW1lLAor
ICAgICAgICAgICAgJ2J1aWxkZXJOYW1lJzogYnVpbGRlck5hbWUKKyAgICAgICAgfSk7CisgICAg
fQorfSk7CisKK30pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZ2FyZGVuLW8tbWF0aWMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZ2FyZGVuLW8tbWF0aWMuaHRtbAkocmV2
aXNpb24gOTMyMjcpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZ2FyZGVuLW8tbWF0aWMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBKYW1lcywgYSB3ZWIgZGV2ZWxvcGVyIGZyb20g
QmlybWluZ2hhbSwgCiAgICAgPGJ1dHRvbiBjbGFzcz0ic2hvdy1zZWxlY3RlZC1mYWlsdXJlcyI+
U2hvdyBTZWxlY3RlZCBGYWlsdXJlczwvYnV0dG9uPjxidXR0b24gY2xhc3M9InJlYmFzZWxpbmUt
c2VsZWN0ZWQiPlJlYmFzZWxpbmUgU2VsZWN0ZWQ8L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJ1cGRh
dGUtZXhwZWN0YXRpb25zLXNlbGVjdGVkIj5NYXJrIFNlbGVjdGVkIGFzIEV4cGVjdGVkPC9idXR0
b24+PGJ1dHRvbiBjbGFzcz0icmVmcmVzaCI+UmVmcmVzaDwvYnV0dG9uPgogPC9kaXY+CiA8ZGl2
IGNsYXNzPSJyZWNlbnQtaGlzdG9yeSI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZXN1bHRzLWRldGFp
bCI+Cis8ZGl2IGNsYXNzPSJyZXN1bHRzLWRldGFpbCByZXN1bHRzLXZpZXcgb2xkLXJlc3VsdHMt
dmlldyI+CiAgICAgPGRpdiBjbGFzcz0idG9vbGJhciI+CiAgICAgICAgIDxkaXYgY2xhc3M9ImFj
dGlvbnMiPgogICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icmViYXNlbGluZSBkZWZhdWx0Ij5B
ZGQgdG8gUmViYXNlbGluZSBRdWV1ZTwvYnV0dG9uPjxidXR0b24gY2xhc3M9InVwZGF0ZS1leHBl
Y3RhdGlvbiI+TWFyayBGYWlsdXJlIGFzIEV4cGVjdGVkPC9idXR0b24+PGJ1dHRvbiBjbGFzcz0i
cHJldmlvdXMiPiYjOTY2NDs8L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJuZXh0Ij4mIzk2NTQ7PC9i
dXR0b24+PGJ1dHRvbiBjbGFzcz0iZGlzbWlzcyI+Q2xvc2U8L2J1dHRvbj4KQEAgLTYxLDYgKzYx
LDcgQEAgSmFtZXMsIGEgd2ViIGRldmVsb3BlciBmcm9tIEJpcm1pbmdoYW0sIAogPHNjcmlwdCBz
cmM9InVpLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJ1aS9yZXN1bHRzLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJtb2RlbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iY29udHJv
bGxlcnMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Im1haW4uanMiPjwvc2NyaXB0PgogPC9i
b2R5PgogPC9odG1sPgpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uY3NzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmNzcwkocmV2aXNpb24gOTMyMjcpCisrKyBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvbWFpbi5jc3MJKHdvcmtpbmcgY29weSkKQEAgLTI3MSwyNCArMjcxLDI4IEBAIGJ1
dHRvbi5kZWZhdWx0OmhvdmVyIHsKICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiB9CiAKLS8qKiog
cmVzdWx0cy1kZXRhaWwgKioqLworLyoqKiByZXN1bHRzLXZpZXcgKioqLwogCi0ucmVzdWx0cy1k
ZXRhaWwgeworLyogRklYTUU6IFJlbW92ZSB0aGlzIG9uY2UgZ2FyZGVuLW8tbWF0aWMgc3dpdGNo
ZXMgdG8gdGhlIG5ldyByZXN1bHRzIHZpZXcuICovCisub2xkLXJlc3VsdHMtdmlldyB7CiAgICAg
ZGlzcGxheTogbm9uZTsKICAgICBwb3NpdGlvbjogZml4ZWQ7Ci0gICAgYmFja2dyb3VuZC1jb2xv
cjogI2Y1ZjVmNTsKLSAgICB0b3A6IDI1JTsKICAgICBsZWZ0OiAwcHg7CiAgICAgcmlnaHQ6IDBw
eDsKKyAgICB0b3A6IDI1JTsKICAgICBib3R0b206IDBweDsKIH0KIAotLnJlc3VsdHMtZGV0YWls
IC50b29sYmFyIHsKKy5yZXN1bHRzLXZpZXcgeworICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1
ZjU7Cit9CisKKy5yZXN1bHRzLXZpZXcgLnRvb2xiYXIgewogICAgIGJvcmRlci10b3A6IDFweCBz
b2xpZCAjYzZjNmM2OwogICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYzZjNmM2OwogfQog
Ci0ucmVzdWx0cy1kZXRhaWwgLnRvb2xiYXIgLnN0YXR1cyB7CisucmVzdWx0cy12aWV3IC50b29s
YmFyIC5zZWxlY3RvciB7CiAgICAgZm9udC1zaXplOiAxMXB4OwogICAgIGZvbnQtd2VpZ2h0OiBi
b2xkOwogICAgIGhlaWdodDogMjlweDsKQEAgLTI5NywyMCArMzAxLDE2IEBAIGJ1dHRvbi5kZWZh
dWx0OmhvdmVyIHsKICAgICBwYWRkaW5nOiAwIDhweDsKIH0KIAotLnJlc3VsdHMtZGV0YWlsIC50
b29sYmFyIC5zdGF0dXMgLmJ1aWxkZXItbmFtZSB7Ci0gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsK
LSAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7Ci19Ci0KLS5yZXN1bHRzLWRldGFpbCAudG9vbGJhciAu
c3RhdHVzIC5zZWxlY3RlZCB7Ci0gICAgZm9udC1zdHlsZTogaXRhbGljOworLnJlc3VsdHMtdmll
dyAudGVzdC1zZWxlY3RvciB7CisgICAgd2lkdGg6IDQwMHB4OworICAgIG1hcmdpbi1yaWdodDog
NnB4OwogfQogCi0ucmVzdWx0cy1kZXRhaWwgLnRvb2xiYXIgLmFjdGlvbnMgeworLnJlc3VsdHMt
dmlldyAudG9vbGJhciAuYWN0aW9ucyB7CiAgICAgZmxvYXQ6IHJpZ2h0OwogfQogCi0ucmVzdWx0
cy1kZXRhaWwgLmNvbnRlbnQgeworLnJlc3VsdHMtZGV0YWlsIHRkIHsKICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiB3aGl0ZTsKIH0KIApJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanMJKHJldmlzaW9uIDkzMjI3KQorKysgVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL21haW4uanMJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCBm
dW5jdGlvbiBmYWlsdXJlSW5mb0Zyb21SZXN1bHRzRGV0YWlsKCkKICAgICByZXR1cm4gewogICAg
ICAgICAnYnVpbGRlck5hbWUnOiBmYWlsdXJlRGV0YWlscy5hdHRyKGNvbmZpZy5rQnVpbGRlck5h
bWVBdHRyKSwKICAgICAgICAgJ3Rlc3ROYW1lJzogZmFpbHVyZURldGFpbHMuYXR0cihjb25maWcu
a1Rlc3ROYW1lQXR0ciksCi0gICAgICAgICdmYWlsdXJlVHlwZUxpc3QnOiBmYWlsdXJlRGV0YWls
cy5hdHRyKGNvbmZpZy5rRmFpbHVyZVR5cGVzQXR0cikuc3BsaXQoJyAnKSwKKyAgICAgICAgJ2Zh
aWx1cmVUeXBlTGlzdCc6IHJlc3VsdHMuZmFpbHVyZVR5cGVMaXN0KGZhaWx1cmVEZXRhaWxzLmF0
dHIoY29uZmlnLmtGYWlsdXJlVHlwZXNBdHRyKSksCiAgICAgfQogfQogCkluZGV4OiBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvcmViYXNlbGluZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9y
ZWJhc2VsaW5lLmh0bWwJKHJldmlzaW9uIDApCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmViYXNlbGlu
ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzwh
LS0KK0NvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
CitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworYXJlIG1ldDoKKzEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCitUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCitQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKK0JFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKK0NPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCitTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKK0lOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCitDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
LS0+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkdhcmRlbi1PLU1hdGljIFJlYmFzZWxpbmU8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJtYWluLmNzcyI+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMv
anF1ZXJ5dWkvMS44LjE1L3RoZW1lcy9iYXNlL2pxdWVyeS11aS5jc3MiPgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0iaHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9q
cXVlcnkvMS42LjIvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iaHR0cHM6
Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnl1aS8xLjguMTUvanF1ZXJ5LXVp
Lm1pbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iY29uZmlnLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJiYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJuZXQuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9ImNoZWNrb3V0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXN1bHRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJ1aS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0idWkvcmVzdWx0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ibW9kZWwuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImNvbnRyb2xsZXJzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJjb250cm9sbGVycy9yZWJhc2VsaW5lLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9yZXN1bHRzLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9yZXN1bHRzLmpzCShyZXZpc2lvbiA5MzIyNykKKysrIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9yZXN1bHRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiArMTYzLDExIEBAIHJlc3Vs
dHMuZmFpbHVyZVR5cGVUb0V4dGVuc2lvbkxpc3QgPSBmdW4KICAgICB9CiB9OwogCityZXN1bHRz
LmZhaWx1cmVUeXBlTGlzdCA9IGZ1bmN0aW9uKGZhaWx1cmVCbG9iKQoreworICAgIHJldHVybiBm
YWlsdXJlQmxvYi5zcGxpdCgnICcpOworfTsKKwogcmVzdWx0cy5jYW5SZWJhc2VsaW5lID0gZnVu
Y3Rpb24oZmFpbHVyZVR5cGVMaXN0KQogewogICAgIHJldHVybiBmYWlsdXJlVHlwZUxpc3Quc29t
ZShmdW5jdGlvbihlbGVtZW50KSB7CkBAIC0yMDUsMTkgKzIxMCwyOSBAQCBmdW5jdGlvbiBhZGRJ
bXBsaWVkRXhwZWN0YXRpb25zKHJlc3VsdHNMCiAKIHJlc3VsdHMudW5leHBlY3RlZFJlc3VsdHMg
PSBmdW5jdGlvbihyZXN1bHROb2RlKQogewotICAgIHZhciBhY3R1YWxSZXN1bHRzID0gcmVzdWx0
Tm9kZS5hY3R1YWwuc3BsaXQoJyAnKTsKLSAgICB2YXIgZXhwZWN0ZWRSZXN1bHRzID0gYWRkSW1w
bGllZEV4cGVjdGF0aW9ucyhyZXN1bHROb2RlLmV4cGVjdGVkLnNwbGl0KCcgJykpCisgICAgdmFy
IGFjdHVhbFJlc3VsdHMgPSByZXN1bHRzLmZhaWx1cmVUeXBlTGlzdChyZXN1bHROb2RlLmFjdHVh
bCk7CisgICAgdmFyIGV4cGVjdGVkUmVzdWx0cyA9IGFkZEltcGxpZWRFeHBlY3RhdGlvbnMocmVz
dWx0cy5mYWlsdXJlVHlwZUxpc3QocmVzdWx0Tm9kZS5leHBlY3RlZCkpCiAKICAgICByZXR1cm4g
JC5ncmVwKGFjdHVhbFJlc3VsdHMsIGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAgICByZXR1cm4g
ZXhwZWN0ZWRSZXN1bHRzLmluZGV4T2YocmVzdWx0KSA9PSAtMTsKICAgICB9KTsKIH07CiAKK2Z1
bmN0aW9uIGlzRXhwZWN0ZWRPclVuZXhwZWN0ZWRGYWlsdXJlKHJlc3VsdE5vZGUpCit7CisgICAg
aWYgKCFyZXN1bHROb2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdmFyIGFjdHVhbFJl
c3VsdHMgPSByZXN1bHRzLmZhaWx1cmVUeXBlTGlzdChyZXN1bHROb2RlLmFjdHVhbCk7CisgICAg
aWYgKGFueUlzU3VjY2VzcyhhY3R1YWxSZXN1bHRzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBhbnlJc0ZhaWx1cmUoYWN0dWFsUmVzdWx0cyk7Cit9CisKIGZ1bmN0aW9uIGlz
VW5leHBlY3RlZEZhaWx1cmUocmVzdWx0Tm9kZSkKIHsKICAgICBpZiAoIXJlc3VsdE5vZGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYW55SXNTdWNjZXNzKHJlc3VsdE5vZGUuYWN0
dWFsLnNwbGl0KCcgJykpKQorICAgIGlmIChhbnlJc1N1Y2Nlc3MocmVzdWx0cy5mYWlsdXJlVHlw
ZUxpc3QocmVzdWx0Tm9kZS5hY3R1YWwpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJl
dHVybiBhbnlJc0ZhaWx1cmUocmVzdWx0cy51bmV4cGVjdGVkUmVzdWx0cyhyZXN1bHROb2RlKSk7
CiB9CkBAIC0yMjYsNyArMjQxLDcgQEAgZnVuY3Rpb24gaXNVbmV4cGVjdGVkU3VjY2Vzc2VzKHJl
c3VsdE5vZAogewogICAgIGlmICghcmVzdWx0Tm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmIChhbnlJc0ZhaWx1cmUocmVzdWx0Tm9kZS5hY3R1YWwuc3BsaXQoJyAnKSkpCisgICAg
aWYgKGFueUlzRmFpbHVyZShyZXN1bHRzLmZhaWx1cmVUeXBlTGlzdChyZXN1bHROb2RlLmFjdHVh
bCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIGFueUlzU3VjY2VzcyhyZXN1
bHRzLnVuZXhwZWN0ZWRSZXN1bHRzKHJlc3VsdE5vZGUpKTsKIH0KQEAgLTIzNiw2ICsyNTEsMTEg
QEAgZnVuY3Rpb24gaXNSZXN1bHROb2RlKG5vZGUpCiAgICAgcmV0dXJuICEhbm9kZS5hY3R1YWw7
CiB9CiAKK3Jlc3VsdHMuZXhwZWN0ZWRPclVuZXhwZWN0ZWRGYWlsdXJlcyA9IGZ1bmN0aW9uKHJl
c3VsdHNUcmVlKQoreworICAgIHJldHVybiBiYXNlLmZpbHRlclRyZWUocmVzdWx0c1RyZWUudGVz
dHMsIGlzUmVzdWx0Tm9kZSwgaXNFeHBlY3RlZE9yVW5leHBlY3RlZEZhaWx1cmUpOworfTsKKwog
cmVzdWx0cy51bmV4cGVjdGVkRmFpbHVyZXMgPSBmdW5jdGlvbihyZXN1bHRzVHJlZSkKIHsKICAg
ICByZXR1cm4gYmFzZS5maWx0ZXJUcmVlKHJlc3VsdHNUcmVlLnRlc3RzLCBpc1Jlc3VsdE5vZGUs
IGlzVW5leHBlY3RlZEZhaWx1cmUpOwpAQCAtMjYwLDYgKzI4MCwxMSBAQCBmdW5jdGlvbiByZXN1
bHRzQnlUZXN0KHJlc3VsdHNCeUJ1aWxkZXIsCiAgICAgcmV0dXJuIHJlc3VsdHNCeVRlc3Q7CiB9
CiAKK3Jlc3VsdHMuZXhwZWN0ZWRPclVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCA9IGZ1bmN0aW9u
KHJlc3VsdHNCeUJ1aWxkZXIpCit7CisgICAgcmV0dXJuIHJlc3VsdHNCeVRlc3QocmVzdWx0c0J5
QnVpbGRlciwgcmVzdWx0cy5leHBlY3RlZE9yVW5leHBlY3RlZEZhaWx1cmVzKTsKK307CisKIHJl
c3VsdHMudW5leHBlY3RlZEZhaWx1cmVzQnlUZXN0ID0gZnVuY3Rpb24ocmVzdWx0c0J5QnVpbGRl
cikKIHsKICAgICByZXR1cm4gcmVzdWx0c0J5VGVzdChyZXN1bHRzQnlCdWlsZGVyLCByZXN1bHRz
LnVuZXhwZWN0ZWRGYWlsdXJlcyk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcnVuLXVuaXR0ZXN0
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9ydW4tdW5pdHRlc3RzLmh0bWwJ
KHJldmlzaW9uIDkzMjI3KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3J1bi11bml0dGVzdHMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQCBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiA8aGVhZD4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
Li4vU291cmNlL1RoaXJkUGFydHkvcXVuaXQvcXVuaXQvcXVuaXQuY3NzIj4KIDxzY3JpcHQgc3Jj
PSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjYuMi9qcXVl
cnkubWluLmpzIj48L3NjcmlwdD4gCis8c2NyaXB0IHNyYz0iaHR0cHM6Ly9hamF4Lmdvb2dsZWFw
aXMuY29tL2FqYXgvbGlicy9qcXVlcnl1aS8xLjguMTUvanF1ZXJ5LXVpLm1pbi5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vU291cmNlL1RoaXJkUGFydHkvcXVuaXQv
cXVuaXQvcXVuaXQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CkBAIC01Myw2ICs1NCw4
IEBAIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIDxzY3JpcHQgc3JjPSJyZXN1bHRz
X3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0idWkuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9InVpL3Jlc3VsdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImNvbnRy
b2xsZXJzLmpzIj48L3NjcmlwdD4gPCEtLSBUaGlzIHNjcmlwdCBpcyBzbGlnaHRseSBvZiBvcmRl
ci4gLS0+Cis8c2NyaXB0IHNyYz0idWkvcmVzdWx0c191bml0dGVzdHMuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9InVpX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ibW9k
ZWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Im1vZGVsX3VuaXR0ZXN0cy5qcyI+PC9zY3Jp
cHQ+CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvdWkuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL3VpLmpzCShyZXZpc2lvbiA5MzIyNykKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy91aS5qcwko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTQgKzI3LDE0IEBAIHZhciB1aSA9IHVpIHx8IHt9OwogCiAo
ZnVuY3Rpb24gKCkgewogCi1mdW5jdGlvbiBkaXNwbGF5VVJMRm9yQnVpbGRlcihidWlsZGVyTmFt
ZSkKK3VpLmRpc3BsYXlVUkxGb3JCdWlsZGVyID0gZnVuY3Rpb24oYnVpbGRlck5hbWUpCiB7CiAg
ICAgcmV0dXJuICdodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L3dh
dGVyZmFsbD8nICsgJC5wYXJhbSh7CiAgICAgICAgICdidWlsZGVyJzogYnVpbGRlck5hbWUKICAg
ICB9KTsKIH0KIAotZnVuY3Rpb24gZGlzcGxheU5hbWVGb3JCdWlsZGVyKGJ1aWxkZXJOYW1lKQor
dWkuZGlzcGxheU5hbWVGb3JCdWlsZGVyID0gZnVuY3Rpb24oYnVpbGRlck5hbWUpCiB7CiAgICAg
cmV0dXJuIGJ1aWxkZXJOYW1lLnJlcGxhY2UoL1dlYmtpdCAvLCAnJyk7CiB9CkBAIC01Nyw3ICs1
Nyw3IEBAIHVpLmluZm9iYXJNZXNzYWdlRm9yQ29tcGlsZUVycm9ycyA9IGZ1bmMKICAgICAkLmVh
Y2goYnVpbGRlck5hbWVMaXN0LCBmdW5jdGlvbihpbmRleCwgYnVpbGRlck5hbWUpIHsKICAgICAg
ICAgdmFyIGxpc3RFbGVtZW50ID0gJCgnPGxpPjxhIHRhcmdldD0iX2JsYW5rIj48L2E+PC9saT4n
KTsKICAgICAgICAgbGlzdC5hcHBlbmQobGlzdEVsZW1lbnQpOwotICAgICAgICAkKCdhJywgbGlz
dEVsZW1lbnQpLmF0dHIoJ2hyZWYnLCBkaXNwbGF5VVJMRm9yQnVpbGRlcihidWlsZGVyTmFtZSkp
LnRleHQoZGlzcGxheU5hbWVGb3JCdWlsZGVyKGJ1aWxkZXJOYW1lKSk7CisgICAgICAgICQoJ2En
LCBsaXN0RWxlbWVudCkuYXR0cignaHJlZicsIHVpLmRpc3BsYXlVUkxGb3JCdWlsZGVyKGJ1aWxk
ZXJOYW1lKSkudGV4dCh1aS5kaXNwbGF5TmFtZUZvckJ1aWxkZXIoYnVpbGRlck5hbWUpKTsKICAg
ICB9KTsKIAogICAgIHJldHVybiBibG9jazsKQEAgLTkxLDcgKzkxLDcgQEAgZnVuY3Rpb24gYnVp
bGRlclRhYmxlRGF0YUNlbGxzKHJlc3VsdE5vZAogCiAgICAgJC5lYWNoKGNvbmZpZy5rQnVpbGRl
cnMsIGZ1bmN0aW9uKGluZGV4LCBidWlsZGVyTmFtZSkgewogICAgICAgICB2YXIgYmxvY2sgPSAk
KCc8dGQgY2xhc3M9ImJ1aWxkZXIiPjwvdGQ+Jyk7Ci0gICAgICAgIGJsb2NrLmF0dHIoJ3RpdGxl
JywgZGlzcGxheU5hbWVGb3JCdWlsZGVyKGJ1aWxkZXJOYW1lKSk7CisgICAgICAgIGJsb2NrLmF0
dHIoJ3RpdGxlJywgdWkuZGlzcGxheU5hbWVGb3JCdWlsZGVyKGJ1aWxkZXJOYW1lKSk7CiAgICAg
ICAgIGJsb2NrLmF0dHIoY29uZmlnLmtCdWlsZGVyTmFtZUF0dHIsIGJ1aWxkZXJOYW1lKTsKIAog
ICAgICAgICBpZiAoYnVpbGRlck5hbWUgaW4gcmVzdWx0Tm9kZXNCeUJ1aWxkZXIpIHsKQEAgLTEz
Miw3ICsxMzIsNyBAQCB1aS5mYWlsdXJlSW5mb0xpc3RGb3JTdW1tYXJ5ID0gZnVuY3Rpb24oCiAg
ICAgICAgIHZhciBmYWlsdXJlVHlwZXMgPSAkKHRoaXMpLmF0dHIoY29uZmlnLmtGYWlsdXJlVHlw
ZXNBdHRyKTsKICAgICAgICAgaWYgKCFmYWlsdXJlVHlwZXMpCiAgICAgICAgICAgICByZXR1cm4K
LSAgICAgICAgdmFyIGZhaWx1cmVUeXBlTGlzdCA9IGZhaWx1cmVUeXBlcy5zcGxpdCgnICcpOwor
ICAgICAgICB2YXIgZmFpbHVyZVR5cGVMaXN0ID0gcmVzdWx0cy5mYWlsdXJlVHlwZUxpc3QoZmFp
bHVyZVR5cGVzKTsKICAgICAgICAgdmFyIGJ1aWxkZXJOYW1lID0gJCh0aGlzKS5hdHRyKGNvbmZp
Zy5rQnVpbGRlck5hbWVBdHRyKTsKICAgICAgICAgZmFpbHVyZUluZm9MaXN0LnB1c2goewogICAg
ICAgICAgICAgJ3Rlc3ROYW1lJzogdGVzdE5hbWUsCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvY29u
dHJvbGxlcnMvcmViYXNlbGluZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvY29u
dHJvbGxlcnMvcmViYXNlbGluZS5qcwkocmV2aXNpb24gMCkKKysrIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9j
b250cm9sbGVycy9yZWJhc2VsaW5lLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyhmdW5jdGlvbigpIHsKKworJChmdW5jdGlvbigpIHsKKyAgICBtb2RlbC51
cGRhdGVSZXN1bHRzQnlCdWlsZGVyKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgcmVzdWx0c1Zp
ZXcgPSBuZXcgdWkucmVzdWx0cy5WaWV3KHsKKyAgICAgICAgICAgIGZldGNoUmVzdWx0c1VSTHM6
IHJlc3VsdHMuZmV0Y2hSZXN1bHRzVVJMcworICAgICAgICB9KTsKKworICAgICAgICB2YXIgZmFp
bHVyZUJ5VGVzdCA9IHJlc3VsdHMuZXhwZWN0ZWRPclVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCht
b2RlbC5zdGF0ZS5yZXN1bHRzQnlCdWlsZGVyKTsKKyAgICAgICAgdmFyIGNvbnRyb2xsZXIgPSBu
ZXcgY29udG9sbGVycy5yZXN1bHRzRGV0YWlscyhyZXN1bHRzVmlldywgZmFpbHVyZUJ5VGVzdCk7
CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVzdWx0c1ZpZXcpOworICAgIH0p
OworfSk7CisKK30pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvdWkvcmVzdWx0cy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvdWkvcmVzdWx0cy5qcwkocmV2aXNpb24gOTMyMjcp
CisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvdWkvcmVzdWx0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKIHZhciB1aSA9IHVpIHx8IHt9OwogdWkucmVzdWx0cyA9
IHVpLnJlc3VsdHMgfHwge307CiAKQEAgLTExMSw0ICsxMzYsMTMxIEBAIHVpLnJlc3VsdHMuUmVz
dWx0c0dyaWQgPSBiYXNlLmV4dGVuZHMoJ2QKICAgICB9CiB9KTsKIAordWkucmVzdWx0cy5SZXN1
bHRzRGV0YWlscyA9IGJhc2UuZXh0ZW5kcygnZGl2JywgeworICAgIGluaXQ6IGZ1bmN0aW9uKGRl
bGVnYXRlKQorICAgIHsKKyAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAncmVzdWx0cy1kZXRhaWwn
OworICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH0sCisgICAgc2hvdzog
ZnVuY3Rpb24oZmFpbHVyZUluZm8pIHsKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUuZmV0Y2hSZXN1
bHRzVVJMcyhmYWlsdXJlSW5mbywgZnVuY3Rpb24ocmVzdWx0c1VSTHMpIHsKKyAgICAgICAgICAg
IHZhciByZXN1bHRzR3JpZCA9IG5ldyB1aS5yZXN1bHRzLlJlc3VsdHNHcmlkKCk7CisgICAgICAg
ICAgICByZXN1bHRzR3JpZC5hZGRSZXN1bHRzKHJlc3VsdHNVUkxzKTsKKyAgICAgICAgICAgICQo
dGhpcykuZW1wdHkoKS5hcHBlbmQocmVzdWx0c0dyaWQpOworICAgICAgICB9LmJpbmQodGhpcykp
OworICAgIH0sCit9KTsKKwordWkucmVzdWx0cy5UZXN0U2VsZWN0b3IgPSBiYXNlLmV4dGVuZHMo
J2lucHV0JywgeworICAgIGluaXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuY2xh
c3NOYW1lID0gJ3Rlc3Qtc2VsZWN0b3InOworICAgICAgICB0aGlzLnR5cGUgPSAndGV4dCc7Cisg
ICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSAnVGVzdCBuYW1lJzsKKyAgICB9LAorICAgIHNldFRl
c3RMaXN0OiBmdW5jdGlvbih0ZXN0TmFtZUxpc3QpCisgICAgeworICAgICAgICAkKHRoaXMpLmF1
dG9jb21wbGV0ZSh7CisgICAgICAgICAgICBzb3VyY2U6IHRlc3ROYW1lTGlzdCwKKyAgICAgICAg
ICAgIHNlbGVjdDogZnVuY3Rpb24oZXZlbnQsIHNlbGVjdGVkKSB7CisgICAgICAgICAgICAgICAg
JCh0aGlzKS50cmlnZ2VyKCd0ZXN0c2VsZWN0ZWQnLCBbc2VsZWN0ZWQuaXRlbS52YWx1ZV0pOwor
ICAgICAgICAgICAgfS5iaW5kKHRoaXMpCisgICAgICAgIH0pOworICAgIH0KK30pOworCit1aS5y
ZXN1bHRzLkJ1aWxkZXJTZWxlY3RvciA9IGJhc2UuZXh0ZW5kcygnc2VsZWN0JywgeworICAgIGlu
aXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ2J1aWxkZXIt
c2VsZWN0b3InOworICAgICAgICAkKHRoaXMpLmhpZGUoKTsKKyAgICAgICAgJCh0aGlzKS5jaGFu
Z2UoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAkKHRoaXMpLnRyaWdnZXIoJ2J1aWxkZXJzZWxl
Y3RlZCcpOworICAgICAgICB9LmJpbmQodGhpcykpOworICAgIH0sCisgICAgc2hvdzogZnVuY3Rp
b24oYnVpbGRlck5hbWVMaXN0KSB7CisgICAgICAgICQodGhpcykuZW1wdHkoKTsKKyAgICAgICAg
JCh0aGlzKS5zaG93KCk7CisgICAgICAgIGJ1aWxkZXJOYW1lTGlzdC5mb3JFYWNoKGZ1bmN0aW9u
KGJ1aWxkZXJOYW1lKSB7CisgICAgICAgICAgICB2YXIgYnVpbGRlckVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTsKKyAgICAgICAgICAgIGJ1aWxkZXJFbGVtZW50LnRl
eHRDb250ZW50ID0gdWkuZGlzcGxheU5hbWVGb3JCdWlsZGVyKGJ1aWxkZXJOYW1lKTsKKyAgICAg
ICAgICAgIGJ1aWxkZXJFbGVtZW50LnZhbHVlID0gYnVpbGRlck5hbWU7CisgICAgICAgICAgICB0
aGlzLmFwcGVuZENoaWxkKGJ1aWxkZXJFbGVtZW50KTsKKyAgICAgICAgfS5iaW5kKHRoaXMpKTsK
KyAgICB9LAorICAgIHNlbGVjdDogZnVuY3Rpb24oYnVpbGRlck5hbWUpIHsKKyAgICAgICAgdmFy
IGJ1aWxkZXJJbmRleCA9IC0xOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub3B0
aW9ucy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9uc1tpXS52YWx1
ZSA9PSBidWlsZGVyTmFtZSkgeworICAgICAgICAgICAgICAgIGJ1aWxkZXJJbmRleCA9IGk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGJ1aWxkZXJJbmRleCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhp
cy5zZWxlY3RlZEluZGV4ID0gYnVpbGRlckluZGV4OworICAgIH0sCisgICAgc2VsZWN0ZWRCdWls
ZGVyOiBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA9PSAtMSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc1t0aGlzLnNl
bGVjdGVkSW5kZXhdLnZhbHVlOworICAgIH0KK30pOworCit1aS5yZXN1bHRzLkFjdGlvbnMgPSBi
YXNlLmV4dGVuZHMoJ2RpdicsIHsKKyAgICBpbml0OiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB0aGlzLmNsYXNzTmFtZSA9ICdhY3Rpb25zJzsKKyAgICAgICAgdGhpcy5pbm5lckhUTUwgPSAn
PGJ1dHRvbiBjbGFzcz0icmViYXNlbGluZSBkZWZhdWx0Ij5SZWJhc2VsaW5lPC9idXR0b24+JyAr
CisgICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9InByZXZpb3VzIj4mIzk2
NjQ7PC9idXR0b24+JyArCisgICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9
Im5leHQiPiYjOTY1NDs8L2J1dHRvbj4nOworICAgICAgICB0aGlzLl9yb3V0ZUNsaWNrRXZlbnQo
Jy5yZWJhc2VsaW5lJywgJ3JlYmFzZWxpbmUnKTsKKyAgICAgICAgdGhpcy5fcm91dGVDbGlja0V2
ZW50KCcucHJldmlvdXMnLCAncHJldmlvdXMnKTsKKyAgICAgICAgdGhpcy5fcm91dGVDbGlja0V2
ZW50KCcubmV4dCcsICduZXh0Jyk7CisgICAgfSwKKyAgICBfcm91dGVDbGlja0V2ZW50OiBmdW5j
dGlvbihzZWxlY3RvciwgZXZlbnROYW1lKSB7CisgICAgICAgICQoc2VsZWN0b3IsIHRoaXMpLmJp
bmQoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAkKHRoaXMpLnRyaWdnZXIoZXZl
bnROYW1lKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICB9Cit9KTsKKwordWkucmVzdWx0
cy5WaWV3ID0gYmFzZS5leHRlbmRzKCdkaXYnLCB7CisgICAgaW5pdDogZnVuY3Rpb24oZGVsZWdh
dGUpCisgICAgeworICAgICAgICB0aGlzLmNsYXNzTmFtZSA9ICdyZXN1bHRzLXZpZXcnOworICAg
ICAgICB0aGlzLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJ0b29sYmFyIj48ZGl2IGNsYXNzPSJz
ZWxlY3RvciI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iY29udGVudCI+PC9kaXY+JzsKKworICAg
ICAgICB0aGlzLl90ZXN0U2VsZWN0b3IgPSBuZXcgdWkucmVzdWx0cy5UZXN0U2VsZWN0b3IoKTsK
KyAgICAgICAgdGhpcy5fYnVpbGRlclNlbGVjdG9yID0gbmV3IHVpLnJlc3VsdHMuQnVpbGRlclNl
bGVjdG9yKCk7CisgICAgICAgIHRoaXMuX3Jlc3VsdHNEZXRhaWxzID0gbmV3IHVpLnJlc3VsdHMu
UmVzdWx0c0RldGFpbHMoZGVsZWdhdGUpOworCisgICAgICAgICQoJy50b29sYmFyJywgdGhpcyku
cHJlcGVuZChuZXcgdWkucmVzdWx0cy5BY3Rpb25zKCkpCisgICAgICAgICQoJy5zZWxlY3Rvcics
IHRoaXMpLmFwcGVuZCh0aGlzLl90ZXN0U2VsZWN0b3IpLmFwcGVuZCh0aGlzLl9idWlsZGVyU2Vs
ZWN0b3IpOworICAgICAgICAkKCcuY29udGVudCcsIHRoaXMpLmFwcGVuZCh0aGlzLl9yZXN1bHRz
RGV0YWlscyk7CisgICAgfSwKKyAgICBzZXRUZXN0TGlzdDogZnVuY3Rpb24odGVzdE5hbWVMaXN0
KQorICAgIHsKKyAgICAgICAgdGhpcy5fdGVzdFNlbGVjdG9yLnNldFRlc3RMaXN0KHRlc3ROYW1l
TGlzdCk7CisgICAgfSwKKyAgICBjdXJyZW50VGVzdE5hbWU6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl90ZXN0U2VsZWN0b3IudmFsdWU7CisgICAgfSwKKyAgICBjdXJy
ZW50QnVpbGRlck5hbWU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9i
dWlsZGVyU2VsZWN0b3Iuc2VsZWN0ZWRCdWlsZGVyKCk7CisgICAgfSwKKyAgICBzZXRCdWlsZGVy
TGlzdDogZnVuY3Rpb24oYnVpbGROYW1lTGlzdCkKKyAgICB7CisgICAgICAgIHRoaXMuX2J1aWxk
ZXJTZWxlY3Rvci5zaG93KGJ1aWxkTmFtZUxpc3QpOworICAgIH0sCisgICAgc2hvd1Jlc3VsdHM6
IGZ1bmN0aW9uKGZhaWx1cmVJbmZvKQorICAgIHsKKyAgICAgICAgdGhpcy5fdGVzdFNlbGVjdG9y
LnZhbHVlID0gZmFpbHVyZUluZm8udGVzdE5hbWU7CisgICAgICAgIHRoaXMuX2J1aWxkZXJTZWxl
Y3Rvci5zZWxlY3QoZmFpbHVyZUluZm8uYnVpbGRlck5hbWUpOworICAgICAgICB0aGlzLl9yZXN1
bHRzRGV0YWlscy5zaG93KGZhaWx1cmVJbmZvKTsKKyAgICB9Cit9KTsKKwogfSkoKTsKSW5kZXg6
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy91aS9yZXN1bHRzX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9UZXN0RmFpbHVyZXMvdWkvcmVzdWx0c191bml0dGVzdHMuanMJKHJldmlzaW9uIDApCisrKyBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9UZXN0RmFpbHVyZXMvdWkvcmVzdWx0c191bml0dGVzdHMuanMJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworKGZ1bmN0aW9uICgpIHsKKworbW9kdWxlKCJpdS5y
ZXN1bHRzIik7CisKK3ZhciBrRXhhbXBsZVJlc3VsdHNCeVRlc3QgPSB7CisgICAgInNjcm9sbGJh
cnMvY3VzdG9tLXNjcm9sbGJhci13aXRoLWluY29tcGxldGUtc3R5bGUuaHRtbCI6IHsKKyAgICAg
ICAgIk1vY2sgQnVpbGRlciI6IHsKKyAgICAgICAgICAgICJleHBlY3RlZCI6ICJJTUFHRSIsCisg
ICAgICAgICAgICAiYWN0dWFsIjogIkNSQVNIIgorICAgICAgICB9LAorICAgICAgICAiTW9jayBM
aW51eCI6IHsKKyAgICAgICAgICAgICJleHBlY3RlZCI6ICJURVhUIiwKKyAgICAgICAgICAgICJh
Y3R1YWwiOiAiQ1JBU0giCisgICAgICAgIH0KKyAgICB9LAorICAgICJ1c2Vyc2NyaXB0cy9hbm90
aGVyLXRlc3QuaHRtbCI6IHsKKyAgICAgICAgIk1vY2sgQnVpbGRlciI6IHsKKyAgICAgICAgICAg
ICJleHBlY3RlZCI6ICJQQVNTIiwKKyAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKKyAgICAg
ICAgfQorICAgIH0KK30KKwordGVzdCgiVmlldyIsIDYsIGZ1bmN0aW9uKCkgeworICAgIHZhciBy
ZXN1bHRzVmlldyA9IG5ldyB1aS5yZXN1bHRzLlZpZXcoeworICAgICAgICBmZXRjaFJlc3VsdHNV
UkxzOiAkLm5vb3AKKyAgICB9KTsKKyAgICB2YXIgY29udHJvbGxlciA9IG5ldyBjb250b2xsZXJz
LnJlc3VsdHNEZXRhaWxzKHJlc3VsdHNWaWV3LCBrRXhhbXBsZVJlc3VsdHNCeVRlc3QpOworICAg
IGNvbnRyb2xsZXIuc2hvd1Rlc3QoInNjcm9sbGJhcnMvY3VzdG9tLXNjcm9sbGJhci13aXRoLWlu
Y29tcGxldGUtc3R5bGUuaHRtbCIpOworICAgIGVxdWFsKHJlc3VsdHNWaWV3LmN1cnJlbnRUZXN0
TmFtZSgpLCAic2Nyb2xsYmFycy9jdXN0b20tc2Nyb2xsYmFyLXdpdGgtaW5jb21wbGV0ZS1zdHls
ZS5odG1sIik7CisgICAgZXF1YWwocmVzdWx0c1ZpZXcuY3VycmVudEJ1aWxkZXJOYW1lKCksICJN
b2NrIEJ1aWxkZXIiKTsKKyAgICByZXN1bHRzVmlldy5zaG93UmVzdWx0cyh7CisgICAgICAgICJ0
ZXN0TmFtZSI6ICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsCisgICAgICAgICJidWls
ZGVyTmFtZSI6ICJNb2NrIEJ1aWxkZXIiLAorICAgIH0pOworICAgIGVxdWFsKHJlc3VsdHNWaWV3
LmN1cnJlbnRUZXN0TmFtZSgpLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiKTsKKyAg
ICBlcXVhbChyZXN1bHRzVmlldy5jdXJyZW50QnVpbGRlck5hbWUoKSwgIk1vY2sgQnVpbGRlciIp
OworICAgIHJlc3VsdHNWaWV3LnNob3dSZXN1bHRzKHsKKyAgICAgICAgInRlc3ROYW1lIjogInNj
cm9sbGJhcnMvY3VzdG9tLXNjcm9sbGJhci13aXRoLWluY29tcGxldGUtc3R5bGUuaHRtbCIsCisg
ICAgICAgICJidWlsZGVyTmFtZSI6ICJNb2NrIExpbnV4IiwKKyAgICB9KTsKKyAgICBlcXVhbChy
ZXN1bHRzVmlldy5jdXJyZW50VGVzdE5hbWUoKSwgInNjcm9sbGJhcnMvY3VzdG9tLXNjcm9sbGJh
ci13aXRoLWluY29tcGxldGUtc3R5bGUuaHRtbCIpOworICAgIGVxdWFsKHJlc3VsdHNWaWV3LmN1
cnJlbnRCdWlsZGVyTmFtZSgpLCAiTW9jayBMaW51eCIpOworfSkKKworfSkoKTsK
</data>
<flag name="review"
          id="99977"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>