<?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>151635</bug_id>
          
          <creation_ts>2015-11-27 17:28:28 -0800</creation_ts>
          <short_desc>Web Inspector: control whether to collect and dump protocol messages using a WebInspector.Setting</short_desc>
          <delta_ts>2015-12-17 15:54:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>137663</blocked>
    
    <blocked>147066</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1144616</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-27 17:28:28 -0800</bug_when>
    <thetext>The first step towards inspector^2 tooling for analyzing protocol messages. See the meta bug for some big picture ideas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144617</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-11-27 17:28:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/23679143&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144639</commentid>
    <comment_count>2</comment_count>
      <attachid>266212</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-28 00:02:58 -0800</bug_when>
    <thetext>Created attachment 266212
Proposed Fix

May not apply yet, due to being on top of 5 patches. I don&apos;t think it depends on them outright, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144643</commentid>
    <comment_count>3</comment_count>
      <attachid>266213</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-28 00:13:10 -0800</bug_when>
    <thetext>Created attachment 266213
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144662</commentid>
    <comment_count>4</comment_count>
      <attachid>266213</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-11-28 13:35:50 -0800</bug_when>
    <thetext>Comment on attachment 266213
Proposed Fix

Wrong patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144704</commentid>
    <comment_count>5</comment_count>
      <attachid>266228</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-29 17:08:53 -0800</bug_when>
    <thetext>Created attachment 266228
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147932</commentid>
    <comment_count>6</comment_count>
      <attachid>266228</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-12-09 13:33:11 -0800</bug_when>
    <thetext>Comment on attachment 266228
Proposed Fix

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

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js:117
&gt; +        if (this.activeTracer)
&gt; +            this.activeTracer.logStarted();
&gt; +        // If the custom tracer was removed and automatic tracing is enabled,
&gt; +        // then create a new automatic tracer and install it in its place.
&gt; +        else

This style is confusing. The comment should move under the else and add {}.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147940</commentid>
    <comment_count>7</comment_count>
      <attachid>267043</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-09 13:46:15 -0800</bug_when>
    <thetext>Created attachment 267043
For Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147958</commentid>
    <comment_count>8</comment_count>
      <attachid>267043</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-09 14:45:42 -0800</bug_when>
    <thetext>Comment on attachment 267043
For Landing

Clearing flags on attachment: 267043

Committed r193870: &lt;http://trac.webkit.org/changeset/193870&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147959</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-09 14:45:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149172</commentid>
    <comment_count>10</comment_count>
      <attachid>267043</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-12-14 19:08:25 -0800</bug_when>
    <thetext>Comment on attachment 267043
For Landing

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

&gt; Source/WebInspectorUI/UserInterface/Protocol/LoggingProtocolTracer.js:112
&gt; +    logWillHandleEvent(message)
&gt; +    {
&gt; +        console.assert(typeof message === &quot;string&quot;, &quot;Must stringify messages to avoid leaking all JSON protocol messages.&quot;)
&gt; +
&gt; +        let entry = {type: &quot;event&quot;, message};
&gt; +        this._processEntry(entry);
&gt; +    }
&gt; +
&gt; +    logDidHandleEvent(message, timings = null)
&gt; +    {
&gt; +        console.assert(typeof message === &quot;string&quot;, &quot;Must stringify messages to avoid leaking all JSON protocol messages.&quot;)
&gt; +
&gt; +        let entry = {type: &quot;event&quot;, message};
&gt; +        if (timings)
&gt; +            entry.timings = Object.shallowCopy(timings);
&gt; +
&gt; +        this._processEntry(entry);
&gt; +    }

This is processing the entry (logging to console) on both willHandle and didHandle. This means when dumping to the console its happening twice for each event (and response). What is the intended behavior here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149302</commentid>
    <comment_count>11</comment_count>
      <attachid>267043</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-15 09:05:57 -0800</bug_when>
    <thetext>Comment on attachment 267043
For Landing

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/LoggingProtocolTracer.js:112
&gt;&gt; +    }
&gt; 
&gt; This is processing the entry (logging to console) on both willHandle and didHandle. This means when dumping to the console its happening twice for each event (and response). What is the intended behavior here?

The prior behavior was to log twice only if time-stats are enabled. Now it always logs twice. We could change the outer else if to be (this._dumpMessagesToConsole &amp;&amp; !entry.timings).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150086</commentid>
    <comment_count>12</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-17 15:02:09 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150087</commentid>
    <comment_count>13</comment_count>
      <attachid>267585</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-17 15:02:11 -0800</bug_when>
    <thetext>Created attachment 267585
Follow-up fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150092</commentid>
    <comment_count>14</comment_count>
      <attachid>267585</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-12-17 15:05:32 -0800</bug_when>
    <thetext>Comment on attachment 267585
Follow-up fix

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150116</commentid>
    <comment_count>15</comment_count>
      <attachid>267585</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-17 15:54:18 -0800</bug_when>
    <thetext>Comment on attachment 267585
Follow-up fix

Clearing flags on attachment: 267585

Committed r194244: &lt;http://trac.webkit.org/changeset/194244&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150117</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-17 15:54:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266212</attachid>
            <date>2015-11-28 00:02:58 -0800</date>
            <delta_ts>2015-11-28 00:13:07 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>1.patch</filename>
            <type>text/plain</type>
            <size>29645</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDMwM2Q1MGYuLjQxZWI2NWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk4IEBACiAyMDE1LTExLTI3ICBCcmlhbiBCdXJnICA8
YmJ1cmdAYXBwbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbnRyb2wgd2hldGhl
ciB0byBjb2xsZWN0IGFuZCBkdW1wIHByb3RvY29sIG1lc3NhZ2VzIHVzaW5nIGEgV2ViSW5zcGVj
dG9yLlNldHRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MTYzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdoZW4gY2xvc2luZyBhbmQgcmVvcGVuaW5nIHRoZSBpbnNwZWN0b3IsIHRoZSBzZXR0aW5n
IGZvciB3aGV0aGVyCisgICAgICAgIHRvIGR1bXAgcHJvdG9jb2wgbWVzc2FnZXMgc2hvdWxkIGJl
IHBlcnNpc3RlZC4gT3RoZXJ3aXNlLCBlbmFibGluZworICAgICAgICBkdW1waW5nIGZyb20gdGhl
IGRlYnVnLW9ubHkgVUkgd2lsbCBtaXNzIHRoZSBpbml0aWFsIGZsb29kIG9mCisgICAgICAgIG1l
c3NhZ2VzIHRoYXQgYXJlIHByb2Nlc3NlZCB3aGVuIHRoZSBJbnNwZWN0b3IgbG9hZHMgaW5pdGlh
bCBkYXRhLgorCisgICAgICAgIFRvIHN1cHBvcnQgYSBwZXJzaXN0ZW50IHNldHRpbmcsIGFuZCBi
dWlsZCBzb21lIGluZnJhc3RydWN0dXJlIGZvcgorICAgICAgICBtb3JlIGFkdmFuY2VkIHVzZXMg
b2YgY29sbGVjdGVkIHByb3RvY29sIG1lc3NhZ2VzLCB0aGlzIHBhdGNoIGFkZHMKKyAgICAgICAg
YSBuZXcgb2JqZWN0IHRvIHRyYWNlIHByb3RvY29sIGV2ZW50cy4gSXQgZ2V0cyBjYWxsYmFja3Mg
Zm9yIGVhY2gKKyAgICAgICAgYW5kIGltcGxlbWVudHMgdGhlIGNvbnNvbGUtZHVtcGluZyBmdW5j
dGlvbmFsaXR5IHByZXZpb3VzbHkgYmFrZWQgaW4KKyAgICAgICAgdG8gSW5zcGVjdG9yQmFja2Vu
ZC4KKworICAgICAgICBJbiBmb2xsb3ctdXAgcGF0Y2hlcywgb3RoZXIgcHJvdG9jb2wgdHJhY2Vy
cyB3aWxsIGJlIGFkZGVkIHRvIHNhdmUKKyAgICAgICAgcHJvdG9jb2wgZGF0YSB0byBkaXNrLCBt
YXJzaGFsbCBpdCB0byBhIGhpZ2hlciBpbnNwZWN0aW9uIGxldmVsLAorICAgICAgICBvciBwcm92
aWRlIG1vcmUgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciB3aGF0IGlzIGxvZ2dlZC4KKworICAg
ICAgICBUaGlzIGNoYW5nZSBtb3ZlcyBTZXR0aW5nLmpzIGludG8gdGhlIEJhc2UvIGRpcmVjdG9y
eSwKKyAgICAgICAgc2luY2UgaXQgaXMgdXNlZCBieSBWaWV3cywgTW9kZWxzLCBhbmQgbm93IFBy
b3RvY29sIGNsYXNzZXMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5q
czogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9TZXR0aW5nLmpzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNldHRpbmcucHJvdG90eXBlLmdldCBuYW1lKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TZXR0aW5nLnByb3RvdHlwZS5nZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNldHRpbmcucHJvdG90eXBlLnNldCB2YWx1ZSk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9NYWluLmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JC
YWNrZW5kLmpzOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNzKToKKyAgICAgICAgKElu
c3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUuc2V0IGR1bXBJbnNwZWN0b3JQcm90b2NvbE1l
c3NhZ2VzKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUuZ2V0IGR1
bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzKToKKworICAgICAgICAgICAgV2Ugc3RpbGwgd2Fu
dCB0byBzdXBwb3J0IHRoZSBsZWdhY3kgd2F5IHRvIGVuYWJsZSBkdW1waW5nOgorICAgICAgICAg
ICAgYEluc3BlY3RvckJhY2tlbmQuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMgPSB0cnVl
YC4gVGhpcworICAgICAgICAgICAgaXMgYmVjYXVzZSBzb21lIHRlc3RzIGFsd2F5cyB1c2UgaXQs
IGFuZCBpdCdzIGVhc2llciB0byBzZXQgdGhpcworICAgICAgICAgICAgZmxhZyBpbiBhIGN1c3Rv
bSBCb290c3RyYXAuanMgZmlsZSB0aGFuIHRvIGNvbmZpZ3VyZSB0aGUgU2V0dGluZy4KKworICAg
ICAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZS5zZXQgZHVtcEluc3BlY3RvclRp
bWVTdGF0cyk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLmdldCBk
dW1wSW5zcGVjdG9yVGltZVN0YXRzKToKKworICAgICAgICAgICAgV2Ugc3RpbGwgd2FudCB0byBz
dXBwb3J0IHRoZSBsZWdhY3kgd2F5IHRvIGVuYWJsZSBkdW1waW5nOgorICAgICAgICAgICAgYElu
c3BlY3RvckJhY2tlbmQuZHVtcEluc3BlY3RvclRpbWVTdGF0cyA9IHRydWVgLiBUaGlzIGlzCisg
ICAgICAgICAgICBiZWNhdXNlIE1lc3NhZ2VEaXNwYXRjaGVyIGNoZWNrcyB0aGlzIGZsYWcgZm9y
IGl0cyBsb2dnaW5nLgorCisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBl
LnNldCBhY3RpdmVUcmFjZXIpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3Rv
dHlwZS5nZXQgYWN0aXZlVHJhY2VyKToKKworICAgICAgICAgICAgU2V0IHRoZSBhY3RpdmUgdHJh
Y2VyLCBmaW5hbGl6aW5nIGFuZCByZW1vdmluZyBhbnkgYWN0aXZlIHRyYWNlcgorICAgICAgICAg
ICAgaWYgb25lIGV4aXN0cy4gSWYgcmVtb3ZpbmcgYSBjdXN0b20gdHJhY2VyIChzZXR0aW5nIHRv
IG51bGwpLCB0aGVuCisgICAgICAgICAgICByZS1zeW5jIGFjdGl2ZVRyYWNlciB3aXRoIHRoZSBh
dXRvbWF0aWMgdHJhY2luZyBTZXR0aW5nLgorCisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xh
c3MucHJvdG90eXBlLmRpc3BhdGNoKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmRDbGFzcy5w
cm90b3R5cGUuX3N0YXJ0T3JTdG9wQXV0b21hdGljVHJhY2luZyk6CisKKyAgICAgICAgICAgIFN5
bmMgdGhlIFNldHRpbmcgd2l0aCBhY3RpdmVUcmFjZXIuIElmIGFuIGN1c3RvbSB0cmFjZXIgaXMg
YWN0aXZlLAorICAgICAgICAgICAgZG9uJ3QgcmVwbGFjZSBpdCB3aXRoIHRoZSBhdXRvbWF0aWMg
bG9nZ2luZyB0cmFjZXIuCisKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5
cGUuX3NlbmRDb21tYW5kVG9CYWNrZW5kV2l0aENhbGxiYWNrKToKKyAgICAgICAgKEluc3BlY3Rv
ckJhY2tlbmRDbGFzcy5wcm90b3R5cGUuX3NlbmRDb21tYW5kVG9CYWNrZW5kRXhwZWN0aW5nUHJv
bWlzZSk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLl9zZW5kTWVz
c2FnZVRvQmFja2VuZCk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBl
Ll9kaXNwYXRjaFJlc3BvbnNlKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90
b3R5cGUuX2Rpc3BhdGNoRXZlbnQpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnBy
b3RvdHlwZS5fZmx1c2hQZW5kaW5nU2NyaXB0cyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Q
cm90b2NvbC9Mb2dnaW5nUHJvdG9jb2xUcmFjZXIuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkxvZ2dpbmdQcm90b2NvbFRyYWNlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTG9n
Z2luZ1Byb3RvY29sVHJhY2VyLnByb3RvdHlwZS5zZXQgZHVtcE1lc3NhZ2VzVG9Db25zb2xlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Mb2dnaW5nUHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLmdl
dCBkdW1wTWVzc2FnZXNUb0NvbnNvbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxvZ2dpbmdQ
cm90b2NvbFRyYWNlci5wcm90b3R5cGUuc2V0IGR1bXBUaW1pbmdEYXRhVG9Db25zb2xlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Mb2dnaW5nUHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLmdldCBk
dW1wVGltaW5nRGF0YVRvQ29uc29sZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTG9nZ2luZ1By
b3RvY29sVHJhY2VyLnByb3RvdHlwZS5sb2dGcm9udGVuZEV4Y2VwdGlvbik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuTG9nZ2luZ1Byb3RvY29sVHJhY2VyLnByb3RvdHlwZS5sb2dQcm90b2NvbEVy
cm9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Mb2dnaW5nUHJvdG9jb2xUcmFjZXIucHJvdG90
eXBlLmxvZ0Zyb250ZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTG9nZ2luZ1By
b3RvY29sVHJhY2VyLnByb3RvdHlwZS5sb2dXaWxsSGFuZGxlUmVzcG9uc2UpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkxvZ2dpbmdQcm90b2NvbFRyYWNlci5wcm90b3R5cGUubG9nRGlkSGFuZGxl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxvZ2dpbmdQcm90b2NvbFRyYWNlci5w
cm90b3R5cGUubG9nV2lsbEhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Mb2dn
aW5nUHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLmxvZ0RpZEhhbmRsZUV2ZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Mb2dnaW5nUHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLl9wcm9jZXNzRW50
cnkpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUHJvdG9jb2xUcmFjZXIuanM6
IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb3RvY29sVHJhY2VyLnByb3RvdHlwZS5s
b2dTdGFydGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm90b2NvbFRyYWNlci5wcm90b3R5
cGUubG9nRnJvbnRlbmRFeGNlcHRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb3RvY29s
VHJhY2VyLnByb3RvdHlwZS5sb2dQcm90b2NvbEVycm9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Qcm90b2NvbFRyYWNlci5wcm90b3R5cGUubG9nRnJvbnRlbmRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Qcm90b2NvbFRyYWNlci5wcm90b3R5cGUubG9nV2lsbEhhbmRsZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm90b2NvbFRyYWNlci5wcm90b3R5cGUubG9n
RGlkSGFuZGxlUmVzcG9uc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb3RvY29sVHJhY2Vy
LnByb3RvdHlwZS5sb2dXaWxsSGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBy
b3RvY29sVHJhY2VyLnByb3RvdHlwZS5sb2dEaWRIYW5kbGVFdmVudCk6ICAgICAgICAoV2ViSW5z
cGVjdG9yLlByb3RvY29sVHJhY2VyLnByb3RvdHlwZS5sb2dGaW5pc2hlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUHJvdG9jb2xUcmFjZXIpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVz
dC5odG1sOgorCisyMDE1LTExLTI3ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBjb250ZXh0IG1lbnUgaXRlbSB0byBSZWxvYWQgdGhl
IEluc3BlY3RvcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQxNzQyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9TZXR0aW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9TZXR0aW5nLmpzCnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIFNvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TZXR0aW5nLmpzCnJlbmFtZSB0
byBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMKaW5k
ZXggNTZlOTk3OC4uMmY5YzA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL1NldHRpbmcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCkBAIC0zNyw3ICszNyw3IEBAIFdlYkluc3Bl
Y3Rvci5TZXR0aW5nID0gY2xhc3MgU2V0dGluZyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
IAogICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKIAotICAgICAgICBsZXQgaW5zcGVjdGlvbkxl
dmVsID0gSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmluc3BlY3Rpb25MZXZlbCgpOworICAgICAgICBs
ZXQgaW5zcGVjdGlvbkxldmVsID0gSW5zcGVjdG9yRnJvbnRlbmRIb3N0ID8gSW5zcGVjdG9yRnJv
bnRlbmRIb3N0Lmluc3BlY3Rpb25MZXZlbCgpIDogMTsKICAgICAgICAgbGV0IGxldmVsU3RyaW5n
ID0gaW5zcGVjdGlvbkxldmVsID4gMSA/ICItIiArIGluc3BlY3Rpb25MZXZlbCA6ICIiOwogICAg
ICAgICB0aGlzLl9sb2NhbFN0b3JhZ2VLZXkgPSBgY29tLmFwcGxlLldlYkluc3BlY3RvciR7bGV2
ZWxTdHJpbmd9LiR7bmFtZX1gOwogICAgICAgICB0aGlzLl9kZWZhdWx0VmFsdWUgPSBkZWZhdWx0
VmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9E
ZWJ1Zy9Cb290c3RyYXAuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9E
ZWJ1Zy9Cb290c3RyYXAuanMKaW5kZXggOTQ4ZjFlOS4uNzdlNGRiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGVidWcvQm9vdHN0cmFwLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVnL0Jvb3RzdHJhcC5qcwpA
QCAtNDcsNCArNDcsNiBAQCBXZWJJbnNwZWN0b3IucnVuQm9vdHN0cmFwT3BlcmF0aW9ucyA9IGZ1
bmN0aW9uKCkgewogCiAgICAgV2ViSW5zcGVjdG9yLnNob3dEZWJ1Z1VJU2V0dGluZy5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHVwZGF0ZURlYnVn
VUkpOwogICAgIHVwZGF0ZURlYnVnVUkoKTsKKworICAgIFdlYkluc3BlY3Rvci5yZWdpc3RlclRh
YkNsYXNzKFdlYkluc3BlY3Rvci5Qcm90b2NvbFRhYkNvbnRlbnRWaWV3KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA4YjVmNzJjLi42
YmFjODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
YWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sCkBAIC0yMjAsNiArMjIwLDEwIEBACiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvTUlNRVR5cGVV
dGlsaXRpZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL1VSTFV0aWxpdGll
cy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvVXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQmFzZS9TZXR0aW5nLmpzIj48L3NjcmlwdD4KKworICAg
IDxzY3JpcHQgc3JjPSJQcm90b2NvbC9Qcm90b2NvbFRyYWNlci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9IlByb3RvY29sL0xvZ2dpbmdQcm90b2NvbFRyYWNlci5qcyI+PC9zY3JpcHQ+
CiAKICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZU9ic2VydmVyLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanMiPjwv
c2NyaXB0PgpAQCAtMzE5LDcgKzMyMyw2IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9TY3Jp
cHQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvU2NyaXB0U3ludGF4VHJl
ZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9TY3JpcHRUaW1lbGluZVJl
Y29yZC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9TZXR0aW5nLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1NvdXJjZUNvZGVQb3NpdGlvbi5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Tb3VyY2VDb2RlUmV2aXNpb24uanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvU291cmNlQ29kZVNlYXJjaE1hdGNo
T2JqZWN0LmpzIj48L3NjcmlwdD4KQEAgLTYyOSw2ICs2MzIsNyBAQAogICAgIDxzY3JpcHQgc3Jj
PSJCYXNlL01haW4uanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9IkRlYnVnL0Jvb3Rz
dHJhcC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkRlYnVnL1Byb3RvY29sVGFiQ29u
dGVudFZpZXcuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdD4KICAgICAgICAgV2ViSW5zcGVj
dG9yLmxvYWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMKaW5kZXggYWU4YmE3
My4uMzMyNmZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpzCkBAIC0zOCwxNyAr
MzgsOTEgQEAgSW5zcGVjdG9yQmFja2VuZENsYXNzID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENs
YXNzCiAgICAgICAgIHRoaXMuX3BlbmRpbmdSZXNwb25zZXMgPSBuZXcgTWFwOwogICAgICAgICB0
aGlzLl9hZ2VudHMgPSB7fTsKICAgICAgICAgdGhpcy5fZGVmZXJyZWRTY3JpcHRzID0gW107Cisg
ICAgICAgIHRoaXMuX2FjdGl2ZVRyYWNlciA9IG51bGw7CisgICAgICAgIHRoaXMuX2F1dG9tYXRp
Y1RyYWNlciA9IG51bGw7CiAKLSAgICAgICAgdGhpcy5kdW1wSW5zcGVjdG9yVGltZVN0YXRzID0g
ZmFsc2U7Ci0gICAgICAgIHRoaXMuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMgPSBmYWxz
ZTsKLSAgICAgICAgdGhpcy53YXJuRm9yTG9uZ01lc3NhZ2VIYW5kbGluZyA9IGZhbHNlOwotICAg
ICAgICB0aGlzLmxvbmdNZXNzYWdlSGFuZGxpbmdUaHJlc2hvbGQgPSAxMDsgLy8gbWlsbGlzZWNv
bmRzLgorICAgICAgICB0aGlzLl9kdW1wSW5zcGVjdG9yVGltZVN0YXRzID0gZmFsc2U7CiAKLSAg
ICAgICAgdGhpcy5fbG9nID0gd2luZG93Lkluc3BlY3RvclRlc3QgPyBJbnNwZWN0b3JGcm9udGVu
ZEhvc3QudW5idWZmZXJlZExvZy5iaW5kKEluc3BlY3RvckZyb250ZW5kSG9zdCkgOiBjb25zb2xl
LmxvZy5iaW5kKGNvbnNvbGUpOworICAgICAgICBsZXQgc2V0dGluZyA9IFdlYkluc3BlY3Rvci5h
dXRvTG9nUHJvdG9jb2xNZXNzYWdlc1NldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmco
ImF1dG8tY29sbGVjdC1wcm90b2NvbC1tZXNzYWdlcyIsIGZhbHNlKTsKKyAgICAgICAgc2V0dGlu
Zy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRo
aXMuX3N0YXJ0T3JTdG9wQXV0b21hdGljVHJhY2luZy5iaW5kKHRoaXMpKQorICAgICAgICB0aGlz
Ll9zdGFydE9yU3RvcEF1dG9tYXRpY1RyYWNpbmcoKTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAorICAgIC8vIEl0J3Mgc3RpbGwgcG9zc2libGUgdG8gc2V0IHRoaXMgZmxhZyBvbiBJbnNwZWN0
b3JCYWNrZW5kIHRvIGp1c3QKKyAgICAvLyBkdW1wIHByb3RvY29sIHRyYWZmaWMgYXMgaXQgaGFw
cGVucy4gRm9yIG1vcmUgY29tcGxleCB1c2VzIG9mCisgICAgLy8gcHJvdG9jb2wgZGF0YSwgaW5z
dGFsbCBhIHN1YmNsYXNzIG9mIFdlYkluc3BlY3Rvci5Qcm90b2NvbFRyYWNlci4KKyAgICBzZXQg
ZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXModmFsdWUpCisgICAgeworICAgICAgICAvLyBJ
bXBsaWNpdGx5IGNhdXNlIGF1dG9tYXRpYyBsb2dnaW5nIHRvIHN0YXJ0IGlmIGl0J3MgYWxsb3dl
ZC4KKyAgICAgICAgbGV0IHNldHRpbmcgPSBXZWJJbnNwZWN0b3IuYXV0b0xvZ1Byb3RvY29sTWVz
c2FnZXNTZXR0aW5nOworICAgICAgICBzZXR0aW5nLnZhbHVlID0gdmFsdWU7CisKKyAgICAgICAg
aWYgKHRoaXMuYWN0aXZlVHJhY2VyICE9PSB0aGlzLl9hdXRvbWF0aWNUcmFjZXIpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMuYWN0aXZlVHJhY2VyKQorICAgICAgICAg
ICAgdGhpcy5hY3RpdmVUcmFjZXIuZHVtcE1lc3NhZ2VzVG9Db25zb2xlID0gdmFsdWU7CisgICAg
fQorCisgICAgZ2V0IGR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiAhIXRoaXMuX2F1dG9tYXRpY1RyYWNlcjsKKyAgICB9CisKKyAgICBzZXQgZHVt
cEluc3BlY3RvclRpbWVTdGF0cyh2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5kdW1w
SW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcykKKyAgICAgICAgICAgIHRoaXMuZHVtcEluc3BlY3Rv
clByb3RvY29sTWVzc2FnZXMgPSB0cnVlOworCisgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNl
ciAhPT0gdGhpcy5fYXV0b21hdGljVHJhY2VyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNlcikKKyAgICAgICAgICAgIHRoaXMuYWN0aXZlVHJhY2Vy
LmR1bXBUaW1pbmdEYXRhVG9Db25zb2xlID0gdmFsdWU7CisgICAgfQorCisgICAgZ2V0IGR1bXBJ
bnNwZWN0b3JUaW1lU3RhdHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2R1bXBJbnNw
ZWN0b3JUaW1lU3RhdHM7CisgICAgfQorCisgICAgc2V0IGFjdGl2ZVRyYWNlcih0cmFjZXIpCisg
ICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCghdHJhY2VyIHx8IHRyYWNlciBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5Qcm90b2NvbFRyYWNlcik7CisKKyAgICAgICAgLy8gQmFpbCBlYXJseSBp
ZiBubyBzdGF0ZSBjaGFuZ2UgaXMgdG8gYmUgbWFkZS4KKyAgICAgICAgaWYgKCF0cmFjZXIgJiYg
IXRoaXMuX2FjdGl2ZVRyYWNlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAo
dHJhY2VyID09PSB0aGlzLl9hY3RpdmVUcmFjZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgLy8gRG9uJ3QgYWxsb3cgYW4gYXV0b21hdGljIHRyYWNlciB0byBkaXNsb2RnZSBhIGN1
c3RvbSB0cmFjZXIuCisgICAgICAgIGlmICh0aGlzLl9hY3RpdmVUcmFjZXIgJiYgdHJhY2VyID09
PSB0aGlzLl9hdXRvbWF0aWNUcmFjZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
aWYgKHRoaXMuYWN0aXZlVHJhY2VyKQorICAgICAgICAgICAgdGhpcy5hY3RpdmVUcmFjZXIubG9n
RmluaXNoZWQoKTsKKworICAgICAgICBpZiAodGhpcy5fYWN0aXZlVHJhY2VyID09PSB0aGlzLl9h
dXRvbWF0aWNUcmFjZXIpCisgICAgICAgICAgICB0aGlzLl9hdXRvbWF0aWNUcmFjZXIgPSBudWxs
OworCisgICAgICAgIHRoaXMuX2FjdGl2ZVRyYWNlciA9IHRyYWNlcjsKKyAgICAgICAgaWYgKHRo
aXMuYWN0aXZlVHJhY2VyKQorICAgICAgICAgICAgdGhpcy5hY3RpdmVUcmFjZXIubG9nU3RhcnRl
ZCgpOworICAgICAgICAvLyBJZiB0aGUgY3VzdG9tIHRyYWNlciB3YXMgcmVtb3ZlZCBhbmQgYXV0
b21hdGljIHRyYWNpbmcgaXMgZW5hYmxlZCwKKyAgICAgICAgLy8gdGhlbiBjcmVhdGUgYSBuZXcg
YXV0b21hdGljIHRyYWNlciBhbmQgaW5zdGFsbCBpdCBpbiBpdHMgcGxhY2UuCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHRoaXMuX3N0YXJ0T3JTdG9wQXV0b21hdGljVHJhY2luZygpOworICAg
IH0KKworICAgIGdldCBhY3RpdmVUcmFjZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2FjdGl2ZVRyYWNlciB8fCBudWxsOworICAgIH0KKwogICAgIHJlZ2lzdGVyQ29tbWFuZChxdWFs
aWZpZWROYW1lLCBjYWxsU2lnbmF0dXJlLCByZXBseVNpZ25hdHVyZSkKICAgICB7CiAgICAgICAg
IHZhciBbZG9tYWluTmFtZSwgY29tbWFuZE5hbWVdID0gcXVhbGlmaWVkTmFtZS5zcGxpdCgiLiIp
OwpAQCAtNzgsMTAgKzE1Miw3IEBAIEluc3BlY3RvckJhY2tlbmRDbGFzcyA9IGNsYXNzIEluc3Bl
Y3RvckJhY2tlbmRDbGFzcwogCiAgICAgZGlzcGF0Y2gobWVzc2FnZSkKICAgICB7Ci0gICAgICAg
IGlmICh0aGlzLmR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzKQotICAgICAgICAgICAgdGhp
cy5fbG9nKCJiYWNrZW5kOiAiICsgKCh0eXBlb2YgbWVzc2FnZSA9PT0gInN0cmluZyIpID8gbWVz
c2FnZSA6IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKSk7Ci0KLSAgICAgICAgdmFyIG1lc3NhZ2VP
YmplY3QgPSAodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciKSA/IEpTT04ucGFyc2UobWVzc2Fn
ZSkgOiBtZXNzYWdlOworICAgICAgICBsZXQgbWVzc2FnZU9iamVjdCA9ICh0eXBlb2YgbWVzc2Fn
ZSA9PT0gInN0cmluZyIpID8gSlNPTi5wYXJzZShtZXNzYWdlKSA6IG1lc3NhZ2U7CiAKICAgICAg
ICAgaWYgKCJpZCIgaW4gbWVzc2FnZU9iamVjdCkKICAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNo
UmVzcG9uc2UobWVzc2FnZU9iamVjdCk7CkBAIC0xMTMsNiArMTg0LDI4IEBAIEluc3BlY3RvckJh
Y2tlbmRDbGFzcyA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDbGFzcwogCiAgICAgLy8gUHJpdmF0
ZQogCisgICAgX3N0YXJ0T3JTdG9wQXV0b21hdGljVHJhY2luZygpCisgICAgeworICAgICAgICBs
ZXQgc2V0dGluZyA9IFdlYkluc3BlY3Rvci5hdXRvTG9nUHJvdG9jb2xNZXNzYWdlc1NldHRpbmc7
CisKKyAgICAgICAgLy8gQmFpbCBpZiB0aGVyZSBpcyBubyBzdGF0ZSB0cmFuc2l0aW9uIHRvIGJl
IG1hZGUuCisgICAgICAgIGlmICghKHNldHRpbmcudmFsdWUgXiAhIXRoaXMuYWN0aXZlVHJhY2Vy
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIXNldHRpbmcudmFsdWUpIHsK
KyAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNlciA9PT0gdGhpcy5fYXV0b21hdGljVHJh
Y2VyKQorICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVHJhY2VyID0gbnVsbDsKKworICAgICAg
ICAgICAgdGhpcy5fYXV0b21hdGljVHJhY2VyID0gbnVsbDsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHRoaXMuX2F1dG9tYXRpY1RyYWNlciA9IG5ldyBXZWJJbnNwZWN0b3IuTG9nZ2lu
Z1Byb3RvY29sVHJhY2VyOworICAgICAgICAgICAgdGhpcy5fYXV0b21hdGljVHJhY2VyLmR1bXBN
ZXNzYWdlc1RvQ29uc29sZSA9IHRoaXMuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXM7Cisg
ICAgICAgICAgICB0aGlzLl9hdXRvbWF0aWNUcmFjZXIuZHVtcFRpbWluZ0RhdGFUb0NvbnNvbGUg
PSB0aGlzLmR1bXBUaW1pbmdEYXRhVG9Db25zb2xlOworICAgICAgICAgICAgLy8gVGhpcyB3aWxs
IGJlIGlnbm9yZWQgaWYgYSBjdXN0b20gdHJhY2VyIGlzIGluc3RhbGxlZC4KKyAgICAgICAgICAg
IHRoaXMuYWN0aXZlVHJhY2VyID0gdGhpcy5fYXV0b21hdGljVHJhY2VyOworICAgICAgICB9Cisg
ICAgfQorCiAgICAgX2FnZW50Rm9yRG9tYWluKGRvbWFpbk5hbWUpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fYWdlbnRzW2RvbWFpbk5hbWVdKQpAQCAtMTM3LDcgKzIzMCw3IEBAIEluc3BlY3Rv
ckJhY2tlbmRDbGFzcyA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDbGFzcwogCiAgICAgICAgIGxl
dCByZXNwb25zZURhdGEgPSB7Y29tbWFuZCwgY2FsbGJhY2t9OwogCi0gICAgICAgIGlmICh0aGlz
LmR1bXBJbnNwZWN0b3JUaW1lU3RhdHMpCisgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNlcikK
ICAgICAgICAgICAgIHJlc3BvbnNlRGF0YS5zZW5kUmVxdWVzdFRpbWVzdGFtcCA9IHRpbWVzdGFt
cCgpOwogCiAgICAgICAgIHRoaXMuX3BlbmRpbmdSZXNwb25zZXMuc2V0KHNlcXVlbmNlSWQsIHJl
c3BvbnNlRGF0YSk7CkBAIC0xNTgsNyArMjUxLDcgQEAgSW5zcGVjdG9yQmFja2VuZENsYXNzID0g
Y2xhc3MgSW5zcGVjdG9yQmFja2VuZENsYXNzCiAKICAgICAgICAgbGV0IHJlc3BvbnNlRGF0YSA9
IHtjb21tYW5kfTsKIAotICAgICAgICBpZiAodGhpcy5kdW1wSW5zcGVjdG9yVGltZVN0YXRzKQor
ICAgICAgICBpZiAodGhpcy5hY3RpdmVUcmFjZXIpCiAgICAgICAgICAgICByZXNwb25zZURhdGEu
c2VuZFJlcXVlc3RUaW1lc3RhbXAgPSB0aW1lc3RhbXAoKTsKIAogICAgICAgICBsZXQgcmVzcG9u
c2VQcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CkBAIC0x
NzQsOCArMjY3LDggQEAgSW5zcGVjdG9yQmFja2VuZENsYXNzID0gY2xhc3MgSW5zcGVjdG9yQmFj
a2VuZENsYXNzCiAgICAgX3NlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2VPYmplY3QpCiAgICAg
ewogICAgICAgICBsZXQgc3RyaW5naWZpZWRNZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkobWVzc2Fn
ZU9iamVjdCk7Ci0gICAgICAgIGlmICh0aGlzLmR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2Vz
KQotICAgICAgICAgICAgdGhpcy5fbG9nKCJmcm9udGVuZDogIiArIHN0cmluZ2lmaWVkTWVzc2Fn
ZSk7CisgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNlcikKKyAgICAgICAgICAgIHRoaXMuYWN0
aXZlVHJhY2VyLmxvZ0Zyb250ZW5kUmVxdWVzdChzdHJpbmdpZmllZE1lc3NhZ2UpOwogCiAgICAg
ICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zZW5kTWVzc2FnZVRvQmFja2VuZChzdHJpbmdpZmll
ZE1lc3NhZ2UpOwogICAgIH0KQEAgLTE5NSw5ICsyODgsMTEgQEAgSW5zcGVjdG9yQmFja2VuZENs
YXNzID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENsYXNzCiAgICAgICAgIGxldCByZXNwb25zZURh
dGEgPSB0aGlzLl9wZW5kaW5nUmVzcG9uc2VzLnRha2Uoc2VxdWVuY2VJZCk7CiAgICAgICAgIGxl
dCB7Y29tbWFuZCwgY2FsbGJhY2ssIHByb21pc2V9ID0gcmVzcG9uc2VEYXRhOwogCi0gICAgICAg
IHZhciBwcm9jZXNzaW5nU3RhcnRUaW1lc3RhbXA7Ci0gICAgICAgIGlmICh0aGlzLmR1bXBJbnNw
ZWN0b3JUaW1lU3RhdHMpCisgICAgICAgIGxldCBwcm9jZXNzaW5nU3RhcnRUaW1lc3RhbXA7Cisg
ICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNlcikgewogICAgICAgICAgICAgcHJvY2Vzc2luZ1N0
YXJ0VGltZXN0YW1wID0gdGltZXN0YW1wKCk7CisgICAgICAgICAgICB0aGlzLmFjdGl2ZVRyYWNl
ci5sb2dXaWxsSGFuZGxlUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCkpOwor
ICAgICAgICB9CiAKICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uIikK
ICAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoUmVzcG9uc2VUb0NhbGxiYWNrKGNvbW1hbmQsIG1l
c3NhZ2VPYmplY3QsIGNhbGxiYWNrKTsKQEAgLTIwNiwxMyArMzAxLDEwIEBAIEluc3BlY3RvckJh
Y2tlbmRDbGFzcyA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDbGFzcwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjb25zb2xlLmVycm9yKCJSZWNlaXZlZCBhIGNvbW1hbmQgcmVzcG9uc2Ugd2l0
aG91dCBhIGNvcnJlc3BvbmRpbmcgY2FsbGJhY2sgb3IgcHJvbWlzZS4iLCBtZXNzYWdlT2JqZWN0
LCBjb21tYW5kKTsKIAotICAgICAgICBsZXQgcHJvY2Vzc2luZ0R1cmF0aW9uID0gKHRpbWVzdGFt
cCgpIC0gcHJvY2Vzc2luZ1N0YXJ0VGltZXN0YW1wKS50b0ZpeGVkKDMpOwotICAgICAgICBpZiAo
dGhpcy53YXJuRm9yTG9uZ01lc3NhZ2VIYW5kbGluZyAmJiBwcm9jZXNzaW5nRHVyYXRpb24gPiB0
aGlzLmxvbmdNZXNzYWdlSGFuZGxpbmdUaHJlc2hvbGQpCi0gICAgICAgICAgICBjb25zb2xlLndh
cm4oYEluc3BlY3RvckJhY2tlbmQ6IHRvb2sgJHtwcm9jZXNzaW5nRHVyYXRpb259bXMgdG8gaGFu
ZGxlIHJlc3BvbnNlIGZvciBjb21tYW5kOiAke2NvbW1hbmQucXVhbGlmaWVkTmFtZX1gKTsKLQot
ICAgICAgICBpZiAodGhpcy5kdW1wSW5zcGVjdG9yVGltZVN0YXRzKSB7Ci0gICAgICAgICAgICBs
ZXQgcm91bmRUcmlwRHVyYXRpb24gPSAocHJvY2Vzc2luZ1N0YXJ0VGltZXN0YW1wIC0gcmVzcG9u
c2VEYXRhLnNlbmRSZXF1ZXN0VGltZXN0YW1wKS50b0ZpeGVkKDMpOwotICAgICAgICAgICAgY29u
c29sZS5sb2coYHRpbWUtc3RhdHM6IEhhbmRsaW5nOiAke3Byb2Nlc3NpbmdEdXJhdGlvbn1tczsg
UlRUOiAke3JvdW5kVHJpcER1cmF0aW9ufW1zOyAoY29tbWFuZCAke2NvbW1hbmQucXVhbGlmaWVk
TmFtZX0pYCk7CisgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNlcikgeworICAgICAgICAgICAg
bGV0IHByb2Nlc3NpbmdUaW1lID0gKHRpbWVzdGFtcCgpIC0gcHJvY2Vzc2luZ1N0YXJ0VGltZXN0
YW1wKS50b0ZpeGVkKDMpOworICAgICAgICAgICAgbGV0IHJvdW5kVHJpcFRpbWUgPSAocHJvY2Vz
c2luZ1N0YXJ0VGltZXN0YW1wIC0gcmVzcG9uc2VEYXRhLnNlbmRSZXF1ZXN0VGltZXN0YW1wKS50
b0ZpeGVkKDMpOworICAgICAgICAgICAgdGhpcy5hY3RpdmVUcmFjZXIubG9nRGlkSGFuZGxlUmVz
cG9uc2UoSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCksIHtydHQ6IHJvdW5kVHJpcFRpbWUs
IGRpc3BhdGNoOiBwcm9jZXNzaW5nVGltZX0pOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHRo
aXMuX2RlZmVycmVkU2NyaXB0cy5sZW5ndGggJiYgIXRoaXMuX3BlbmRpbmdSZXNwb25zZXMuc2l6
ZSkKQEAgLTI0Nyw0OCArMzM5LDQ3IEBAIEluc3BlY3RvckJhY2tlbmRDbGFzcyA9IGNsYXNzIElu
c3BlY3RvckJhY2tlbmRDbGFzcwogCiAgICAgX2Rpc3BhdGNoRXZlbnQobWVzc2FnZU9iamVjdCkK
ICAgICB7Ci0gICAgICAgIHZhciBxdWFsaWZpZWROYW1lID0gbWVzc2FnZU9iamVjdFsibWV0aG9k
Il07Ci0gICAgICAgIHZhciBbZG9tYWluTmFtZSwgZXZlbnROYW1lXSA9IHF1YWxpZmllZE5hbWUu
c3BsaXQoIi4iKTsKKyAgICAgICAgbGV0IHF1YWxpZmllZE5hbWUgPSBtZXNzYWdlT2JqZWN0WyJt
ZXRob2QiXTsKKyAgICAgICAgbGV0IFtkb21haW5OYW1lLCBldmVudE5hbWVdID0gcXVhbGlmaWVk
TmFtZS5zcGxpdCgiLiIpOwogICAgICAgICBpZiAoIShkb21haW5OYW1lIGluIHRoaXMuX2FnZW50
cykpIHsKICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlByb3RvY29sIEVycm9yOiBBdHRlbXB0
ZWQgdG8gZGlzcGF0Y2ggbWV0aG9kICciICsgZXZlbnROYW1lICsgIicgZm9yIG5vbi1leGlzdGlu
ZyBkb21haW4gJyIgKyBkb21haW5OYW1lICsgIiciKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIHZhciBhZ2VudCA9IHRoaXMuX2FnZW50Rm9yRG9tYWluKGRvbWFp
bk5hbWUpOworICAgICAgICBsZXQgYWdlbnQgPSB0aGlzLl9hZ2VudEZvckRvbWFpbihkb21haW5O
YW1lKTsKICAgICAgICAgaWYgKCFhZ2VudC5hY3RpdmUpIHsKICAgICAgICAgICAgIGNvbnNvbGUu
ZXJyb3IoIlByb3RvY29sIEVycm9yOiBBdHRlbXB0ZWQgdG8gZGlzcGF0Y2ggbWV0aG9kIGZvciBk
b21haW4gJyIgKyBkb21haW5OYW1lICsgIicgd2hpY2ggZXhpc3RzIGJ1dCBpcyBub3QgYWN0aXZl
LiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIGV2ZW50
ID0gYWdlbnQuZ2V0RXZlbnQoZXZlbnROYW1lKTsKKyAgICAgICAgbGV0IGV2ZW50ID0gYWdlbnQu
Z2V0RXZlbnQoZXZlbnROYW1lKTsKICAgICAgICAgaWYgKCFldmVudCkgewogICAgICAgICAgICAg
Y29uc29sZS5lcnJvcigiUHJvdG9jb2wgRXJyb3I6IEF0dGVtcHRlZCB0byBkaXNwYXRjaCBhbiB1
bnNwZWNpZmllZCBtZXRob2QgJyIgKyBxdWFsaWZpZWROYW1lICsgIiciKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBldmVudEFyZ3VtZW50cyA9IFtdOwot
ICAgICAgICBpZiAobWVzc2FnZU9iamVjdFsicGFyYW1zIl0pIHsKLSAgICAgICAgICAgIHZhciBw
YXJhbWV0ZXJOYW1lcyA9IGV2ZW50LnBhcmFtZXRlck5hbWVzOwotICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBwYXJhbWV0ZXJOYW1lcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAg
ICBldmVudEFyZ3VtZW50cy5wdXNoKG1lc3NhZ2VPYmplY3RbInBhcmFtcyJdW3BhcmFtZXRlck5h
bWVzW2ldXSk7Ci0gICAgICAgIH0KKyAgICAgICAgbGV0IGV2ZW50QXJndW1lbnRzID0gW107Cisg
ICAgICAgIGlmIChtZXNzYWdlT2JqZWN0WyJwYXJhbXMiXSkKKyAgICAgICAgICAgIGV2ZW50QXJn
dW1lbnRzID0gZXZlbnQucGFyYW1ldGVyTmFtZXMubWFwKChuYW1lKSA9PiBtZXNzYWdlT2JqZWN0
WyJwYXJhbXMiXVtuYW1lXSk7CiAKLSAgICAgICAgdmFyIHByb2Nlc3NpbmdTdGFydFRpbWVzdGFt
cDsKLSAgICAgICAgaWYgKHRoaXMuZHVtcEluc3BlY3RvclRpbWVTdGF0cykKKyAgICAgICAgbGV0
IHByb2Nlc3NpbmdTdGFydFRpbWVzdGFtcDsKKyAgICAgICAgaWYgKHRoaXMuYWN0aXZlVHJhY2Vy
KSB7CiAgICAgICAgICAgICBwcm9jZXNzaW5nU3RhcnRUaW1lc3RhbXAgPSB0aW1lc3RhbXAoKTsK
KyAgICAgICAgICAgIHRoaXMuYWN0aXZlVHJhY2VyLmxvZ1dpbGxIYW5kbGVFdmVudChKU09OLnN0
cmluZ2lmeShtZXNzYWdlT2JqZWN0KSk7CisgICAgICAgIH0KIAogICAgICAgICB0cnkgewogICAg
ICAgICAgICAgYWdlbnQuZGlzcGF0Y2hFdmVudChldmVudE5hbWUsIGV2ZW50QXJndW1lbnRzKTsK
ICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgY29uc29sZS5lcnJvcigiVW5jYXVn
aHQgZXhjZXB0aW9uIGluIGluc3BlY3RvciBwYWdlIHdoaWxlIGhhbmRsaW5nIGV2ZW50ICIgKyBx
dWFsaWZpZWROYW1lLCBlKTsKKyAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNlcikKKyAg
ICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRyYWNlci5sb2dGcm9udGVuZEV4Y2VwdGlvbihKU09O
LnN0cmluZ2lmeShtZXNzYWdlT2JqZWN0KSwgZSk7CiAgICAgICAgIH0KIAotICAgICAgICBsZXQg
cHJvY2Vzc2luZ0R1cmF0aW9uID0gKHRpbWVzdGFtcCgpIC0gcHJvY2Vzc2luZ1N0YXJ0VGltZXN0
YW1wKS50b0ZpeGVkKDMpOwotICAgICAgICBpZiAodGhpcy53YXJuRm9yTG9uZ01lc3NhZ2VIYW5k
bGluZyAmJiBwcm9jZXNzaW5nRHVyYXRpb24gPiB0aGlzLmxvbmdNZXNzYWdlSGFuZGxpbmdUaHJl
c2hvbGQpCi0gICAgICAgICAgICBjb25zb2xlLndhcm4oYEluc3BlY3RvckJhY2tlbmQ6IHRvb2sg
JHtwcm9jZXNzaW5nRHVyYXRpb259bXMgdG8gaGFuZGxlIGV2ZW50OiAke21lc3NhZ2VPYmplY3Qu
bWV0aG9kfWApOwotCi0gICAgICAgIGlmICh0aGlzLmR1bXBJbnNwZWN0b3JUaW1lU3RhdHMpCi0g
ICAgICAgICAgICBjb25zb2xlLmxvZyhgdGltZS1zdGF0czogSGFuZGxpbmc6ICR7cHJvY2Vzc2lu
Z0R1cmF0aW9ufW1zIChldmVudCAke21lc3NhZ2VPYmplY3QubWV0aG9kfSlgKTsKKyAgICAgICAg
aWYgKHRoaXMuYWN0aXZlVHJhY2VyKSB7CisgICAgICAgICAgICBsZXQgcHJvY2Vzc2luZ1RpbWUg
PSAodGltZXN0YW1wKCkgLSBwcm9jZXNzaW5nU3RhcnRUaW1lc3RhbXApLnRvRml4ZWQoMyk7Cisg
ICAgICAgICAgICB0aGlzLmFjdGl2ZVRyYWNlci5sb2dEaWRIYW5kbGVFdmVudChKU09OLnN0cmlu
Z2lmeShtZXNzYWdlT2JqZWN0KSwge2Rpc3BhdGNoOiBwcm9jZXNzaW5nVGltZX0pOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgX3JlcG9ydFByb3RvY29sRXJyb3IobWVzc2FnZU9iamVjdCkKQEAg
LTMwMCw5ICszOTEsOSBAQCBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MgPSBjbGFzcyBJbnNwZWN0b3JC
YWNrZW5kQ2xhc3MKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3BlbmRpbmdS
ZXNwb25zZXMuc2l6ZSA9PT0gMCk7CiAKLSAgICAgICAgdmFyIHNjcmlwdHNUb1J1biA9IHRoaXMu
X2RlZmVycmVkU2NyaXB0czsKKyAgICAgICAgbGV0IHNjcmlwdHNUb1J1biA9IHRoaXMuX2RlZmVy
cmVkU2NyaXB0czsKICAgICAgICAgdGhpcy5fZGVmZXJyZWRTY3JpcHRzID0gW107Ci0gICAgICAg
IGZvciAodmFyIHNjcmlwdCBvZiBzY3JpcHRzVG9SdW4pCisgICAgICAgIGZvciAobGV0IHNjcmlw
dCBvZiBzY3JpcHRzVG9SdW4pCiAgICAgICAgICAgICBzY3JpcHQuY2FsbCh0aGlzKTsKICAgICB9
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvTG9nZ2luZ1Byb3RvY29sVHJhY2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvTG9nZ2luZ1Byb3RvY29sVHJhY2VyLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmOWFkYjcyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTG9nZ2luZ1Byb3RvY29s
VHJhY2VyLmpzCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkxv
Z2dpbmdQcm90b2NvbFRyYWNlciA9IGNsYXNzIExvZ2dpbmdQcm90b2NvbFRyYWNlciBleHRlbmRz
IFdlYkluc3BlY3Rvci5Qcm90b2NvbFRyYWNlcgoreworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7
CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fZHVtcE1lc3NhZ2VzVG9Db25zb2xl
ID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2R1bXBUaW1pbmdEYXRhVG9Db25zb2xlID0gZmFsc2U7
CisgICAgICAgIHRoaXMuX2xvZ1RvQ29uc29sZSA9IHdpbmRvdy5JbnNwZWN0b3JUZXN0ID8gSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LnVuYnVmZmVyZWRMb2cuYmluZChJbnNwZWN0b3JGcm9udGVuZEhv
c3QpIDogY29uc29sZS5sb2cuYmluZChjb25zb2xlKTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMK
KworICAgIHNldCBkdW1wTWVzc2FnZXNUb0NvbnNvbGUodmFsdWUpCisgICAgeworICAgICAgICB0
aGlzLl9kdW1wTWVzc2FnZXNUb0NvbnNvbGUgPSAhIXZhbHVlOworICAgIH0KKworICAgIGdldCBk
dW1wTWVzc2FnZXNUb0NvbnNvbGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2R1bXBN
ZXNzYWdlc1RvQ29uc29sZTsKKyAgICB9CisKKyAgICBzZXQgZHVtcFRpbWluZ0RhdGFUb0NvbnNv
bGUodmFsdWUpCisgICAgeworICAgICAgICB0aGlzLl9kdW1wVGltaW5nRGF0YVRvQ29uc29sZSA9
ICEhdmFsdWU7CisgICAgfQorCisgICAgZ2V0IGR1bXBUaW1pbmdEYXRhVG9Db25zb2xlKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9kdW1wVGltaW5nRGF0YVRvQ29uc29sZTsKKyAgICB9
CisKKyAgICBsb2dGcm9udGVuZEV4Y2VwdGlvbihtZXNzYWdlLCBleGNlcHRpb24pCisgICAgewor
ICAgICAgICB0aGlzLl9wcm9jZXNzRW50cnkoe3R5cGU6ICJleGNlcHRpb24iLCBtZXNzYWdlLCBl
eGNlcHRpb259KTsKKyAgICB9CisKKyAgICBsb2dQcm90b2NvbEVycm9yKG1lc3NhZ2UsIGVycm9y
KQorICAgIHsKKyAgICAgICAgdGhpcy5fcHJvY2Vzc0VudHJ5KHt0eXBlOiAiZXJyb3IiLCBtZXNz
YWdlLCBlcnJvcn0pOworICAgIH0KKworICAgIGxvZ0Zyb250ZW5kUmVxdWVzdChtZXNzYWdlKQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmci
LCAiTXVzdCBzdHJpbmdpZnkgbWVzc2FnZXMgdG8gYXZvaWQgbGVha2luZyBhbGwgSlNPTiBwcm90
b2NvbCBtZXNzYWdlcy4iKQorCisgICAgICAgIHRoaXMuX3Byb2Nlc3NFbnRyeSh7dHlwZTogInJl
cXVlc3QiLCBtZXNzYWdlfSk7CisgICAgfQorCisgICAgbG9nV2lsbEhhbmRsZVJlc3BvbnNlKG1l
c3NhZ2UpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgbWVzc2FnZSA9PT0g
InN0cmluZyIsICJNdXN0IHN0cmluZ2lmeSBtZXNzYWdlcyB0byBhdm9pZCBsZWFraW5nIGFsbCBK
U09OIHByb3RvY29sIG1lc3NhZ2VzLiIpCisKKyAgICAgICAgbGV0IGVudHJ5ID0ge3R5cGU6ICJy
ZXNwb25zZSIsIG1lc3NhZ2V9OworICAgICAgICB0aGlzLl9wcm9jZXNzRW50cnkoZW50cnkpOwor
ICAgIH0KKworICAgIGxvZ0RpZEhhbmRsZVJlc3BvbnNlKG1lc3NhZ2UsIHRpbWluZ3MgPSBudWxs
KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJp
bmciLCAiTXVzdCBzdHJpbmdpZnkgbWVzc2FnZXMgdG8gYXZvaWQgbGVha2luZyBhbGwgSlNPTiBw
cm90b2NvbCBtZXNzYWdlcy4iKQorCisgICAgICAgIGxldCBlbnRyeSA9IHt0eXBlOiAicmVzcG9u
c2UiLCBtZXNzYWdlfTsKKyAgICAgICAgaWYgKHRpbWluZ3MpCisgICAgICAgICAgICBlbnRyeS50
aW1pbmdzID0gT2JqZWN0LnNoYWxsb3dDb3B5KHRpbWluZ3MpOworCisgICAgICAgIHRoaXMuX3By
b2Nlc3NFbnRyeShlbnRyeSk7CisgICAgfQorCisgICAgbG9nV2lsbEhhbmRsZUV2ZW50KG1lc3Nh
Z2UpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgbWVzc2FnZSA9PT0gInN0
cmluZyIsICJNdXN0IHN0cmluZ2lmeSBtZXNzYWdlcyB0byBhdm9pZCBsZWFraW5nIGFsbCBKU09O
IHByb3RvY29sIG1lc3NhZ2VzLiIpCisKKyAgICAgICAgbGV0IGVudHJ5ID0ge3R5cGU6ICJldmVu
dCIsIG1lc3NhZ2V9OworICAgICAgICB0aGlzLl9wcm9jZXNzRW50cnkoZW50cnkpOworICAgIH0K
KworICAgIGxvZ0RpZEhhbmRsZUV2ZW50KG1lc3NhZ2UsIHRpbWluZ3MgPSBudWxsKQorICAgIHsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciLCAiTXVz
dCBzdHJpbmdpZnkgbWVzc2FnZXMgdG8gYXZvaWQgbGVha2luZyBhbGwgSlNPTiBwcm90b2NvbCBt
ZXNzYWdlcy4iKQorCisgICAgICAgIGxldCBlbnRyeSA9IHt0eXBlOiAiZXZlbnQiLCBtZXNzYWdl
fTsKKyAgICAgICAgaWYgKHRpbWluZ3MpCisgICAgICAgICAgICBlbnRyeS50aW1pbmdzID0gT2Jq
ZWN0LnNoYWxsb3dDb3B5KHRpbWluZ3MpOworCisgICAgICAgIHRoaXMuX3Byb2Nlc3NFbnRyeShl
bnRyeSk7CisgICAgfQorCisgICAgX3Byb2Nlc3NFbnRyeShlbnRyeSkKKyAgICB7CisgICAgICAg
IGlmICh0aGlzLl9kdW1wVGltaW5nRGF0YVRvQ29uc29sZSAmJiBlbnRyeS50aW1pbmdzKSB7Cisg
ICAgICAgICAgICBpZiAoZW50cnkudGltaW5ncy5ydHQgJiYgZW50cnkudGltaW5ncy5kaXNwYXRj
aCkKKyAgICAgICAgICAgICAgICB0aGlzLl9sb2dUb0NvbnNvbGUoYHRpbWUtc3RhdHM6IEhhbmRs
aW5nOiAke2VudHJ5LnRpbWluZ3MuZGlzcGF0Y2ggfHwgTmFOfW1zOyBSVFQ6ICR7ZW50cnkudGlt
aW5ncy5ydHR9bXNgKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVudHJ5LnRpbWluZ3MuZGlzcGF0
Y2gpCisgICAgICAgICAgICAgICAgdGhpcy5fbG9nVG9Db25zb2xlKGB0aW1lLXN0YXRzOiBIYW5k
bGluZzogJHtlbnRyeS50aW1pbmdzLmRpc3BhdGNoIHx8IE5hTn1tc2ApOworICAgICAgICB9IGVs
c2UgaWYgKHRoaXMuX2R1bXBNZXNzYWdlc1RvQ29uc29sZSkKKyAgICAgICAgICAgIHRoaXMuX2xv
Z1RvQ29uc29sZShgJHtlbnRyeS50eXBlfTogJHtlbnRyeS5tZXNzYWdlfWApOworICAgIH0KK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9Qcm90b2NvbFRyYWNlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL1Byb3RvY29sVHJhY2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjBkMTZjMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9Qcm90b2NvbFRyYWNlci5qcwpAQCAtMCwwICsxLDg4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlByb3RvY29sVHJhY2VyID0gY2xhc3MgUHJvdG9j
b2xUcmFjZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgLy8gUHVibGljCisK
KyAgICBsb2dTdGFydGVkKCkKKyAgICB7CisgICAgICAgIC8vIFRvIGJlIG92ZXJyaWRkZW4gYnkg
c3ViY2xhc3Nlcy4KKyAgICB9CisKKyAgICBsb2dGcm9udGVuZEV4Y2VwdGlvbihtZXNzYWdlLCBl
eGNlcHRpb24pCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgbWVzc2FnZSA9
PT0gInN0cmluZyIsICJNdXN0IHN0cmluZ2lmeSBtZXNzYWdlcyB0byBhdm9pZCBsZWFraW5nIGFs
bCBKU09OIHByb3RvY29sIG1lc3NhZ2VzLiIpCisKKyAgICAgICAgLy8gVG8gYmUgb3ZlcnJpZGRl
biBieSBzdWJjbGFzc2VzLgorICAgIH0KKworICAgIGxvZ1Byb3RvY29sRXJyb3IobWVzc2FnZSwg
ZXJyb3IpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgbWVzc2FnZSA9PT0g
InN0cmluZyIsICJNdXN0IHN0cmluZ2lmeSBtZXNzYWdlcyB0byBhdm9pZCBsZWFraW5nIGFsbCBK
U09OIHByb3RvY29sIG1lc3NhZ2VzLiIpCisKKyAgICAgICAgLy8gVG8gYmUgb3ZlcnJpZGRlbiBi
eSBzdWJjbGFzc2VzLgorICAgIH0KKworICAgIGxvZ0Zyb250ZW5kUmVxdWVzdChtZXNzYWdlKQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmci
LCAiTXVzdCBzdHJpbmdpZnkgbWVzc2FnZXMgdG8gYXZvaWQgbGVha2luZyBhbGwgSlNPTiBwcm90
b2NvbCBtZXNzYWdlcy4iKQorCisgICAgICAgIC8vIFRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xh
c3Nlcy4KKyAgICB9CisKKyAgICBsb2dXaWxsSGFuZGxlUmVzcG9uc2UobWVzc2FnZSkKKyAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIiwgIk11
c3Qgc3RyaW5naWZ5IG1lc3NhZ2VzIHRvIGF2b2lkIGxlYWtpbmcgYWxsIEpTT04gcHJvdG9jb2wg
bWVzc2FnZXMuIikKKworICAgICAgICAvLyBUbyBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMu
CisgICAgfQorCisgICAgbG9nRGlkSGFuZGxlUmVzcG9uc2UobWVzc2FnZSwgdGltaW5ncyA9IG51
bGwpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgbWVzc2FnZSA9PT0gInN0
cmluZyIsICJNdXN0IHN0cmluZ2lmeSBtZXNzYWdlcyB0byBhdm9pZCBsZWFraW5nIGFsbCBKU09O
IHByb3RvY29sIG1lc3NhZ2VzLiIpCisKKyAgICAgICAgLy8gVG8gYmUgb3ZlcnJpZGRlbiBieSBz
dWJjbGFzc2VzLgorICAgIH0KKworICAgIGxvZ1dpbGxIYW5kbGVFdmVudChtZXNzYWdlKQorICAg
IHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciLCAi
TXVzdCBzdHJpbmdpZnkgbWVzc2FnZXMgdG8gYXZvaWQgbGVha2luZyBhbGwgSlNPTiBwcm90b2Nv
bCBtZXNzYWdlcy4iKQorCisgICAgICAgIC8vIFRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nl
cy4KKyAgICB9CisKKyAgICBsb2dEaWRIYW5kbGVFdmVudChtZXNzYWdlLCB0aW1pbmdzID0gbnVs
bCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBtZXNzYWdlID09PSAic3Ry
aW5nIiwgIk11c3Qgc3RyaW5naWZ5IG1lc3NhZ2VzIHRvIGF2b2lkIGxlYWtpbmcgYWxsIEpTT04g
cHJvdG9jb2wgbWVzc2FnZXMuIikKKworICAgICAgICAvLyBUbyBiZSBvdmVycmlkZGVuIGJ5IHN1
YmNsYXNzZXMuCisgICAgfQorCisgICAgbG9nRmluaXNoZWQoKQorICAgIHsKKyAgICAgICAgLy8g
VG8gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgorICAgIH0KK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKaW5kZXggYmVkZjMwMi4uZTFjMzli
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5o
dG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApA
QCAtNDksNiArNDksMTAgQEAKICAgICA8c2NyaXB0IHNyYz0iQmFzZS9FdmVudExpc3RlbmVyU2V0
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9VUkxVdGlsaXRpZXMuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL1V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9IkJhc2UvU2V0dGluZy5qcyI+PC9zY3JpcHQ+CisKKyAgICA8c2NyaXB0
IHNyYz0iUHJvdG9jb2wvUHJvdG9jb2xUcmFjZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJQcm90b2NvbC9Mb2dnaW5nUHJvdG9jb2xUcmFjZXIuanMiPjwvc2NyaXB0PgogCiAgICAg
PHNjcmlwdCBzcmM9IlByb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJQcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcyI+PC9zY3JpcHQ+
CkBAIC0xMzAsNyArMTM0LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1NjcmlwdC5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1NjcmlwdFRpbWVsaW5lUmVjb3JkLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1NldHRpbmcuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvU291cmNlQ29kZUxvY2F0aW9uLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1NvdXJjZUNvZGVSZXZpc2lvbi5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Tb3VyY2VDb2RlVGltZWxpbmUuanMiPjwvc2Ny
aXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266213</attachid>
            <date>2015-11-28 00:13:10 -0800</date>
            <delta_ts>2015-11-29 17:08:53 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-151635-20151128001250.patch</filename>
            <type>text/plain</type>
            <size>46672</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
NGUzNzkxMjM2ZTU5ZTQ1ZjZkN2YwMjA2NDJkYmM3NzY0N2U0N2Q0Li5jOWZhNWNjZjViNmFmNGJm
NjM1N2NjZjAyZThiNzAyODFkMTBjZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw5OSBAQAogMjAxNS0xMS0yNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBtdWx0aXBsZSBVSSBjb21wb25lbnRzIHRvIGFk
ZCBtZW51IGl0ZW1zIHVwb24gZ2V0dGluZyBhICJjb250ZXh0bWVudSIgZXZlbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTYyOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBleGlzdGluZyBDb250
ZXh0IE1lbnUgc3lzdGVtIGFzc3VtZXMgdGhhdCBvbmx5IG9uZSBVSSBjb21wb25lbnQKKyAgICAg
ICAgd2lsbCBuZWVkIHRvIHByb3ZpZGUgY29udGV4dCBtZW51IGl0ZW1zLiBCdXQgaW4gc29tZSBz
Y2VuYXJpb3MsIHRoZXJlCisgICAgICAgIGFyZSBtdWx0aXBsZSBVSSBjb21wb25lbnRzIHRoYXQg
Y291bGQgcHJvdmlkZSByZWxldmFudCBtZW51IGl0ZW1zLiBGb3IKKyAgICAgICAgZXhhbXBsZSwg
cmlnaHQtY2xpY2tpbmcgb24gYW4gRE9NIGVsZW1lbnQgaW4gdGhlIGNvbnNvbGUgc2hvdWxkIHNo
b3cKKyAgICAgICAgbWVudSBpdGVtcyByZWxldmFudCB0byAxKSB0aGUgRE9NIGVsZW1lbnQsIDIp
IHRoZSBjb25zb2xlIGluIGdlbmVyYWwsCisgICAgICAgIGFuZCAzKSBnbG9iYWwgbWVudSBpdGVt
cy4gRXhpc3RpbmcgY29kZSBzaG93cyBtZW51IGl0ZW1zIHByb3ZpZGVkIGJ5CisgICAgICAgIHRo
ZSBmaXJzdCBvYmplY3QgdGhhdCBoYW5kbGVzIHRoZSBldmVudCBhbmQgY2FsbHMgQ29udGV4dE1l
bnUuc2hvdygpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBiZWhhdmlvciBzbyB0aGF0
IGEgY29udGV4dCBtZW51IGNhbiBiZSBidWlsdCB1cAorICAgICAgICBieSBtdWx0aXBsZSAnY29u
dGV4dG1lbnUnIGV2ZW50IGhhbmRsZXJzLiBBIENvbnRleHRNZW51IGluc3RhbmNlIGlzCisgICAg
ICAgIGhpZGRlbiBvbiB0aGUgJ2NvbnRleHRtZW51JyBldmVudCBvYmplY3Q7IGNsaWVudCBjb2Rl
IGNhbGxzIGEKKyAgICAgICAgZmFjdG9yeSBtZXRob2QgdGhhdCBkaWdzIG91dCB0aGlzIGV4aXN0
aW5nIGNvbnRleHQgbWVudSBvciBjcmVhdGVzIGEKKyAgICAgICAgbmV3IG9uZSBhcyBuZWVkZWQu
IFRvIGFjdHVhbGx5IHNob3cgdGhlIGNvbnRleHQgbWVudSB0aHJvdWdoIHRoZQorICAgICAgICBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QgbWV0aG9kcywgdGhlIHRvcC1sZXZlbCBhcHAgY29udHJvbGxl
ciBhZGRzIGEKKyAgICAgICAgYnViYmxpbmcgbGlzdGVuZXIgZm9yICdjb250ZXh0bWVudScgYW5k
IHNob3dzIHRoZSBldmVudCdzIGNvbnRleHQKKyAgICAgICAgbWVudSBpZiBvbmUgaGFzIGJlZW4g
Y3JlYXRlZC4KKworICAgICAgICBBbG9uZyB0aGUgd2F5LCBkbyBzb21lIGNsZWFudXAuIERvIHMv
dmFyL2xldC8sIGFycm93aXplIHNvbWUgZnVuY3Rpb25zLAorICAgICAgICB1c2UgQXJyYXkue21h
cCxzb21lfSwgYW5kIHNpbXBsaWZ5IHNvbWUgb3RoZXIgY29kZSBhcyBhIHJlc3VsdC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgeWV0LCBzaW5jZSB3ZSBjYW4ndCB0cmlnZ2VyIGNvbnRleHQgbWVu
dSBlYXNpbHkgZnJvbQorICAgICAgICBhbiBpbnNwZWN0b3IgdGVzdC4gQWxsIGFmZmVjdGVkIGNv
bnRleHQgbWVudXMgd2VyZSBtYW51YWxseSB2ZXJpZmllZC4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQp
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJlYWtwb2ludFBvcG92ZXJD
b250cm9sbGVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29u
dHJvbGxlci5wcm90b3R5cGUuYXBwZW5kQ29udGV4dE1lbnVJdGVtcyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLnByb3RvdHlwZS5hcHBlbmRDb250
ZXh0TWVudUl0ZW1zLmVkaXRCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIucHJvdG90eXBlLmFwcGVuZENvbnRleHRN
ZW51SXRlbXMucmVtb3ZlQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLnByb3RvdHlwZS5hcHBlbmRDb250ZXh0TWVu
dUl0ZW1zLnRvZ2dsZUJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5wcm90b3R5cGUuYXBwZW5kQ29udGV4dE1lbnVJ
dGVtcy50b2dnbGVBdXRvQ29udGludWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5wcm90b3R5cGUuYXBwZW5kQ29udGV4dE1lbnVJ
dGVtcy5yZXZlYWxPcmlnaW5hbFNvdXJjZUNvZGVMb2NhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmNvbnRleHRt
ZW51KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25T
ZWN0aW9uLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnUuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtLnByb3RvdHlwZS5fYnVpbGRE
ZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZXh0TWVudUl0ZW0pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbS5wcm90b3R5cGUuYXBwZW5kSXRl
bSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJdGVtLnByb3RvdHlwZS5h
cHBlbmRTdWJNZW51SXRlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJ
dGVtLnByb3RvdHlwZS5hcHBlbmRDaGVja2JveEl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbnRleHRTdWJNZW51SXRlbS5wcm90b3R5cGUuX3B1c2hJdGVtKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0ucHJvdG90eXBlLl9idWlsZERlc2NyaXB0b3IpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29udGV4dE1lbnUuY3JlYXRlRnJvbUV2ZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db250ZXh0TWVudS5wcm90b3R5cGUuc2hvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29udGV4dE1lbnUucHJvdG90eXBlLmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db250ZXh0TWVudS5wcm90b3R5cGUuX2J1aWxkRGVzY3JpcHRvcik6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUuX2NvbnRleHRNZW51RXZlbnRGaXJlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlLl9wb3B1bGF0ZUNvbnRl
eHRNZW51LmxvZ0VsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5l
LnByb3RvdHlwZS5fcG9wdWxhdGVDb250ZXh0TWVudSk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9EYXRhR3JpZC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90
b3R5cGUuX2NvbnRleHRNZW51SW5EYXRhVGFibGUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVi
dWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9icmVha3BvaW50VHJlZU91dGxpbmVDb250ZXh0
TWVudVRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQ
YW5lbC5wcm90b3R5cGUuX2JyZWFrcG9pbnRUcmVlT3V0bGluZUNvbnRleHRNZW51VHJlZUVsZW1l
bnQucmVtb3ZlQWxsUmVzb3VyY2VCcmVha3BvaW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9icmVha3BvaW50VHJlZU91
dGxpbmVDb250ZXh0TWVudVRyZWVFbGVtZW50LnRvZ2dsZUFsbFJlc291cmNlQnJlYWtwb2ludHMp
OiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlLl9oYW5k
bGVDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL09iamVj
dFByZXZpZXdWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXdWaWV3
LnByb3RvdHlwZS5fY29udGV4dE1lbnVIYW5kbGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5P
YmplY3RQcmV2aWV3Vmlldyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RU
cmVlQmFzZVRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVC
YXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLl9jb250ZXh0TWVudUhhbmRsZXIpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLl9hcHBlbmRN
ZW51c0l0ZW1zRm9yT2JqZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFz
ZVRyZWVFbGVtZW50KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVU
ZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9y
LnByb3RvdHlwZS50ZXh0RWRpdG9yR3V0dGVyQ29udGV4dE1lbnUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS50ZXh0RWRpdG9yR3V0dGVyQ29u
dGV4dE1lbnUuY29udGludWVUb0xvY2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUudGV4dEVkaXRvckd1dHRlckNvbnRl
eHRNZW51LmFkZEJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS50ZXh0RWRpdG9yR3V0dGVyQ29udGV4dE1lbnUu
cmV2ZWFsSW5TaWRlYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlVGV4dEVkaXRvci5wcm90b3R5cGUudGV4dEVkaXRvckd1dHRlckNvbnRleHRNZW51LnJlbW92
ZUJyZWFrcG9pbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VGV4dEVkaXRvci5wcm90b3R5cGUudGV4dEVkaXRvckd1dHRlckNvbnRleHRNZW51LnRvZ2dsZUJy
ZWFrcG9pbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJh
ckl0ZW0uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFySXRlbS5wcm90b3R5cGUuX2hh
bmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0ucHJvdG90eXBlLl9oYW5kbGVDb250
ZXh0TWVudUV2ZW50LmNsb3NlVGFiKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
YWJCYXJJdGVtLnByb3RvdHlwZS5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5jbG9zZU90aGVyVGFi
cyk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVNpZGVi
YXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5w
cm90b3R5cGUuX2NvbnRleHRNZW51TmF2aWdhdGlvbkJhck9yU3RhdHVzQmFyKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2NvbnRleHRNZW51
TmF2aWdhdGlvbkJhck9yU3RhdHVzQmFyLnRvZ2dsZVJlcGxheUludGVyZmFjZSk6IERlbGV0ZWQu
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JUcmVlSXRlbS5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVNlbGVjdG9yVHJlZUl0ZW0ucHJv
dG90eXBlLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKworMjAxNS0xMS0yNyAgQnJpYW4gQnVy
ZyAgPGJidXJnQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IHJ1
bnRpbWUgcmVnaXN0cmF0aW9uIG9mIHRhYiB0eXBlIGFzc29jaWF0aW9ucwogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTk0CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwppbmRleCBjOWI0Zjg4
NzJkYzY5OWViMTBhMTJiYWM0NDdiMjQ1YTgxMjBlYzJkLi5hNjg1YWZlNzEwYzcxMGVmNjdiOTVk
M2NlMmViYWNmNTJiNDBmNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9CYXNlL01haW4uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC0xOTAsNiArMTkwLDcgQEAgV2ViSW5zcGVjdG9yLmNv
bnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtl
eXVwIiwgdGhpcy5fd2luZG93S2V5VXAuYmluZCh0aGlzKSk7CiAgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX21vdXNlTW92ZWQuYmluZCh0aGlzKSwgdHJ1ZSk7
CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VoaWRlIiwgdGhpcy5fcGFnZUhpZGRl
bi5iaW5kKHRoaXMpKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUi
LCB0aGlzLl9jb250ZXh0TWVudVJlcXVlc3RlZC5iaW5kKHRoaXMpKTsKIAogICAgIC8vIEFkZCBw
bGF0Zm9ybSBzdHlsZSBjbGFzc2VzIHNvIHRoZSBVSSBjYW4gYmUgdHdlYWtlZCBwZXItcGxhdGZv
cm0uCiAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5QbGF0Zm9y
bS5uYW1lICsgIi1wbGF0Zm9ybSIpOwpAQCAtMTM1Myw2ICsxMzU0LDE0IEBAIFdlYkluc3BlY3Rv
ci5fcGFnZUhpZGRlbiA9IGZ1bmN0aW9uKGV2ZW50KQogICAgIHRoaXMuX3NhdmVDb29raWVGb3JP
cGVuVGFicygpOwogfTsKIAorV2ViSW5zcGVjdG9yLl9jb250ZXh0TWVudVJlcXVlc3RlZCA9IGZ1
bmN0aW9uKGV2ZW50KQoreworICAgIGNvbnN0IG9ubHlFeGlzdGluZyA9IHRydWU7CisgICAgbGV0
IHByb3Bvc2VkQ29udGV4dE1lbnUgPSBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuY3JlYXRlRnJv
bUV2ZW50KGV2ZW50LCBvbmx5RXhpc3RpbmcpOworICAgIGlmIChwcm9wb3NlZENvbnRleHRNZW51
KQorICAgICAgICBwcm9wb3NlZENvbnRleHRNZW51LnNob3coKTsKK307CisKIFdlYkluc3BlY3Rv
ci5fdW5kb2NrID0gZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LnJlcXVlc3RTZXREb2NrU2lkZSgidW5kb2NrZWQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29u
dHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5qcwppbmRleCA4YWZiMjM4YWQ2MzdlYzll
OTg2Mzc3MzEzYzllZWJjMDc0NzFlMjJkLi5jMjhkM2ViODI2YTdiOTk4NjM2ZjFlZjRhYzE1NDE3
OWQ3MTBlMjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJlYWtwb2ludFBvcG92
ZXJDb250cm9sbGVyLmpzCkBAIC00MCw4ICs0MCw3IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50
UG9wb3ZlckNvbnRyb2xsZXIgPSBjbGFzcyBCcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIgZXh0
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChkb2N1bWVudC5ib2R5LmNvbnRhaW5zKGJy
ZWFrcG9pbnREaXNwbGF5RWxlbWVudCksICJCcmVha3BvaW50IHBvcG92ZXIgZGlzcGxheSBlbGVt
ZW50IG11c3QgYmUgaW4gdGhlIERPTS4iKTsKIAotICAgICAgICBmdW5jdGlvbiBlZGl0QnJlYWtw
b2ludCgpCi0gICAgICAgIHsKKyAgICAgICAgbGV0IGVkaXRCcmVha3BvaW50ID0gKCkgPT4gewog
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3BvcG92ZXIsICJCcmVha3BvaW50IHBv
cG92ZXIgYWxyZWFkeSBleGlzdHMuIik7CiAgICAgICAgICAgICBpZiAodGhpcy5fcG9wb3ZlcikK
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01Myw1MCArNTIsNDYgQEAgV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlciA9IGNsYXNzIEJyZWFrcG9pbnRQb3BvdmVyQ29u
dHJvbGxlciBleHQKICAgICAgICAgICAgIGxldCBib3VuZHMgPSBXZWJJbnNwZWN0b3IuUmVjdC5y
ZWN0RnJvbUNsaWVudFJlY3QoYnJlYWtwb2ludERpc3BsYXlFbGVtZW50LmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpKTsKICAgICAgICAgICAgIGJvdW5kcy5vcmlnaW4ueCAtPSAxOyAvLyBNb3ZlIHRo
ZSBhbmNob3IgbGVmdCBvbmUgcGl4ZWwgc28gaXQgbG9va3MgbW9yZSBjZW50ZXJlZC4KICAgICAg
ICAgICAgIHRoaXMuX3BvcG92ZXIucHJlc2VudChib3VuZHMucGFkKDIpLCBbV2ViSW5zcGVjdG9y
LlJlY3RFZGdlLk1BWF9ZXSk7Ci0gICAgICAgIH0KKyAgICAgICAgfTsKIAotICAgICAgICBmdW5j
dGlvbiByZW1vdmVCcmVha3BvaW50KCkKLSAgICAgICAgeworICAgICAgICBsZXQgcmVtb3ZlQnJl
YWtwb2ludCA9ICgpID0+IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFn
ZXIucmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAgfQorICAgICAgICB9Owog
Ci0gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZUJyZWFrcG9pbnQoKQotICAgICAgICB7CisgICAgICAg
IGxldCB0b2dnbGVCcmVha3BvaW50ID0gKCkgPT4gewogICAgICAgICAgICAgYnJlYWtwb2ludC5k
aXNhYmxlZCA9ICFicmVha3BvaW50LmRpc2FibGVkOwotICAgICAgICB9CisgICAgICAgIH07CiAK
LSAgICAgICAgZnVuY3Rpb24gdG9nZ2xlQXV0b0NvbnRpbnVlKCkKLSAgICAgICAgeworICAgICAg
ICBsZXQgdG9nZ2xlQXV0b0NvbnRpbnVlID0gKCkgPT4gewogICAgICAgICAgICAgYnJlYWtwb2lu
dC5hdXRvQ29udGludWUgPSAhYnJlYWtwb2ludC5hdXRvQ29udGludWU7Ci0gICAgICAgIH0KKyAg
ICAgICAgfTsKIAotICAgICAgICBmdW5jdGlvbiByZXZlYWxPcmlnaW5hbFNvdXJjZUNvZGVMb2Nh
dGlvbigpCi0gICAgICAgIHsKKyAgICAgICAgbGV0IHJldmVhbE9yaWdpbmFsU291cmNlQ29kZUxv
Y2F0aW9uID0gKCkgPT4gewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dPcmlnaW5hbE9y
Rm9ybWF0dGVkU291cmNlQ29kZUxvY2F0aW9uKGJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9u
KTsKLSAgICAgICAgfQorICAgICAgICB9OwogCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNYW5hZ2VyLmlzQnJlYWtwb2ludEVkaXRhYmxlKGJyZWFrcG9pbnQpKQotICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVkaXQgQnJl
YWtwb2ludOKApiIpLCBlZGl0QnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFZGl0IEJyZWFrcG9p
bnTigKYiKSwgZWRpdEJyZWFrcG9pbnQpOwogCiAgICAgICAgIGlmIChicmVha3BvaW50LmF1dG9D
b250aW51ZSAmJiAhYnJlYWtwb2ludC5kaXNhYmxlZCkgewotICAgICAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRpc2FibGUgQnJlYWtwb2ludCIp
LCB0b2dnbGVCcmVha3BvaW50LmJpbmQodGhpcykpOwotICAgICAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbmNlbCBBdXRvbWF0aWMgQ29udGlu
dWUiKSwgdG9nZ2xlQXV0b0NvbnRpbnVlLmJpbmQodGhpcykpOworICAgICAgICAgICAgY29udGV4
dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRpc2FibGUgQnJlYWtwb2lu
dCIpLCB0b2dnbGVCcmVha3BvaW50KTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYW5jZWwgQXV0b21hdGljIENvbnRpbnVlIiksIHRv
Z2dsZUF1dG9Db250aW51ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWJyZWFrcG9pbnQuZGlzYWJs
ZWQpCi0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRGlzYWJsZSBCcmVha3BvaW50IiksIHRvZ2dsZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7
CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRGlzYWJsZSBCcmVha3BvaW50IiksIHRvZ2dsZUJyZWFrcG9pbnQpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRW5hYmxlIEJyZWFrcG9pbnQiKSwgdG9nZ2xlQnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJF
bmFibGUgQnJlYWtwb2ludCIpLCB0b2dnbGVCcmVha3BvaW50KTsKIAogICAgICAgICBpZiAoIWJy
ZWFrcG9pbnQuYXV0b0NvbnRpbnVlICYmICFicmVha3BvaW50LmRpc2FibGVkICYmIGJyZWFrcG9p
bnQuYWN0aW9ucy5sZW5ndGgpCi0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU2V0IHRvIEF1dG9tYXRpY2FsbHkgQ29udGludWUiKSwgdG9n
Z2xlQXV0b0NvbnRpbnVlLmJpbmQodGhpcykpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNldCB0byBBdXRvbWF0aWNhbGx5IENvbnRp
bnVlIiksIHRvZ2dsZUF1dG9Db250aW51ZSk7CiAKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5k
ZWJ1Z2dlck1hbmFnZXIuaXNCcmVha3BvaW50UmVtb3ZhYmxlKGJyZWFrcG9pbnQpKSB7CiAgICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKLSAgICAgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUgQnJlYWtwb2lu
dCIpLCByZW1vdmVCcmVha3BvaW50LmJpbmQodGhpcykpOworICAgICAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlbGV0ZSBCcmVha3BvaW50Iiks
IHJlbW92ZUJyZWFrcG9pbnQpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGJyZWFrcG9pbnQu
X3NvdXJjZUNvZGVMb2NhdGlvbi5oYXNNYXBwZWRMb2NhdGlvbigpKSB7CiAgICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXZlYWwgaW4gT3JpZ2luYWwgUmVzb3Vy
Y2UiKSwgcmV2ZWFsT3JpZ2luYWxTb3VyY2VDb2RlTG9jYXRpb24uYmluZCh0aGlzKSk7CisgICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmV2
ZWFsIGluIE9yaWdpbmFsIFJlc291cmNlIiksIHJldmVhbE9yaWdpbmFsU291cmNlQ29kZUxvY2F0
aW9uKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50
LmpzCmluZGV4IDIyODljMWMzOWM1OWRkOGQwNTc2NGI1NWQ1OWE5MjRlN2IwYzhkMDkuLmU2OGYw
MmQxYWQzMmIwNmM5NmU4MmVlYmIzZmQ1MzI4NTk2Y2E1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3Bv
aW50VHJlZUVsZW1lbnQuanMKQEAgLTk5LDkgKzk5LDggQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRUcmVlRWxlbWVudCA9IGNsYXNzIEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdlYklu
c3AKIAogICAgIG9uY29udGV4dG1lbnUoZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgY29udGV4
dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKKyAgICAgICAgbGV0
IGNvbnRleHRNZW51ID0gV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChl
dmVudCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5icmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIu
YXBwZW5kQ29udGV4dE1lbnVJdGVtcyhjb250ZXh0TWVudSwgdGhpcy5fYnJlYWtwb2ludCwgdGhp
cy5fc3RhdHVzSW1hZ2VFbGVtZW50KTsKLSAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAg
IH0KIAogICAgIG9uYXR0YWNoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNl
Y3Rpb24uanMKaW5kZXggMzk3NDM3ZmExMGEyNDg1YjljMTJlZTBkNzEzYWExOGVmYWMxMmU2Yy4u
Njc2NWQ5MDg1ZDM0OTZjYjdiYWNjZGZiZmQ1ZmM2ZjMwYzBmMDIwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlv
blNlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKQEAgLTQzMSwyMiArNDMxLDIwIEBAIFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbiA9IGNsYXNzIENTU1N0eWxlRGVj
bGFyYXRpb25TZWN0aW9uIGV4dGVuCiAgICAgICAgIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKS5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIGNv
bnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CisgICAgICAg
IGxldCBjb250ZXh0TWVudSA9IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudS5jcmVhdGVGcm9tRXZl
bnQoZXZlbnQpOwogCiAgICAgICAgIGlmICghdGhpcy5fc3R5bGUuaW5oZXJpdGVkKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRHVw
bGljYXRlIFNlbGVjdG9yIiksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkR1cGxpY2F0ZSBTZWxlY3RvciIpLCAo
KSA9PiB7CiAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlz
Ll9kZWxlZ2F0ZS5jc3NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbkZvY3VzTmV4dE5ld0luc3BlY3Rv
clJ1bGUgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRl
LmNzc1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uRm9jdXNOZXh0TmV3SW5zcGVjdG9yUnVsZSgpOwog
CiAgICAgICAgICAgICAgICAgdGhpcy5fc3R5bGUubm9kZVN0eWxlcy5hZGRSdWxlV2l0aFNlbGVj
dG9yKHRoaXMuX2N1cnJlbnRTZWxlY3RvclRleHQpOwotICAgICAgICAgICAgfS5iaW5kKHRoaXMp
KTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKLSAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvcHkgUnVsZSIpLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNv
cHkgUnVsZSIpLCAoKSA9PiB7CiAgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY29w
eVRleHQodGhpcy5fc3R5bGUuZ2VuZXJhdGVDU1NSdWxlU3RyaW5nKCkpOwotICAgICAgICB9LmJp
bmQodGhpcykpOwotCi0gICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKKyAgICAgICAgfSk7CiAg
ICAgfQogCiAgICAgX3RvZ2dsZVJ1bGVPbk9mZigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVudS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51LmpzCmluZGV4IDcxMGQw
ZTQzOWQwZjgwMGYzMTI0OGQwN2ZkNGFjYjYyYzkxOWM5OTMuLjZhN2RmZjA5NWMzYzY1MGMxMzUz
NDRjYjgzMDJkMTkzMDQxMjEyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51LmpzCkBAIC03MywxMSArNzMsMTEg
QEAgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbSA9IGNsYXNzIENvbnRleHRNZW51SXRlbSBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAodGhpcy5f
dHlwZSkgewogICAgICAgICBjYXNlICJpdGVtIjoKLSAgICAgICAgICAgIHJldHVybiB7IHR5cGU6
ICJpdGVtIiwgaWQ6IHRoaXMuX2lkLCBsYWJlbDogdGhpcy5fbGFiZWwsIGVuYWJsZWQ6ICF0aGlz
Ll9kaXNhYmxlZCB9OworICAgICAgICAgICAgcmV0dXJuIHt0eXBlOiAiaXRlbSIsIGlkOiB0aGlz
Ll9pZCwgbGFiZWw6IHRoaXMuX2xhYmVsLCBlbmFibGVkOiAhdGhpcy5fZGlzYWJsZWR9OwogICAg
ICAgICBjYXNlICJzZXBhcmF0b3IiOgotICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogInNlcGFy
YXRvciIgfTsKKyAgICAgICAgICAgIHJldHVybiB7dHlwZTogInNlcGFyYXRvciJ9OwogICAgICAg
ICBjYXNlICJjaGVja2JveCI6Ci0gICAgICAgICAgICByZXR1cm4geyB0eXBlOiAiY2hlY2tib3gi
LCBpZDogdGhpcy5faWQsIGxhYmVsOiB0aGlzLl9sYWJlbCwgY2hlY2tlZDogISF0aGlzLl9jaGVj
a2VkLCBlbmFibGVkOiAhdGhpcy5fZGlzYWJsZWQgfTsKKyAgICAgICAgICAgIHJldHVybiB7dHlw
ZTogImNoZWNrYm94IiwgaWQ6IHRoaXMuX2lkLCBsYWJlbDogdGhpcy5fbGFiZWwsIGNoZWNrZWQ6
ICEhdGhpcy5fY2hlY2tlZCwgZW5hYmxlZDogIXRoaXMuX2Rpc2FibGVkfTsKICAgICAgICAgfQog
ICAgIH0KIH07CkBAIC05NSw3ICs5NSw3IEBAIFdlYkluc3BlY3Rvci5Db250ZXh0U3ViTWVudUl0
ZW0gPSBjbGFzcyBDb250ZXh0U3ViTWVudUl0ZW0gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuCiAKICAg
ICBhcHBlbmRJdGVtKGxhYmVsLCBoYW5kbGVyLCBkaXNhYmxlZCkKICAgICB7Ci0gICAgICAgIHZh
ciBpdGVtID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudUl0ZW0odGhpcy5fY29udGV4dE1l
bnUsICJpdGVtIiwgbGFiZWwsIGRpc2FibGVkKTsKKyAgICAgICAgbGV0IGl0ZW0gPSBuZXcgV2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbSh0aGlzLl9jb250ZXh0TWVudSwgIml0ZW0iLCBsYWJl
bCwgZGlzYWJsZWQpOwogICAgICAgICB0aGlzLl9wdXNoSXRlbShpdGVtKTsKICAgICAgICAgdGhp
cy5fY29udGV4dE1lbnUuX3NldEhhbmRsZXIoaXRlbS5pZCgpLCBoYW5kbGVyKTsKICAgICAgICAg
cmV0dXJuIGl0ZW07CkBAIC0xMDMsMTQgKzEwMywxNCBAQCBXZWJJbnNwZWN0b3IuQ29udGV4dFN1
Yk1lbnVJdGVtID0gY2xhc3MgQ29udGV4dFN1Yk1lbnVJdGVtIGV4dGVuZHMgV2ViSW5zcGVjdG9y
LgogCiAgICAgYXBwZW5kU3ViTWVudUl0ZW0obGFiZWwsIGRpc2FibGVkKQogICAgIHsKLSAgICAg
ICAgdmFyIGl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbSh0aGlzLl9j
b250ZXh0TWVudSwgbGFiZWwsIGRpc2FibGVkKTsKKyAgICAgICAgbGV0IGl0ZW0gPSBuZXcgV2Vi
SW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbSh0aGlzLl9jb250ZXh0TWVudSwgbGFiZWwsIGRp
c2FibGVkKTsKICAgICAgICAgdGhpcy5fcHVzaEl0ZW0oaXRlbSk7CiAgICAgICAgIHJldHVybiBp
dGVtOwogICAgIH0KIAogICAgIGFwcGVuZENoZWNrYm94SXRlbShsYWJlbCwgaGFuZGxlciwgY2hl
Y2tlZCwgZGlzYWJsZWQpCiAgICAgewotICAgICAgICB2YXIgaXRlbSA9IG5ldyBXZWJJbnNwZWN0
b3IuQ29udGV4dE1lbnVJdGVtKHRoaXMuX2NvbnRleHRNZW51LCAiY2hlY2tib3giLCBsYWJlbCwg
ZGlzYWJsZWQsIGNoZWNrZWQpOworICAgICAgICBsZXQgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3Iu
Q29udGV4dE1lbnVJdGVtKHRoaXMuX2NvbnRleHRNZW51LCAiY2hlY2tib3giLCBsYWJlbCwgZGlz
YWJsZWQsIGNoZWNrZWQpOwogICAgICAgICB0aGlzLl9wdXNoSXRlbShpdGVtKTsKICAgICAgICAg
dGhpcy5fY29udGV4dE1lbnUuX3NldEhhbmRsZXIoaXRlbS5pZCgpLCBoYW5kbGVyKTsKICAgICAg
ICAgcmV0dXJuIGl0ZW07CkBAIC0xMjYsNyArMTI2LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnRleHRT
dWJNZW51SXRlbSA9IGNsYXNzIENvbnRleHRTdWJNZW51SXRlbSBleHRlbmRzIFdlYkluc3BlY3Rv
ci4KICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9wZW5kaW5nU2VwYXJhdG9yKSB7CiAgICAgICAg
ICAgICB0aGlzLl9pdGVtcy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtKHRo
aXMuX2NvbnRleHRNZW51LCAic2VwYXJhdG9yIikpOwotICAgICAgICAgICAgZGVsZXRlIHRoaXMu
X3BlbmRpbmdTZXBhcmF0b3I7CisgICAgICAgICAgICB0aGlzLl9wZW5kaW5nU2VwYXJhdG9yID0g
bnVsbDsKICAgICAgICAgfQogICAgICAgICB0aGlzLl9pdGVtcy5wdXNoKGl0ZW0pOwogICAgIH0K
QEAgLTEzOCwxMCArMTM4LDggQEAgV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbSA9IGNs
YXNzIENvbnRleHRTdWJNZW51SXRlbSBleHRlbmRzIFdlYkluc3BlY3Rvci4KIAogICAgIF9idWls
ZERlc2NyaXB0b3IoKQogICAgIHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IHsgdHlwZTogInN1Yk1l
bnUiLCBsYWJlbDogdGhpcy5fbGFiZWwsIGVuYWJsZWQ6ICF0aGlzLl9kaXNhYmxlZCwgc3ViSXRl
bXM6IFtdIH07Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5faXRlbXMubGVuZ3Ro
OyArK2kpCi0gICAgICAgICAgICByZXN1bHQuc3ViSXRlbXMucHVzaCh0aGlzLl9pdGVtc1tpXS5f
YnVpbGREZXNjcmlwdG9yKCkpOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBsZXQg
c3ViSXRlbXMgPSB0aGlzLl9pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uX2J1aWxkRGVzY3JpcHRv
cigpKTsKKyAgICAgICAgcmV0dXJuIHt0eXBlOiAic3ViTWVudSIsIGxhYmVsOiB0aGlzLl9sYWJl
bCwgZW5hYmxlZDogIXRoaXMuX2Rpc2FibGVkLCBzdWJJdGVtc307CiAgICAgfQogfTsKIApAQCAt
MTU4LDYgKzE1NiwxNCBAQCBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUgPSBjbGFzcyBDb250ZXh0
TWVudSBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZXh0U3ViTWVudQogCiAgICAgLy8gU3RhdGlj
CiAKKyAgICBzdGF0aWMgY3JlYXRlRnJvbUV2ZW50KGV2ZW50LCBvbmx5RXhpc3RpbmcgPSBmYWxz
ZSkKKyAgICB7CisgICAgICAgIGlmICghZXZlbnRbV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LlBy
b3Bvc2VkTWVudVN5bWJvbF0gJiYgIW9ubHlFeGlzdGluZykKKyAgICAgICAgICAgIGV2ZW50W1dl
Ykluc3BlY3Rvci5Db250ZXh0TWVudS5Qcm9wb3NlZE1lbnVTeW1ib2xdID0gbmV3IFdlYkluc3Bl
Y3Rvci5Db250ZXh0TWVudShldmVudCk7CisKKyAgICAgICAgcmV0dXJuIGV2ZW50W1dlYkluc3Bl
Y3Rvci5Db250ZXh0TWVudS5Qcm9wb3NlZE1lbnVTeW1ib2xdIHx8IG51bGw7CisgICAgfQorCiAg
ICAgc3RhdGljIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGlkKQogICAgIHsKICAgICAgICAgaWYg
KFdlYkluc3BlY3Rvci5Db250ZXh0TWVudS5fbGFzdENvbnRleHRNZW51KQpAQCAtMTgxLDggKzE4
Nyw3IEBAIFdlYkluc3BlY3Rvci5Db250ZXh0TWVudSA9IGNsYXNzIENvbnRleHRNZW51IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51CiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLl9ldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpOwogCi0gICAgICAgIHZhciBt
ZW51T2JqZWN0ID0gdGhpcy5fYnVpbGREZXNjcmlwdG9yKCk7Ci0KKyAgICAgICAgbGV0IG1lbnVP
YmplY3QgPSB0aGlzLl9idWlsZERlc2NyaXB0b3IoKTsKICAgICAgICAgaWYgKG1lbnVPYmplY3Qu
bGVuZ3RoKSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuX2xhc3RDb250
ZXh0TWVudSA9IHRoaXM7CiAKQEAgLTIwNCw3ICsyMDksNyBAQCBXZWJJbnNwZWN0b3IuQ29udGV4
dE1lbnUgPSBjbGFzcyBDb250ZXh0TWVudSBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZXh0U3Vi
TWVudQogICAgIHsKICAgICAgICAgdGhpcy5fZXZlbnQudGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVu
ZXIoImNvbnRleHRtZW51IiwgdGhpcywgdHJ1ZSk7CiAgICAgICAgIEluc3BlY3RvckZyb250ZW5k
SG9zdC5zaG93Q29udGV4dE1lbnUoZXZlbnQsIHRoaXMuX21lbnVPYmplY3QpOwotICAgICAgICBk
ZWxldGUgdGhpcy5fbWVudU9iamVjdDsKKyAgICAgICAgdGhpcy5fbWVudU9iamVjdCA9IG51bGw7
CiAKICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7CiAgICAgfQpAQCAt
MjE5LDEwICsyMjQsNyBAQCBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUgPSBjbGFzcyBDb250ZXh0
TWVudSBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZXh0U3ViTWVudQogCiAgICAgX2J1aWxkRGVz
Y3JpcHRvcigpCiAgICAgewotICAgICAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGhpcy5faXRlbXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICByZXN1
bHQucHVzaCh0aGlzLl9pdGVtc1tpXS5fYnVpbGREZXNjcmlwdG9yKCkpOwotICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgICAgICByZXR1cm4gdGhpcy5faXRlbXMubWFwKChpdGVtKSA9PiBpdGVt
Ll9idWlsZERlc2NyaXB0b3IoKSk7CiAgICAgfQogCiAgICAgX2l0ZW1TZWxlY3RlZChpZCkKQEAg
LTIzMSwzICsyMzMsNSBAQCBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUgPSBjbGFzcyBDb250ZXh0
TWVudSBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZXh0U3ViTWVudQogICAgICAgICAgICAgdGhp
cy5faGFuZGxlcnNbaWRdLmNhbGwodGhpcyk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkNv
bnRleHRNZW51LlByb3Bvc2VkTWVudVN5bWJvbCA9IFN5bWJvbCgiY29udGV4dC1tZW51LXByb3Bv
c2VkLW1lbnUiKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5l
LmpzCmluZGV4IDFlODJhM2Q2NGZhZDMwZGJiOWNlYTMzN2FhYjNhZjY3OGM4MWNiYTcuLjZjYjI4
ZWIxMDM4N2U4N2ZiYTkzMDkwYjFlOWZlMTBhMjdhOTExNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5l
LmpzCkBAIC00ODUsMTMgKzQ4NSwxMiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUgPSBj
bGFzcyBET01UcmVlT3V0bGluZSBleHRlbmRzIFdlYkluc3BlY3Rvci5UcmVlT3V0bAogCiAgICAg
X2NvbnRleHRNZW51RXZlbnRGaXJlZChldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB0cmVlRWxl
bWVudCA9IHRoaXMuX3RyZWVFbGVtZW50RnJvbUV2ZW50KGV2ZW50KTsKKyAgICAgICAgbGV0IHRy
ZWVFbGVtZW50ID0gdGhpcy5fdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpOwogICAgICAgICBp
ZiAoIXRyZWVFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBjb250
ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOworICAgICAgICBs
ZXQgY29udGV4dE1lbnUgPSBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuY3JlYXRlRnJvbUV2ZW50
KGV2ZW50KTsKICAgICAgICAgdGhpcy5wb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51LCBl
dmVudCwgdHJlZUVsZW1lbnQpOwotICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7CiAgICAgfQog
CiAgICAgX3VwZGF0ZU1vZGlmaWVkTm9kZXMoKQpAQCAtNTEyLDcgKzUxMSw3IEBAIFdlYkluc3Bl
Y3Rvci5ET01UcmVlT3V0bGluZSA9IGNsYXNzIERPTVRyZWVPdXRsaW5lIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLlRyZWVPdXRsCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnJl
c29sdmVOb2RlKGRvbU5vZGUsIFdlYkluc3BlY3Rvci5SdW50aW1lTWFuYWdlci5Db25zb2xlT2Jq
ZWN0R3JvdXAsIGZ1bmN0aW9uKHJlbW90ZU9iamVjdCkgewogICAgICAgICAgICAgICAgIGlmICgh
cmVtb3RlT2JqZWN0KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgdmFyIHRleHQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGVjdGVkIEVsZW1lbnQiKTsK
KyAgICAgICAgICAgICAgICBsZXQgdGV4dCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VsZWN0
ZWQgRWxlbWVudCIpOwogICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jb25zb2xlTG9nVmll
d0NvbnRyb2xsZXIuYXBwZW5kSW1tZWRpYXRlRXhlY3V0aW9uV2l0aFJlc3VsdCh0ZXh0LCByZW1v
dGVPYmplY3QsIHRydWUpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFHcmlkLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWQuanMKaW5k
ZXggYjc4YTBiNjU3NWM2OTBlNGRkYWUyMTcyYWIwZjQ2Y2I0NmI1YTY3NS4uOWU4M2JjMDk5ZGU5
OGJmODRhYjFkYzE3OGNkMTI3OGQzNjIxMGJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWQuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWQuanMKQEAgLTExMDEsOSArMTEw
MSw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLlZpZXcKIAogICAgIF9jb250ZXh0TWVudUluRGF0YVRhYmxlKGV2ZW50KQogICAg
IHsKLSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVu
dShldmVudCk7CisgICAgICAgIGxldCBjb250ZXh0TWVudSA9IFdlYkluc3BlY3Rvci5Db250ZXh0
TWVudS5jcmVhdGVGcm9tRXZlbnQoZXZlbnQpOwogCi0gICAgICAgIHZhciBncmlkTm9kZSA9IHRo
aXMuZGF0YUdyaWROb2RlRnJvbU5vZGUoZXZlbnQudGFyZ2V0KTsKKyAgICAgICAgbGV0IGdyaWRO
b2RlID0gdGhpcy5kYXRhR3JpZE5vZGVGcm9tTm9kZShldmVudC50YXJnZXQpOwogICAgICAgICBp
ZiAodGhpcy5kYXRhR3JpZC5fcmVmcmVzaENhbGxiYWNrICYmICghZ3JpZE5vZGUgfHwgZ3JpZE5v
ZGUgIT09IHRoaXMucGxhY2Vob2xkZXJOb2RlKSkKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNoIiksIHRoaXMuX3JlZnJlc2hD
YWxsYmFjay5iaW5kKHRoaXMpKTsKIApAQCAtMTExNCwxNyArMTExNCwxNSBAQCBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQgPSBjbGFzcyBEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5WaWV3CiAg
ICAgICAgICAgICAgICAgaWYgKGdyaWROb2RlID09PSB0aGlzLnBsYWNlaG9sZGVyTm9kZSkKICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkFkZCBOZXciKSwgdGhpcy5fc3RhcnRFZGl0aW5nLmJpbmQodGhpcywgZXZlbnQudGFy
Z2V0KSk7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBl
bGVtZW50ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUoInRk
Iik7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBjb2x1bW5JZGVudGlmaWVyID0gZWxlbWVudC5f
X2NvbHVtbklkZW50aWZpZXI7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBjb2x1bW5UaXRsZSA9
IHRoaXMuZGF0YUdyaWQuY29sdW1ucy5nZXQoY29sdW1uSWRlbnRpZmllcilbInRpdGxlIl07Cisg
ICAgICAgICAgICAgICAgICAgIGxldCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05v
ZGVPclNlbGZXaXRoTm9kZU5hbWUoInRkIik7CisgICAgICAgICAgICAgICAgICAgIGxldCBjb2x1
bW5JZGVudGlmaWVyID0gZWxlbWVudC5fX2NvbHVtbklkZW50aWZpZXI7CisgICAgICAgICAgICAg
ICAgICAgIGxldCBjb2x1bW5UaXRsZSA9IHRoaXMuZGF0YUdyaWQuY29sdW1ucy5nZXQoY29sdW1u
SWRlbnRpZmllcilbInRpdGxlIl07CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFZGl0IOKAnCVz4oCdIikuZm9ybWF0KGNv
bHVtblRpdGxlKSwgdGhpcy5fc3RhcnRFZGl0aW5nLmJpbmQodGhpcywgZXZlbnQudGFyZ2V0KSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHRoaXMu
ZGF0YUdyaWQuX2RlbGV0ZUNhbGxiYWNrICYmIGdyaWROb2RlICE9PSB0aGlzLnBsYWNlaG9sZGVy
Tm9kZSkKICAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiRGVsZXRlIiksIHRoaXMuX2RlbGV0ZUNhbGxiYWNrLmJpbmQodGhpcywgZ3Jp
ZE5vZGUpKTsKICAgICAgICAgfQotCi0gICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICB9
CiAKICAgICBfY2xpY2tJbkRhdGFUYWJsZShldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJTaWRlYmFy
UGFuZWwuanMKaW5kZXggNzRhNTZjZjIyNzFiN2Y3NThlZjM3MjMxMzY4Njk4ODAyMDk5OGVjNS4u
MmIzZjAwNzk1MzA1ODEzYWIxYjA0OWJlYWE0M2RjMzdhNDQ4MjI2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJTaWRlYmFyUGFu
ZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVi
dWdnZXJTaWRlYmFyUGFuZWwuanMKQEAgLTU3OSwzMiArNTc5LDIzIEBAIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclNpZGViYXJQYW5lbCA9IGNsYXNzIERlYnVnZ2VyU2lkZWJhclBhbmVsIGV4dGVuZHMg
V2ViSW5zcGVjCiAgICAgICAgIGlmICghKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZUVsZW1lbnQpICYmICEodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuU2NyaXB0VHJlZUVsZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIHZhciBicmVha3BvaW50cyA9IHRoaXMuX2JyZWFrcG9pbnRzQmVuZWF0aFRyZWVFbGVtZW50
KHRyZWVFbGVtZW50KTsKLSAgICAgICAgdmFyIHNob3VsZERpc2FibGUgPSBmYWxzZTsKLSAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBicmVha3BvaW50cy5sZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgaWYgKCFicmVha3BvaW50c1tpXS5kaXNhYmxlZCkgewotICAgICAgICAgICAgICAgIHNo
b3VsZERpc2FibGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICB9CisgICAgICAgIGxldCBicmVha3BvaW50cyA9IHRoaXMuX2JyZWFrcG9pbnRz
QmVuZWF0aFRyZWVFbGVtZW50KHRyZWVFbGVtZW50KTsKKyAgICAgICAgbGV0IHNob3VsZERpc2Fi
bGUgPSBicmVha3BvaW50cy5zb21lKChicmVha3BvaW50KSA9PiAhYnJlYWtwb2ludC5kaXNhYmxl
ZCk7CiAKLSAgICAgICAgZnVuY3Rpb24gcmVtb3ZlQWxsUmVzb3VyY2VCcmVha3BvaW50cygpCi0g
ICAgICAgIHsKKyAgICAgICAgbGV0IHJlbW92ZUFsbFJlc291cmNlQnJlYWtwb2ludHMgPSAoKSA9
PiB7CiAgICAgICAgICAgICB0aGlzLl9yZW1vdmVBbGxCcmVha3BvaW50cyhicmVha3BvaW50cyk7
Ci0gICAgICAgIH0KKyAgICAgICAgfTsKIAotICAgICAgICBmdW5jdGlvbiB0b2dnbGVBbGxSZXNv
dXJjZUJyZWFrcG9pbnRzKCkKLSAgICAgICAgeworICAgICAgICBsZXQgdG9nZ2xlQWxsUmVzb3Vy
Y2VCcmVha3BvaW50cyA9ICgpID0+IHsKICAgICAgICAgICAgIHRoaXMuX3RvZ2dsZUFsbEJyZWFr
cG9pbnRzKGJyZWFrcG9pbnRzLCBzaG91bGREaXNhYmxlKTsKLSAgICAgICAgfQorICAgICAgICB9
OwogCi0gICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1l
bnUoZXZlbnQpOworICAgICAgICBsZXQgY29udGV4dE1lbnUgPSBXZWJJbnNwZWN0b3IuQ29udGV4
dE1lbnUuY3JlYXRlRnJvbUV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKHNob3VsZERpc2FibGUp
Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRGlzYWJsZSBCcmVha3BvaW50cyIpLCB0b2dnbGVBbGxSZXNvdXJjZUJyZWFrcG9pbnRzLmJp
bmQodGhpcykpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkRpc2FibGUgQnJlYWtwb2ludHMiKSwgdG9nZ2xlQWxsUmVzb3VyY2VCcmVh
a3BvaW50cyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbmFibGUgQnJlYWtwb2ludHMiKSwgdG9nZ2xlQWxs
UmVzb3VyY2VCcmVha3BvaW50cy5iaW5kKHRoaXMpKTsKLSAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlbGV0ZSBCcmVha3BvaW50cyIpLCByZW1v
dmVBbGxSZXNvdXJjZUJyZWFrcG9pbnRzLmJpbmQodGhpcykpOwotICAgICAgICBjb250ZXh0TWVu
dS5zaG93KCk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiRW5hYmxlIEJyZWFrcG9pbnRzIiksIHRvZ2dsZUFsbFJlc291cmNlQnJlYWtw
b2ludHMpOworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRGVsZXRlIEJyZWFrcG9pbnRzIiksIHJlbW92ZUFsbFJlc291cmNlQnJlYWtwb2ludHMp
OwogICAgIH0KIAogICAgIF90cmVlRWxlbWVudFNlbGVjdGVkKHRyZWVFbGVtZW50LCBzZWxlY3Rl
ZEJ5VXNlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0xvZ0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcuanMKaW5kZXggZDYxODc0YTY5YzY3ZjUwZmQyMWYx
NTg1Zjg4YjlmNjMxNTZiZWZhOS4uZGRkZjgzYTgyNDQzMmZmYjM5NTIyMTdlM2ZhMzQ5NzUxNTBl
MzNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvTG9nQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcuanMKQEAgLTM1MiwxNSArMzUyLDEyIEBAIFdlYklu
c3BlY3Rvci5Mb2dDb250ZW50VmlldyA9IGNsYXNzIExvZ0NvbnRlbnRWaWV3IGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWCiAgICAgICAgIGlmIChldmVudC50YXJnZXQuZW5jbG9zaW5nTm9k
ZU9yU2VsZldpdGhOb2RlTmFtZSgiYSIpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOwor
ICAgICAgICBsZXQgY29udGV4dE1lbnUgPSBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuY3JlYXRl
RnJvbUV2ZW50KGV2ZW50KTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNsZWFyIExvZyIpLCB0aGlzLl9jbGVhckxvZy5iaW5kKHRoaXMpKTsK
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CiAKLSAgICAgICAgdmFyIGNs
ZWFyTG9nT25SZWxvYWRVSVN0cmluZyA9IFdlYkluc3BlY3Rvci5sb2dNYW5hZ2VyLmNsZWFyTG9n
T25OYXZpZ2F0ZVNldHRpbmcudmFsdWUgPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIktlZXAgTG9n
IG9uIE5hdmlnYXRpb24iKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xlYXIgTG9nIG9uIE5h
dmlnYXRpb24iKTsKLQorICAgICAgICBsZXQgY2xlYXJMb2dPblJlbG9hZFVJU3RyaW5nID0gV2Vi
SW5zcGVjdG9yLmxvZ01hbmFnZXIuY2xlYXJMb2dPbk5hdmlnYXRlU2V0dGluZy52YWx1ZSA/IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiS2VlcCBMb2cgb24gTmF2aWdhdGlvbiIpIDogV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDbGVhciBMb2cgb24gTmF2aWdhdGlvbiIpOwogICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRJdGVtKGNsZWFyTG9nT25SZWxvYWRVSVN0cmluZywgdGhpcy5fdG9nZ2xlQ2xl
YXJMb2dPbk5hdmlnYXRlU2V0dGluZy5iaW5kKHRoaXMpKTsKLQotICAgICAgICBjb250ZXh0TWVu
dS5zaG93KCk7CiAgICAgfQogCiAgICAgX21vdXNlZG93bihldmVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFByZXZpZXdWaWV3
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0UHJl
dmlld1ZpZXcuanMKaW5kZXggN2FlODczZTYwODI5ZTc5ZmMyMmU2YjFhMGUzMDdjYzhlOGQyMDQw
YS4uNTIyZjM3NjNkMDFhZjk4YWE3ZDYyYTQ0MGE0ZTcyNzJkZTE4NDA3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0UHJldmlld1Zp
ZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2Jq
ZWN0UHJldmlld1ZpZXcuanMKQEAgLTI2MSwyMCArMjYxLDE4IEBAIFdlYkluc3BlY3Rvci5PYmpl
Y3RQcmV2aWV3VmlldyA9IGNsYXNzIE9iamVjdFByZXZpZXdWaWV3IGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iCiAKICAgICBfY29udGV4dE1lbnVIYW5kbGVyKGV2ZW50KQogICAgIHsKLSAgICAgICAg
dmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7Cisg
ICAgICAgIGxldCBjb250ZXh0TWVudSA9IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudS5jcmVhdGVG
cm9tRXZlbnQoZXZlbnQpOwogCi0gICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJMb2cgVmFsdWUiKSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2
YXIgcmVtb3RlT2JqZWN0ID0gdGhpcy5fcmVtb3RlT2JqZWN0OwotICAgICAgICAgICAgdmFyIGlz
SW1wb3NzaWJsZSA9ICF0aGlzLl9wcm9wZXJ0eVBhdGggfHwgdGhpcy5fcHJvcGVydHlQYXRoLmlz
RnVsbFBhdGhJbXBvc3NpYmxlKCk7Ci0gICAgICAgICAgICB2YXIgdGV4dCA9IGlzSW1wb3NzaWJs
ZSA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VsZWN0ZWQgVmFsdWUiKSA6IHRoaXMuX3Byb3Bl
cnR5UGF0aC5kaXNwbGF5UGF0aChXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLlR5cGUuVmFsdWUp
OworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
TG9nIFZhbHVlIiksICgpID0+IHsKKyAgICAgICAgICAgIGxldCByZW1vdGVPYmplY3QgPSB0aGlz
Ll9yZW1vdGVPYmplY3Q7CisgICAgICAgICAgICBsZXQgaXNJbXBvc3NpYmxlID0gIXRoaXMuX3By
b3BlcnR5UGF0aCB8fCB0aGlzLl9wcm9wZXJ0eVBhdGguaXNGdWxsUGF0aEltcG9zc2libGUoKTsK
KyAgICAgICAgICAgIGxldCB0ZXh0ID0gaXNJbXBvc3NpYmxlID8gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTZWxlY3RlZCBWYWx1ZSIpIDogdGhpcy5fcHJvcGVydHlQYXRoLmRpc3BsYXlQYXRoKFdl
Ykluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguVHlwZS5WYWx1ZSk7CiAKICAgICAgICAgICAgIGlmICgh
aXNJbXBvc3NpYmxlKQogICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5xdWlja0NvbnNvbGUu
cHJvbXB0LnB1c2hIaXN0b3J5SXRlbSh0ZXh0KTsKIAogICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LmNvbnNvbGVMb2dWaWV3Q29udHJvbGxlci5hcHBlbmRJbW1lZGlhdGVFeGVjdXRpb25XaXRoUmVz
dWx0KHRleHQsIHRoaXMuX3JlbW90ZU9iamVjdCwgaXNJbXBvc3NpYmxlKTsKLSAgICAgICAgfS5i
aW5kKHRoaXMpKTsKLQotICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7ICAgICAgICAKKyAgICAg
ICAgfSk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVCYXNlVHJlZUVsZW1l
bnQuanMKaW5kZXggZDg0ZDY3YWMwOGVhODQ2NzkzNGM5ODY2Y2I1Y2NmNGY1MjI1MGFhZS4uMmI2
ODQ5ZmM0NTI0NzliNmUwZmY3MWYxYzM0NGFhOWVmM2I5MTc5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZUJhc2VUcmVlRWxl
bWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9P
YmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmpzCkBAIC0xODIsNyArMTgyLDcgQEAgV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQgPSBjbGFzcyBPYmplY3RUcmVlQmFzZVRyZWVF
bGVtZW50IGV4dGVuZHMKIAogICAgIF9jb250ZXh0TWVudUhhbmRsZXIoZXZlbnQpCiAgICAgewot
ICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2
ZW50KTsKKyAgICAgICAgbGV0IGNvbnRleHRNZW51ID0gV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51
LmNyZWF0ZUZyb21FdmVudChldmVudCk7CiAKICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRyZWVP
dXRsaW5lLm9iamVjdFRyZWVFbGVtZW50QWRkQ29udGV4dE1lbnVJdGVtcyA9PT0gImZ1bmN0aW9u
IikgewogICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5vYmplY3RUcmVlRWxlbWVudEFkZENv
bnRleHRNZW51SXRlbXModGhpcywgY29udGV4dE1lbnUpOwpAQCAtMTkwLDMwICsxOTAsMjQgQEAg
V2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQgPSBjbGFzcyBPYmplY3RUcmVl
QmFzZVRyZWVFbGVtZW50IGV4dGVuZHMKICAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBl
bmRTZXBhcmF0b3IoKTsKICAgICAgICAgfSAgICAgICAgICAgICAKIAotICAgICAgICB2YXIgcmVz
b2x2ZWRWYWx1ZSA9IHRoaXMucmVzb2x2ZWRWYWx1ZSgpOwotICAgICAgICBpZiAoIXJlc29sdmVk
VmFsdWUpIHsKLSAgICAgICAgICAgIGlmICghY29udGV4dE1lbnUuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKKyAgICAgICAgaWYgKCF0aGlzLnJlc29sdmVk
VmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogCiAgICAgICAgIGlmICh0
aGlzLl9wcm9wZXJ0eSAmJiB0aGlzLl9wcm9wZXJ0eS5zeW1ib2wpCiAgICAgICAgICAgICBjb250
ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9nIFN5bWJvbCIpLCB0
aGlzLl9sb2dTeW1ib2xQcm9wZXJ0eS5iaW5kKHRoaXMpKTsKIAogICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9nIFZhbHVlIiksIHRoaXMuX2xv
Z1ZhbHVlLmJpbmQodGhpcykpOwogCi0gICAgICAgIHZhciBwcm9wZXJ0eVBhdGggPSB0aGlzLnJl
c29sdmVkVmFsdWVQcm9wZXJ0eVBhdGgoKTsKKyAgICAgICAgbGV0IHByb3BlcnR5UGF0aCA9IHRo
aXMucmVzb2x2ZWRWYWx1ZVByb3BlcnR5UGF0aCgpOwogICAgICAgICBpZiAocHJvcGVydHlQYXRo
ICYmICFwcm9wZXJ0eVBhdGguaXNGdWxsUGF0aEltcG9zc2libGUoKSkgewotICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvcHkgUGF0aCB0
byBQcm9wZXJ0eSIpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb3B5IFBhdGggdG8gUHJvcGVydHkiKSwgKCkg
PT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5jb3B5VGV4dChwcm9w
ZXJ0eVBhdGguZGlzcGxheVBhdGgoV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5UeXBlLlZhbHVl
KSk7Ci0gICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0KIAogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKIAogICAgICAgICB0
aGlzLl9hcHBlbmRNZW51c0l0ZW1zRm9yT2JqZWN0KGNvbnRleHRNZW51LCByZXNvbHZlZFZhbHVl
KTsKLQotICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7CiAgICAgfQogCiAgICAgX2FwcGVuZE1l
bnVzSXRlbXNGb3JPYmplY3QoY29udGV4dE1lbnUsIHJlc29sdmVkVmFsdWUpCkBAIC0yMjYsMTIg
KzIyMCwxMiBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudCA9IGNsYXNz
IE9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQgZXh0ZW5kcwogICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGVycm9yKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gcmVzcG9uc2UubG9jYXRpb247Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgc291cmNlQ29kZSA9IFdlYkluc3BlY3Rvci5kZWJ1
Z2dlck1hbmFnZXIuc2NyaXB0Rm9ySWRlbnRpZmllcihsb2NhdGlvbi5zY3JpcHRJZCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBsZXQgbG9jYXRpb24gPSByZXNwb25zZS5sb2NhdGlvbjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGxldCBzb3VyY2VDb2RlID0gV2ViSW5zcGVjdG9yLmRlYnVn
Z2VyTWFuYWdlci5zY3JpcHRGb3JJZGVudGlmaWVyKGxvY2F0aW9uLnNjcmlwdElkKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghc291cmNlQ29kZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb3VyY2VDb2Rl
TG9jYXRpb24gPSBzb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbihsb2NhdGlvbi5s
aW5lTnVtYmVyLCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIgfHwgMCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBsZXQgc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZS5jcmVhdGVTb3VyY2VD
b2RlTG9jYXRpb24obG9jYXRpb24ubGluZU51bWJlciwgbG9jYXRpb24uY29sdW1uTnVtYmVyIHx8
IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dTb3VyY2VDb2Rl
TG9jYXRpb24oc291cmNlQ29kZUxvY2F0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCmluZGV4
IGZmOGZiMDMzYzQ2ZWE5NGQyNTU3YjA3YTRmMTM1NWVlZDJlMGM5MzAuLmU2YmVhNzE0MzVjZDE2
NzhkYjRlMGJjYzIxMzYzNGRhNWRmZTAzMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRp
dG9yLmpzCkBAIC05NzEsNDYgKzk3MSwzNiBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRF
ZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogCiAg
ICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAKLSAgICAgICAgZnVuY3Rpb24gY29udGlu
dWVUb0xvY2F0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVn
Z2VyTWFuYWdlci5jb250aW51ZVRvTG9jYXRpb24oc2NyaXB0LmlkLCBzb3VyY2VDb2RlTG9jYXRp
b24ubGluZU51bWJlciwgc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcik7Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBhZGRCcmVha3BvaW50KCkKLSAgICAgICAgewotICAgICAg
ICAgICAgdmFyIGRhdGEgPSB0aGlzLnRleHRFZGl0b3JCcmVha3BvaW50QWRkZWQodGhpcywgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKTsKKyAgICAgICAgbGV0IGFkZEJyZWFrcG9pbnQgPSAoKSA9
PiB7CisgICAgICAgICAgICBsZXQgZGF0YSA9IHRoaXMudGV4dEVkaXRvckJyZWFrcG9pbnRBZGRl
ZCh0aGlzLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICAgICAgdGhpcy5zZXRC
cmVha3BvaW50SW5mb0ZvckxpbmVBbmRDb2x1bW4oZGF0YS5saW5lTnVtYmVyLCBkYXRhLmNvbHVt
bk51bWJlciwgZGF0YS5icmVha3BvaW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5j
dGlvbiByZXZlYWxJblNpZGViYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0
b3Iuc2hvd0RlYnVnZ2VyVGFiKGJyZWFrcG9pbnQpOwotICAgICAgICB9CisgICAgICAgIH07CiAK
LSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShl
dmVudCk7CisgICAgICAgIGxldCBjb250ZXh0TWVudSA9IFdlYkluc3BlY3Rvci5Db250ZXh0TWVu
dS5jcmVhdGVGcm9tRXZlbnQoZXZlbnQpOwogCiAgICAgICAgIC8vIFBhdXNlZC4gQWRkIENvbnRp
bnVlIHRvIEhlcmUgb3B0aW9uIG9ubHkgaWYgd2UgaGF2ZSBhIHNjcmlwdCBpZGVudGlmaWVyIGZv
ciB0aGUgbG9jYXRpb24uCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2Vy
LnBhdXNlZCkgewotICAgICAgICAgICAgdmFyIGVkaXRvckxpbmVJbmZvID0ge2xpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcn07Ci0gICAgICAgICAgICB2YXIgdW5mb3JtYXR0ZWRMaW5lSW5mbyA9IHRo
aXMuX3VuZm9ybWF0dGVkTGluZUluZm9Gb3JFZGl0b3JMaW5lSW5mbyhlZGl0b3JMaW5lSW5mbyk7
Ci0gICAgICAgICAgICB2YXIgc291cmNlQ29kZUxvY2F0aW9uID0gdGhpcy5fc291cmNlQ29kZS5j
cmVhdGVTb3VyY2VDb2RlTG9jYXRpb24odW5mb3JtYXR0ZWRMaW5lSW5mby5saW5lTnVtYmVyLCB1
bmZvcm1hdHRlZExpbmVJbmZvLmNvbHVtbk51bWJlcik7CisgICAgICAgICAgICBsZXQgZWRpdG9y
TGluZUluZm8gPSB7bGluZU51bWJlciwgY29sdW1uTnVtYmVyfTsKKyAgICAgICAgICAgIGxldCB1
bmZvcm1hdHRlZExpbmVJbmZvID0gdGhpcy5fdW5mb3JtYXR0ZWRMaW5lSW5mb0ZvckVkaXRvckxp
bmVJbmZvKGVkaXRvckxpbmVJbmZvKTsKKyAgICAgICAgICAgIGxldCBzb3VyY2VDb2RlTG9jYXRp
b24gPSB0aGlzLl9zb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbih1bmZvcm1hdHRl
ZExpbmVJbmZvLmxpbmVOdW1iZXIsIHVuZm9ybWF0dGVkTGluZUluZm8uY29sdW1uTnVtYmVyKTsK
IAorICAgICAgICAgICAgbGV0IHNjcmlwdDsKICAgICAgICAgICAgIGlmIChzb3VyY2VDb2RlTG9j
YXRpb24uc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQpCi0gICAgICAg
ICAgICAgICAgdmFyIHNjcmlwdCA9IHNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlOworICAg
ICAgICAgICAgICAgIHNjcmlwdCA9IHNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlOwogICAg
ICAgICAgICAgZWxzZSBpZiAoc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UpCi0gICAgICAgICAgICAgICAgdmFyIHNjcmlwdCA9IHNv
dXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlLnNjcmlwdEZvckxvY2F0aW9uKHNvdXJjZUNvZGVM
b2NhdGlvbik7CisgICAgICAgICAgICAgICAgc2NyaXB0ID0gc291cmNlQ29kZUxvY2F0aW9uLnNv
dXJjZUNvZGUuc2NyaXB0Rm9yTG9jYXRpb24oc291cmNlQ29kZUxvY2F0aW9uKTsKIAogICAgICAg
ICAgICAgaWYgKHNjcmlwdCkgewotCi0gICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnRpbnVlIHRvIEhlcmUiKSwgY29udGludWVU
b0xvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ29udGludWUgdG8gSGVyZSIpLCAoKSA9PiB7CisgICAgICAgICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuY29udGludWVUb0xvY2F0aW9u
KHNjcmlwdC5pZCwgc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXIsIHNvdXJjZUNvZGVMb2Nh
dGlvbi5jb2x1bW5OdW1iZXIpOworICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAg
IGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKLSAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gW107Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZWRpdG9yQnJlYWtwb2ludHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBs
aW5lSW5mbyA9IGVkaXRvckJyZWFrcG9pbnRzW2ldOwotICAgICAgICAgICAgdmFyIGJyZWFrcG9p
bnQgPSB0aGlzLl9icmVha3BvaW50Rm9yRWRpdG9yTGluZUluZm8obGluZUluZm8pOworICAgICAg
ICBsZXQgYnJlYWtwb2ludHMgPSBbXTsKKyAgICAgICAgZm9yIChsZXQgbGluZUluZm8gb2YgZWRp
dG9yQnJlYWtwb2ludHMpIHsKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gdGhpcy5fYnJl
YWtwb2ludEZvckVkaXRvckxpbmVJbmZvKGxpbmVJbmZvKTsKICAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGJyZWFrcG9pbnQpOwogICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQpCiAgICAgICAg
ICAgICAgICAgYnJlYWtwb2ludHMucHVzaChicmVha3BvaW50KTsKQEAgLTEwMTgsOSArMTAwOCw3
IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVU
ZXh0RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAKICAgICAgICAgLy8gTm8gYnJlYWtwb2ludHMu
CiAgICAgICAgIGlmICghYnJlYWtwb2ludHMubGVuZ3RoKSB7Ci0KICAgICAgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBZGQgQnJlYWtwb2ludCIp
LCBhZGRCcmVha3BvaW50LmJpbmQodGhpcykpOwotICAgICAgICAgICAgY29udGV4dE1lbnUuc2hv
dygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEwMzAsNDMgKzEwMTgs
MzMgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29k
ZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKIAogICAgICAgICAgICAgaWYgKCFXZWJJbnNw
ZWN0b3IuaXNTaG93aW5nRGVidWdnZXJUYWIoKSkgewogICAgICAgICAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZFNlcGFyYXRvcigpOwotICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXZlYWwgaW4gRGVidWdnZXIgVGFiIiksIHJl
dmVhbEluU2lkZWJhcik7CisgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJldmVhbCBpbiBEZWJ1Z2dlciBUYWIiKSwgKCkgPT4gewor
ICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd0RlYnVnZ2VyVGFiKGJyZWFrcG9p
bnQpOworICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBj
b250ZXh0TWVudS5zaG93KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBNdWx0aXBsZSBicmVha3BvaW50cy4KLSAgICAgICAgdmFyIHNob3VsZERpc2FibGUg
PSBmYWxzZTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBicmVha3BvaW50cy5sZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgaWYgKCFicmVha3BvaW50c1tpXS5kaXNhYmxlZCkgewotICAg
ICAgICAgICAgICAgIHNob3VsZERpc2FibGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcmVtb3ZlQnJl
YWtwb2ludHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJy
ZWFrcG9pbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQg
PSBicmVha3BvaW50c1tpXTsKKyAgICAgICAgbGV0IHJlbW92ZUJyZWFrcG9pbnRzID0gKCkgPT4g
eworICAgICAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiBicmVha3BvaW50cykgewogICAg
ICAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmlzQnJlYWtwb2lu
dFJlbW92YWJsZShicmVha3BvaW50KSkKICAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICAg
ICAgfQotICAgICAgICB9CisgICAgICAgIH07CiAKLSAgICAgICAgZnVuY3Rpb24gdG9nZ2xlQnJl
YWtwb2ludHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJy
ZWFrcG9pbnRzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGJyZWFrcG9pbnRzW2ldLmRp
c2FibGVkID0gc2hvdWxkRGlzYWJsZTsKLSAgICAgICAgfQorICAgICAgICBsZXQgc2hvdWxkRGlz
YWJsZSA9IGJyZWFrcG9pbnRzLnNvbWUoKGJyZWFrcG9pbnQpID0+ICFicmVha3BvaW50LmRpc2Fi
bGVkKTsKKyAgICAgICAgbGV0IHRvZ2dsZUJyZWFrcG9pbnRzID0gKHNob3VsZERpc2FibGUpID0+
IHsKKyAgICAgICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgb2YgYnJlYWtwb2ludHMpCisgICAg
ICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9IHNob3VsZERpc2FibGU7CisgICAgICAg
IH07CiAKICAgICAgICAgaWYgKHNob3VsZERpc2FibGUpCi0gICAgICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGlzYWJsZSBCcmVha3BvaW50cyIp
LCB0b2dnbGVCcmVha3BvaW50cy5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51
LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9pbnRzIiks
IHRvZ2dsZUJyZWFrcG9pbnRzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVuYWJsZSBCcmVha3BvaW50cyIp
LCB0b2dnbGVCcmVha3BvaW50cy5iaW5kKHRoaXMpKTsKLSAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlbGV0ZSBCcmVha3BvaW50cyIpLCByZW1v
dmVCcmVha3BvaW50cy5iaW5kKHRoaXMpKTsKLSAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwor
ICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkVuYWJsZSBCcmVha3BvaW50cyIpLCB0b2dnbGVCcmVha3BvaW50cyk7CisgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUgQnJlYWtwb2lu
dHMiKSwgcmVtb3ZlQnJlYWtwb2ludHMpOwogICAgIH0KIAogICAgIHRleHRFZGl0b3JCcmVha3Bv
aW50QWRkZWQodGV4dEVkaXRvciwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFySXRlbS5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhckl0ZW0u
anMKaW5kZXggYjIxZWM5N2FjNzA2YjVhNzI1ZGYzMTIzMzllZWEyNTE4OGI1YjcxMC4uZmNhY2Rm
Mjg3MWQzYTRmNGNlZDk5MzZjMDk3Yzk0ZjM0ZWM4MmQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFySXRlbS5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXJJdGVtLmpzCkBAIC0x
ODAsMzQgKzE4MCwyNCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFySXRlbSA9IGNsYXNzIFRhYkJhckl0
ZW0gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGlmICghdGhpcy5fcGFyZW50
VGFiQmFyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBoYXNPdGhlck5vblBp
bm5lZFRhYnMgPSBmYWxzZTsKLSAgICAgICAgZm9yICh2YXIgaXRlbSBvZiB0aGlzLl9wYXJlbnRU
YWJCYXIudGFiQmFySXRlbXMpIHsKLSAgICAgICAgICAgIGlmIChpdGVtID09PSB0aGlzIHx8IGl0
ZW0ucGlubmVkKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaGFzT3Ro
ZXJOb25QaW5uZWRUYWJzID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOyAKLSAgICAgICAgfQot
Ci0gICAgICAgIGZ1bmN0aW9uIGNsb3NlVGFiKCkKLSAgICAgICAgeworICAgICAgICBsZXQgY2xv
c2VUYWIgPSAoKSA9PiB7CiAgICAgICAgICAgICB0aGlzLl9wYXJlbnRUYWJCYXIucmVtb3ZlVGFi
QmFySXRlbSh0aGlzKTsKLSAgICAgICAgfQorICAgICAgICB9OwogCi0gICAgICAgIGZ1bmN0aW9u
IGNsb3NlT3RoZXJUYWJzKCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIHRhYkJhckl0ZW1z
ID0gdGhpcy5fcGFyZW50VGFiQmFyLnRhYkJhckl0ZW1zOwotICAgICAgICAgICAgZm9yICh2YXIg
aSA9IHRhYkJhckl0ZW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIGl0ZW0gPSB0YWJCYXJJdGVtc1tpXTsKKyAgICAgICAgbGV0IGNsb3NlT3RoZXJUYWJz
ID0gKCkgPT4geworICAgICAgICAgICAgbGV0IHRhYkJhckl0ZW1zID0gdGhpcy5fcGFyZW50VGFi
QmFyLnRhYkJhckl0ZW1zOworICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRhYkJhckl0ZW1zLmxl
bmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICAgICAgbGV0IGl0ZW0gPSB0YWJC
YXJJdGVtc1tpXTsKICAgICAgICAgICAgICAgICBpZiAoaXRlbSA9PT0gdGhpcyB8fCBpdGVtLnBp
bm5lZCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgdGhp
cy5fcGFyZW50VGFiQmFyLnJlbW92ZVRhYkJhckl0ZW0oaXRlbSk7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgIH0KKyAgICAgICAgfTsKIAotICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKLSAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsb3NlIFRhYiIpLCBjbG9zZVRhYi5iaW5kKHRo
aXMpLCAhaGFzT3RoZXJOb25QaW5uZWRUYWJzKTsKLSAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsb3NlIE90aGVyIFRhYnMiKSwgY2xvc2VPdGhl
clRhYnMuYmluZCh0aGlzKSwgIWhhc090aGVyTm9uUGlubmVkVGFicyk7Ci0gICAgICAgIGNvbnRl
eHRNZW51LnNob3coKTsKKyAgICAgICAgbGV0IGhhc090aGVyTm9uUGlubmVkVGFicyA9IHRoaXMu
X3BhcmVudFRhYkJhci50YWJCYXJJdGVtcy5zb21lKChpdGVtKSA9PiBpdGVtICE9PSB0aGlzICYm
ICFpdGVtLnBpbm5lZCk7CisgICAgICAgIGxldCBjb250ZXh0TWVudSA9IFdlYkluc3BlY3Rvci5D
b250ZXh0TWVudS5jcmVhdGVGcm9tRXZlbnQoZXZlbnQpOworICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xvc2UgVGFiIiksIGNsb3NlVGFiLCAh
aGFzT3RoZXJOb25QaW5uZWRUYWJzKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsb3NlIE90aGVyIFRhYnMiKSwgY2xvc2VPdGhlclRhYnMs
ICFoYXNPdGhlck5vblBpbm5lZFRhYnMpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lU2lkZWJhclBhbmVs
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVT
aWRlYmFyUGFuZWwuanMKaW5kZXggZTkwNmI4MWY0MDdmM2RiMWQ5NmI3OGI0OWZmNzY2NzJkOWE3
N2Q0Ny4uNzNhYjQ3OTBkYzRkMTEzOWNmODI5OTNlYjc3ZTZiM2Q0NTAwOGI1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVTaWRl
YmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGltZWxpbmVTaWRlYmFyUGFuZWwuanMKQEAgLTk0NCwxNiArOTQ0LDE1IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbCA9IGNsYXNzIFRpbWVsaW5lU2lkZWJhclBhbmVsIGV4
dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgIGlmICghd2luZG93LlJlcGxheUFnZW50KQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVJlcGxheUludGVyZmFjZSgp
IHsKKyAgICAgICAgbGV0IHRvZ2dsZVJlcGxheUludGVyZmFjZSA9ICgpID0+IHsKICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5zaG93UmVwbGF5SW50ZXJmYWNlU2V0dGluZy52YWx1ZSA9ICFXZWJJ
bnNwZWN0b3Iuc2hvd1JlcGxheUludGVyZmFjZVNldHRpbmcudmFsdWU7Ci0gICAgICAgIH0KKyAg
ICAgICAgfTsKIAotICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNv
bnRleHRNZW51KGV2ZW50KTsKKyAgICAgICAgbGV0IGNvbnRleHRNZW51ID0gV2ViSW5zcGVjdG9y
LkNvbnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7CiAgICAgICAgIGlmIChXZWJJbnNw
ZWN0b3Iuc2hvd1JlcGxheUludGVyZmFjZVNldHRpbmcudmFsdWUpCiAgICAgICAgICAgICBjb250
ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSBSZXBsYXkgQ29u
dHJvbHMiKSwgdG9nZ2xlUmVwbGF5SW50ZXJmYWNlKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgUmVw
bGF5IENvbnRyb2xzIiksIHRvZ2dsZVJlcGxheUludGVyZmFjZSk7Ci0gICAgICAgIGNvbnRleHRN
ZW51LnNob3coKTsKICAgICB9CiAKICAgICBfcmVwbGF5Q2FwdHVyZUJ1dHRvbkNsaWNrZWQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9v
bGJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xi
YXIuanMKaW5kZXggNGE1Zjc2ZjE0MzhjMzdjZWU1ZTUzMDc0ZDFlMTU2NDliNWY1NWU4NS4uNTgw
ZDllZjY2ZWI2ZjdhY2U3NTQxNjVkMTU2NjEwN2U4OGU2YzUwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzCkBAIC0xOTks
NyArMTk5LDcgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIgPSBjbGFzcyBUb29sYmFyIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIKIAogICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50
KGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rv
ci5Db250ZXh0TWVudShldmVudCk7CisgICAgICAgIGxldCBjb250ZXh0TWVudSA9IFdlYkluc3Bl
Y3Rvci5Db250ZXh0TWVudS5jcmVhdGVGcm9tRXZlbnQoZXZlbnQpOwogCiAgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZENoZWNrYm94SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkljb24gYW5k
IFRleHQgKFZlcnRpY2FsKSIpLCB0aGlzLl9jaGFuZ2VEaXNwbGF5TW9kZS5iaW5kKHRoaXMsIFdl
Ykluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbFZlcnRpY2FsKSwgdGhp
cy5fZGlzcGxheU1vZGUgPT09IFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25B
bmRMYWJlbFZlcnRpY2FsKTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kQ2hlY2tib3hJdGVt
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiSWNvbiBhbmQgVGV4dCAoSG9yaXpvbnRhbCkiKSwgdGhp
cy5fY2hhbmdlRGlzcGxheU1vZGUuYmluZCh0aGlzLCBXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNw
bGF5TW9kZS5JY29uQW5kTGFiZWxIb3Jpem9udGFsKSwgdGhpcy5fZGlzcGxheU1vZGUgPT09IFdl
Ykluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbEhvcml6b250YWwpOwpA
QCAtMjEwLDggKzIxMCw2IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyID0gY2xhc3MgVG9vbGJhciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyCiAgICAgICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRTZXBhcmF0b3IoKTsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZENoZWNr
Ym94SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNtYWxsIEljb25zIiksIHRoaXMuX3RvZ2ds
ZVNtYWxsSWNvbnMuYmluZCh0aGlzKSwgdGhpcy5fc2l6ZU1vZGUgPT09IFdlYkluc3BlY3Rvci5U
b29sYmFyLlNpemVNb2RlLlNtYWxsKTsKICAgICAgICAgfQotCi0gICAgICAgIGNvbnRleHRNZW51
LnNob3coKTsKICAgICB9CiAKICAgICBfY2hhbmdlRGlzcGxheU1vZGUoZGlzcGxheU1vZGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1
YWxTdHlsZVNlbGVjdG9yVHJlZUl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVNlbGVjdG9yVHJlZUl0ZW0uanMKaW5kZXggNzgzMDE3
NDc5ODE5Yzk2ZjE4Y2YyMTdlNmM5MTg3NDA0NGE3Nzg4Ni4uOTMxNGJhODdhNDQ5ZGI3YzI5NGVl
OGE0MWE2MDRkOGVlMjgxNDg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVTZWxlY3RvclRyZWVJdGVtLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0
b3JUcmVlSXRlbS5qcwpAQCAtMTMyLDI3ICsxMzIsMjUgQEAgV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlU2VsZWN0b3JUcmVlSXRlbSA9IGNsYXNzIFZpc3VhbFN0eWxlU2VsZWN0b3JUcmVlSXRlbSBl
eHQKIAogICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50KGV2ZW50KQogICAgIHsKLSAgICAgICAg
bGV0IGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7Cisg
ICAgICAgIGxldCBjb250ZXh0TWVudSA9IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudS5jcmVhdGVG
cm9tRXZlbnQoZXZlbnQpOwogCiAgICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm93
bmVyUnVsZSkgewotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlNob3cgU291cmNlIiksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgU291cmNlIiks
ICgpID0+IHsKICAgICAgICAgICAgICAgICBpZiAoZXZlbnQubWV0YUtleSkKICAgICAgICAgICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dPcmlnaW5hbFVuZm9ybWF0dGVkU291cmNlQ29kZUxv
Y2F0aW9uKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qub3duZXJSdWxlLnNvdXJjZUNvZGVMb2NhdGlv
bik7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0
b3Iuc2hvd1NvdXJjZUNvZGVMb2NhdGlvbih0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm93bmVyUnVs
ZS5zb3VyY2VDb2RlTG9jYXRpb24pOwotICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAg
ICAgICAgIH0pOwogICAgICAgICB9CiAKLSAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvcHkgUnVsZSIpLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvcHkgUnVsZSIp
LCAoKSA9PiB7CiAgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY29weVRleHQodGhp
cy5yZXByZXNlbnRlZE9iamVjdC5nZW5lcmF0ZUNTU1J1bGVTdHJpbmcoKSk7Ci0gICAgICAgIH0u
YmluZCh0aGlzKSk7CisgICAgICAgIH0pOwogCi0gICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNldCIpLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc2V0IiksICgp
ID0+IHsKICAgICAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVzZXRUZXh0KCk7CiAg
ICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVTZWxlY3RvclRyZWVJdGVtLkV2ZW50LlN0eWxlVGV4dFJlc2V0KTsKLSAgICAgICAg
fS5iaW5kKHRoaXMpKTsKLQotICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7CisgICAgICAgIH0p
OwogICAgIH0KIAogICAgIF9oYW5kbGVDaGVja2JveENoYW5nZWQoZXZlbnQpCg==
</data>
<flag name="review"
          id="291227"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266228</attachid>
            <date>2015-11-29 17:08:53 -0800</date>
            <delta_ts>2015-12-09 13:46:12 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>setting.patch</filename>
            <type>text/plain</type>
            <size>33948</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">Y29tbWl0IDI4YzBjZjU5Yzk3NDVkNTZlOGI1MmEyNTNhN2MyZGZlNjYwOWRkY2EKQXV0aG9yOiBC
cmlhbiBCdXJnIDxiYnVyZ0BhcHBsZS5jb20+CkRhdGU6ICAgU2F0IE5vdiAyOCAwMDowMDowNyAy
MDE1IC0wODAwCgogICAgV2ViIEluc3BlY3RvcjogY29udHJvbCB3aGV0aGVyIHRvIGNvbGxlY3Qg
YW5kIGR1bXAgcHJvdG9jb2wgbWVzc2FnZXMgdXNpbmcgYSBXZWJJbnNwZWN0b3IuU2V0dGluZwog
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTYzNQogICAgCiAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KICAgIAogICAgV2hlbiBjbG9zaW5nIGFuZCBy
ZW9wZW5pbmcgdGhlIGluc3BlY3RvciwgdGhlIHNldHRpbmcgZm9yIHdoZXRoZXIKICAgIHRvIGR1
bXAgcHJvdG9jb2wgbWVzc2FnZXMgc2hvdWxkIGJlIHBlcnNpc3RlZC4gT3RoZXJ3aXNlLCBlbmFi
bGluZwogICAgZHVtcGluZyBmcm9tIHRoZSBkZWJ1Zy1vbmx5IFVJIHdpbGwgbWlzcyB0aGUgaW5p
dGlhbCBmbG9vZCBvZgogICAgbWVzc2FnZXMgdGhhdCBhcmUgcHJvY2Vzc2VkIHdoZW4gdGhlIElu
c3BlY3RvciBsb2FkcyBpbml0aWFsIGRhdGEuCiAgICAKICAgIFRvIHN1cHBvcnQgYSBwZXJzaXN0
ZW50IHNldHRpbmcsIGFuZCBidWlsZCBzb21lIGluZnJhc3RydWN0dXJlIGZvcgogICAgbW9yZSBh
ZHZhbmNlZCB1c2VzIG9mIGNvbGxlY3RlZCBwcm90b2NvbCBtZXNzYWdlcywgdGhpcyBwYXRjaCBh
ZGRzCiAgICBhIG5ldyBvYmplY3QgdG8gdHJhY2UgcHJvdG9jb2wgZXZlbnRzLiBJdCBnZXRzIGNh
bGxiYWNrcyBmb3IgZWFjaAogICAgYW5kIGltcGxlbWVudHMgdGhlIGNvbnNvbGUtZHVtcGluZyBm
dW5jdGlvbmFsaXR5IHByZXZpb3VzbHkgYmFrZWQgaW4KICAgIHRvIEluc3BlY3RvckJhY2tlbmQu
CiAgICAKICAgIEluIGZvbGxvdy11cCBwYXRjaGVzLCBvdGhlciBwcm90b2NvbCB0cmFjZXJzIHdp
bGwgYmUgYWRkZWQgdG8gc2F2ZQogICAgcHJvdG9jb2wgZGF0YSB0byBkaXNrLCBtYXJzaGFsbCBp
dCB0byBhIGhpZ2hlciBpbnNwZWN0aW9uIGxldmVsLAogICAgb3IgcHJvdmlkZSBtb3JlIGZpbmUt
Z3JhaW5lZCBjb250cm9sIG92ZXIgd2hhdCBpcyBsb2dnZWQuCiAgICAKICAgIFRoaXMgY2hhbmdl
IG1vdmVzIFNldHRpbmcuanMgaW50byB0aGUgQmFzZS8gZGlyZWN0b3J5LAogICAgc2luY2UgaXQg
aXMgdXNlZCBieSBWaWV3cywgTW9kZWxzLCBhbmQgbm93IFByb3RvY29sIGNsYXNzZXMuCiAgICAK
ICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanM6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2V0dGluZy5qcy4KICAgIChXZWJJ
bnNwZWN0b3IuU2V0dGluZyk6CiAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmcucHJvdG90eXBlLmdl
dCBuYW1lKToKICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZy5wcm90b3R5cGUuZ2V0IHZhbHVlKToK
ICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZy5wcm90b3R5cGUuc2V0IHZhbHVlKToKICAgICogVXNl
ckludGVyZmFjZS9NYWluLmh0bWw6CiAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVj
dG9yQmFja2VuZC5qczoKICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xhc3MpOgogICAgKEluc3BlY3Rv
ckJhY2tlbmRDbGFzcy5wcm90b3R5cGUuc2V0IGR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2Vz
KToKICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLmdldCBkdW1wSW5zcGVjdG9y
UHJvdG9jb2xNZXNzYWdlcyk6CiAgICAKICAgICAgICBXZSBzdGlsbCB3YW50IHRvIHN1cHBvcnQg
dGhlIGxlZ2FjeSB3YXkgdG8gZW5hYmxlIGR1bXBpbmc6CiAgICAgICAgYEluc3BlY3RvckJhY2tl
bmQuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMgPSB0cnVlYC4gVGhpcwogICAgICAgIGlz
IGJlY2F1c2Ugc29tZSB0ZXN0cyBhbHdheXMgdXNlIGl0LCBhbmQgaXQncyBlYXNpZXIgdG8gc2V0
IHRoaXMKICAgICAgICBmbGFnIGluIGEgY3VzdG9tIEJvb3RzdHJhcC5qcyBmaWxlIHRoYW4gdG8g
Y29uZmlndXJlIHRoZSBTZXR0aW5nLgogICAgCiAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnBy
b3RvdHlwZS5zZXQgZHVtcEluc3BlY3RvclRpbWVTdGF0cyk6CiAgICAoSW5zcGVjdG9yQmFja2Vu
ZENsYXNzLnByb3RvdHlwZS5nZXQgZHVtcEluc3BlY3RvclRpbWVTdGF0cyk6CiAgICAKICAgICAg
ICBXZSBzdGlsbCB3YW50IHRvIHN1cHBvcnQgdGhlIGxlZ2FjeSB3YXkgdG8gZW5hYmxlIGR1bXBp
bmc6CiAgICAgICAgYEluc3BlY3RvckJhY2tlbmQuZHVtcEluc3BlY3RvclRpbWVTdGF0cyA9IHRy
dWVgLiBUaGlzIGlzCiAgICAgICAgYmVjYXVzZSBNZXNzYWdlRGlzcGF0Y2hlciBjaGVja3MgdGhp
cyBmbGFnIGZvciBpdHMgbG9nZ2luZy4KICAgIAogICAgKEluc3BlY3RvckJhY2tlbmRDbGFzcy5w
cm90b3R5cGUuc2V0IGFjdGl2ZVRyYWNlcik6CiAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnBy
b3RvdHlwZS5nZXQgYWN0aXZlVHJhY2VyKToKICAgIAogICAgICAgIFNldCB0aGUgYWN0aXZlIHRy
YWNlciwgZmluYWxpemluZyBhbmQgcmVtb3ZpbmcgYW55IGFjdGl2ZSB0cmFjZXIKICAgICAgICBp
ZiBvbmUgZXhpc3RzLiBJZiByZW1vdmluZyBhIGN1c3RvbSB0cmFjZXIgKHNldHRpbmcgdG8gbnVs
bCksIHRoZW4KICAgICAgICByZS1zeW5jIGFjdGl2ZVRyYWNlciB3aXRoIHRoZSBhdXRvbWF0aWMg
dHJhY2luZyBTZXR0aW5nLgogICAgCiAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlw
ZS5kaXNwYXRjaCk6CiAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZS5fc3RhcnRP
clN0b3BBdXRvbWF0aWNUcmFjaW5nKToKICAgIAogICAgICAgIFN5bmMgdGhlIFNldHRpbmcgd2l0
aCBhY3RpdmVUcmFjZXIuIElmIGFuIGN1c3RvbSB0cmFjZXIgaXMgYWN0aXZlLAogICAgICAgIGRv
bid0IHJlcGxhY2UgaXQgd2l0aCB0aGUgYXV0b21hdGljIGxvZ2dpbmcgdHJhY2VyLgogICAgCiAg
ICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZS5fc2VuZENvbW1hbmRUb0JhY2tlbmRX
aXRoQ2FsbGJhY2spOgogICAgKEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUuX3NlbmRD
b21tYW5kVG9CYWNrZW5kRXhwZWN0aW5nUHJvbWlzZSk6CiAgICAoSW5zcGVjdG9yQmFja2VuZENs
YXNzLnByb3RvdHlwZS5fc2VuZE1lc3NhZ2VUb0JhY2tlbmQpOgogICAgKEluc3BlY3RvckJhY2tl
bmRDbGFzcy5wcm90b3R5cGUuX2Rpc3BhdGNoUmVzcG9uc2UpOgogICAgKEluc3BlY3RvckJhY2tl
bmRDbGFzcy5wcm90b3R5cGUuX2Rpc3BhdGNoRXZlbnQpOgogICAgKEluc3BlY3RvckJhY2tlbmRD
bGFzcy5wcm90b3R5cGUuX2ZsdXNoUGVuZGluZ1NjcmlwdHMpOgogICAgKiBVc2VySW50ZXJmYWNl
L1Byb3RvY29sL0xvZ2dpbmdQcm90b2NvbFRyYWNlci5qczogQWRkZWQuCiAgICAoV2ViSW5zcGVj
dG9yLkxvZ2dpbmdQcm90b2NvbFRyYWNlcik6CiAgICAoV2ViSW5zcGVjdG9yLkxvZ2dpbmdQcm90
b2NvbFRyYWNlci5wcm90b3R5cGUuc2V0IGR1bXBNZXNzYWdlc1RvQ29uc29sZSk6CiAgICAoV2Vi
SW5zcGVjdG9yLkxvZ2dpbmdQcm90b2NvbFRyYWNlci5wcm90b3R5cGUuZ2V0IGR1bXBNZXNzYWdl
c1RvQ29uc29sZSk6CiAgICAoV2ViSW5zcGVjdG9yLkxvZ2dpbmdQcm90b2NvbFRyYWNlci5wcm90
b3R5cGUuc2V0IGR1bXBUaW1pbmdEYXRhVG9Db25zb2xlKToKICAgIChXZWJJbnNwZWN0b3IuTG9n
Z2luZ1Byb3RvY29sVHJhY2VyLnByb3RvdHlwZS5nZXQgZHVtcFRpbWluZ0RhdGFUb0NvbnNvbGUp
OgogICAgKFdlYkluc3BlY3Rvci5Mb2dnaW5nUHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLmxvZ0Zy
b250ZW5kRXhjZXB0aW9uKToKICAgIChXZWJJbnNwZWN0b3IuTG9nZ2luZ1Byb3RvY29sVHJhY2Vy
LnByb3RvdHlwZS5sb2dQcm90b2NvbEVycm9yKToKICAgIChXZWJJbnNwZWN0b3IuTG9nZ2luZ1By
b3RvY29sVHJhY2VyLnByb3RvdHlwZS5sb2dGcm9udGVuZFJlcXVlc3QpOgogICAgKFdlYkluc3Bl
Y3Rvci5Mb2dnaW5nUHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLmxvZ1dpbGxIYW5kbGVSZXNwb25z
ZSk6CiAgICAoV2ViSW5zcGVjdG9yLkxvZ2dpbmdQcm90b2NvbFRyYWNlci5wcm90b3R5cGUubG9n
RGlkSGFuZGxlUmVzcG9uc2UpOgogICAgKFdlYkluc3BlY3Rvci5Mb2dnaW5nUHJvdG9jb2xUcmFj
ZXIucHJvdG90eXBlLmxvZ1dpbGxIYW5kbGVFdmVudCk6CiAgICAoV2ViSW5zcGVjdG9yLkxvZ2dp
bmdQcm90b2NvbFRyYWNlci5wcm90b3R5cGUubG9nRGlkSGFuZGxlRXZlbnQpOgogICAgKFdlYklu
c3BlY3Rvci5Mb2dnaW5nUHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLl9wcm9jZXNzRW50cnkpOgog
ICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1Byb3RvY29sVHJhY2VyLmpzOiBBZGRlZC4KICAg
IChXZWJJbnNwZWN0b3IuUHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLmxvZ1N0YXJ0ZWQpOgogICAg
KFdlYkluc3BlY3Rvci5Qcm90b2NvbFRyYWNlci5wcm90b3R5cGUubG9nRnJvbnRlbmRFeGNlcHRp
b24pOgogICAgKFdlYkluc3BlY3Rvci5Qcm90b2NvbFRyYWNlci5wcm90b3R5cGUubG9nUHJvdG9j
b2xFcnJvcik6CiAgICAoV2ViSW5zcGVjdG9yLlByb3RvY29sVHJhY2VyLnByb3RvdHlwZS5sb2dG
cm9udGVuZFJlcXVlc3QpOgogICAgKFdlYkluc3BlY3Rvci5Qcm90b2NvbFRyYWNlci5wcm90b3R5
cGUubG9nV2lsbEhhbmRsZVJlc3BvbnNlKToKICAgIChXZWJJbnNwZWN0b3IuUHJvdG9jb2xUcmFj
ZXIucHJvdG90eXBlLmxvZ0RpZEhhbmRsZVJlc3BvbnNlKToKICAgIChXZWJJbnNwZWN0b3IuUHJv
dG9jb2xUcmFjZXIucHJvdG90eXBlLmxvZ1dpbGxIYW5kbGVFdmVudCk6CiAgICAoV2ViSW5zcGVj
dG9yLlByb3RvY29sVHJhY2VyLnByb3RvdHlwZS5sb2dEaWRIYW5kbGVFdmVudCk6ICAgICAgICAo
V2ViSW5zcGVjdG9yLlByb3RvY29sVHJhY2VyLnByb3RvdHlwZS5sb2dGaW5pc2hlZCk6CiAgICAo
V2ViSW5zcGVjdG9yLlByb3RvY29sVHJhY2VyKToKICAgICogVXNlckludGVyZmFjZS9UZXN0Lmh0
bWw6CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMzc1YmI4Mi4uMjA4ZmVkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsOTggQEAKIDIwMTUtMTEtMjcgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogY29udHJvbCB3
aGV0aGVyIHRvIGNvbGxlY3QgYW5kIGR1bXAgcHJvdG9jb2wgbWVzc2FnZXMgdXNpbmcgYSBXZWJJ
bnNwZWN0b3IuU2V0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUxNjM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiBjbG9zaW5nIGFuZCByZW9wZW5pbmcgdGhlIGluc3BlY3RvciwgdGhlIHNl
dHRpbmcgZm9yIHdoZXRoZXIKKyAgICAgICAgdG8gZHVtcCBwcm90b2NvbCBtZXNzYWdlcyBzaG91
bGQgYmUgcGVyc2lzdGVkLiBPdGhlcndpc2UsIGVuYWJsaW5nCisgICAgICAgIGR1bXBpbmcgZnJv
bSB0aGUgZGVidWctb25seSBVSSB3aWxsIG1pc3MgdGhlIGluaXRpYWwgZmxvb2Qgb2YKKyAgICAg
ICAgbWVzc2FnZXMgdGhhdCBhcmUgcHJvY2Vzc2VkIHdoZW4gdGhlIEluc3BlY3RvciBsb2FkcyBp
bml0aWFsIGRhdGEuCisKKyAgICAgICAgVG8gc3VwcG9ydCBhIHBlcnNpc3RlbnQgc2V0dGluZywg
YW5kIGJ1aWxkIHNvbWUgaW5mcmFzdHJ1Y3R1cmUgZm9yCisgICAgICAgIG1vcmUgYWR2YW5jZWQg
dXNlcyBvZiBjb2xsZWN0ZWQgcHJvdG9jb2wgbWVzc2FnZXMsIHRoaXMgcGF0Y2ggYWRkcworICAg
ICAgICBhIG5ldyBvYmplY3QgdG8gdHJhY2UgcHJvdG9jb2wgZXZlbnRzLiBJdCBnZXRzIGNhbGxi
YWNrcyBmb3IgZWFjaAorICAgICAgICBhbmQgaW1wbGVtZW50cyB0aGUgY29uc29sZS1kdW1waW5n
IGZ1bmN0aW9uYWxpdHkgcHJldmlvdXNseSBiYWtlZCBpbgorICAgICAgICB0byBJbnNwZWN0b3JC
YWNrZW5kLgorCisgICAgICAgIEluIGZvbGxvdy11cCBwYXRjaGVzLCBvdGhlciBwcm90b2NvbCB0
cmFjZXJzIHdpbGwgYmUgYWRkZWQgdG8gc2F2ZQorICAgICAgICBwcm90b2NvbCBkYXRhIHRvIGRp
c2ssIG1hcnNoYWxsIGl0IHRvIGEgaGlnaGVyIGluc3BlY3Rpb24gbGV2ZWwsCisgICAgICAgIG9y
IHByb3ZpZGUgbW9yZSBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyIHdoYXQgaXMgbG9nZ2VkLgor
CisgICAgICAgIFRoaXMgY2hhbmdlIG1vdmVzIFNldHRpbmcuanMgaW50byB0aGUgQmFzZS8gZGly
ZWN0b3J5LAorICAgICAgICBzaW5jZSBpdCBpcyB1c2VkIGJ5IFZpZXdzLCBNb2RlbHMsIGFuZCBu
b3cgUHJvdG9jb2wgY2xhc3Nlcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9TZXR0
aW5nLmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL1NldHRpbmcuanMuCisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZy5wcm90b3R5cGUuZ2V0IG5hbWUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNldHRpbmcucHJvdG90eXBlLmdldCB2YWx1ZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2V0dGluZy5wcm90b3R5cGUuc2V0IHZhbHVlKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3Bl
Y3RvckJhY2tlbmQuanM6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xhc3MpOgorICAgICAg
ICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZS5zZXQgZHVtcEluc3BlY3RvclByb3Rv
Y29sTWVzc2FnZXMpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZS5n
ZXQgZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMpOgorCisgICAgICAgICAgICBXZSBzdGls
bCB3YW50IHRvIHN1cHBvcnQgdGhlIGxlZ2FjeSB3YXkgdG8gZW5hYmxlIGR1bXBpbmc6CisgICAg
ICAgICAgICBgSW5zcGVjdG9yQmFja2VuZC5kdW1wSW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcyA9
IHRydWVgLiBUaGlzCisgICAgICAgICAgICBpcyBiZWNhdXNlIHNvbWUgdGVzdHMgYWx3YXlzIHVz
ZSBpdCwgYW5kIGl0J3MgZWFzaWVyIHRvIHNldCB0aGlzCisgICAgICAgICAgICBmbGFnIGluIGEg
Y3VzdG9tIEJvb3RzdHJhcC5qcyBmaWxlIHRoYW4gdG8gY29uZmlndXJlIHRoZSBTZXR0aW5nLgor
CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLnNldCBkdW1wSW5zcGVj
dG9yVGltZVN0YXRzKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUu
Z2V0IGR1bXBJbnNwZWN0b3JUaW1lU3RhdHMpOgorCisgICAgICAgICAgICBXZSBzdGlsbCB3YW50
IHRvIHN1cHBvcnQgdGhlIGxlZ2FjeSB3YXkgdG8gZW5hYmxlIGR1bXBpbmc6CisgICAgICAgICAg
ICBgSW5zcGVjdG9yQmFja2VuZC5kdW1wSW5zcGVjdG9yVGltZVN0YXRzID0gdHJ1ZWAuIFRoaXMg
aXMKKyAgICAgICAgICAgIGJlY2F1c2UgTWVzc2FnZURpc3BhdGNoZXIgY2hlY2tzIHRoaXMgZmxh
ZyBmb3IgaXRzIGxvZ2dpbmcuCisKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90
b3R5cGUuc2V0IGFjdGl2ZVRyYWNlcik6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xhc3Mu
cHJvdG90eXBlLmdldCBhY3RpdmVUcmFjZXIpOgorCisgICAgICAgICAgICBTZXQgdGhlIGFjdGl2
ZSB0cmFjZXIsIGZpbmFsaXppbmcgYW5kIHJlbW92aW5nIGFueSBhY3RpdmUgdHJhY2VyCisgICAg
ICAgICAgICBpZiBvbmUgZXhpc3RzLiBJZiByZW1vdmluZyBhIGN1c3RvbSB0cmFjZXIgKHNldHRp
bmcgdG8gbnVsbCksIHRoZW4KKyAgICAgICAgICAgIHJlLXN5bmMgYWN0aXZlVHJhY2VyIHdpdGgg
dGhlIGF1dG9tYXRpYyB0cmFjaW5nIFNldHRpbmcuCisKKyAgICAgICAgKEluc3BlY3RvckJhY2tl
bmRDbGFzcy5wcm90b3R5cGUuZGlzcGF0Y2gpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZENs
YXNzLnByb3RvdHlwZS5fc3RhcnRPclN0b3BBdXRvbWF0aWNUcmFjaW5nKToKKworICAgICAgICAg
ICAgU3luYyB0aGUgU2V0dGluZyB3aXRoIGFjdGl2ZVRyYWNlci4gSWYgYW4gY3VzdG9tIHRyYWNl
ciBpcyBhY3RpdmUsCisgICAgICAgICAgICBkb24ndCByZXBsYWNlIGl0IHdpdGggdGhlIGF1dG9t
YXRpYyBsb2dnaW5nIHRyYWNlci4KKworICAgICAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnBy
b3RvdHlwZS5fc2VuZENvbW1hbmRUb0JhY2tlbmRXaXRoQ2FsbGJhY2spOgorICAgICAgICAoSW5z
cGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZS5fc2VuZENvbW1hbmRUb0JhY2tlbmRFeHBlY3Rp
bmdQcm9taXNlKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUuX3Nl
bmRNZXNzYWdlVG9CYWNrZW5kKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90
b3R5cGUuX2Rpc3BhdGNoUmVzcG9uc2UpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNz
LnByb3RvdHlwZS5fZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xh
c3MucHJvdG90eXBlLl9mbHVzaFBlbmRpbmdTY3JpcHRzKToKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1Byb3RvY29sL0xvZ2dpbmdQcm90b2NvbFRyYWNlci5qczogQWRkZWQuCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuTG9nZ2luZ1Byb3RvY29sVHJhY2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Mb2dnaW5nUHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLnNldCBkdW1wTWVzc2FnZXNUb0NvbnNv
bGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxvZ2dpbmdQcm90b2NvbFRyYWNlci5wcm90b3R5
cGUuZ2V0IGR1bXBNZXNzYWdlc1RvQ29uc29sZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTG9n
Z2luZ1Byb3RvY29sVHJhY2VyLnByb3RvdHlwZS5zZXQgZHVtcFRpbWluZ0RhdGFUb0NvbnNvbGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxvZ2dpbmdQcm90b2NvbFRyYWNlci5wcm90b3R5cGUu
Z2V0IGR1bXBUaW1pbmdEYXRhVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Mb2dn
aW5nUHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLmxvZ0Zyb250ZW5kRXhjZXB0aW9uKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Mb2dnaW5nUHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLmxvZ1Byb3Rv
Y29sRXJyb3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxvZ2dpbmdQcm90b2NvbFRyYWNlci5w
cm90b3R5cGUubG9nRnJvbnRlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Mb2dn
aW5nUHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLmxvZ1dpbGxIYW5kbGVSZXNwb25zZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTG9nZ2luZ1Byb3RvY29sVHJhY2VyLnByb3RvdHlwZS5sb2dEaWRI
YW5kbGVSZXNwb25zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTG9nZ2luZ1Byb3RvY29sVHJh
Y2VyLnByb3RvdHlwZS5sb2dXaWxsSGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkxvZ2dpbmdQcm90b2NvbFRyYWNlci5wcm90b3R5cGUubG9nRGlkSGFuZGxlRXZlbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkxvZ2dpbmdQcm90b2NvbFRyYWNlci5wcm90b3R5cGUuX3Byb2Nl
c3NFbnRyeSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9Qcm90b2NvbFRyYWNl
ci5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvdG9jb2xUcmFjZXIucHJvdG90
eXBlLmxvZ1N0YXJ0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb3RvY29sVHJhY2VyLnBy
b3RvdHlwZS5sb2dGcm9udGVuZEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJv
dG9jb2xUcmFjZXIucHJvdG90eXBlLmxvZ1Byb3RvY29sRXJyb3IpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlByb3RvY29sVHJhY2VyLnByb3RvdHlwZS5sb2dGcm9udGVuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlByb3RvY29sVHJhY2VyLnByb3RvdHlwZS5sb2dXaWxsSGFuZGxl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb3RvY29sVHJhY2VyLnByb3RvdHlw
ZS5sb2dEaWRIYW5kbGVSZXNwb25zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvdG9jb2xU
cmFjZXIucHJvdG90eXBlLmxvZ1dpbGxIYW5kbGVFdmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLmxvZ0RpZEhhbmRsZUV2ZW50KTogICAgICAgIChX
ZWJJbnNwZWN0b3IuUHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLmxvZ0ZpbmlzaGVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Qcm90b2NvbFRyYWNlcik6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9UZXN0Lmh0bWw6CisKKzIwMTUtMTEtMjcgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+
CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGNvbnRleHQgbWVudSBpdGVtIHRvIFJlbG9h
ZCB0aGUgSW5zcGVjdG9yCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDE3NDIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1NldHRpbmcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9CYXNlL1NldHRpbmcuanMKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20g
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NldHRpbmcuanMKcmVu
YW1lIHRvIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5q
cwppbmRleCA1NmU5OTc4Li4yZjljMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2V0dGluZy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMKQEAgLTM3LDcgKzM3LDcgQEAgV2Vi
SW5zcGVjdG9yLlNldHRpbmcgPSBjbGFzcyBTZXR0aW5nIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogCiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwogCi0gICAgICAgIGxldCBpbnNwZWN0
aW9uTGV2ZWwgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaW5zcGVjdGlvbkxldmVsKCk7CisgICAg
ICAgIGxldCBpbnNwZWN0aW9uTGV2ZWwgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3QgPyBJbnNwZWN0
b3JGcm9udGVuZEhvc3QuaW5zcGVjdGlvbkxldmVsKCkgOiAxOwogICAgICAgICBsZXQgbGV2ZWxT
dHJpbmcgPSBpbnNwZWN0aW9uTGV2ZWwgPiAxID8gIi0iICsgaW5zcGVjdGlvbkxldmVsIDogIiI7
CiAgICAgICAgIHRoaXMuX2xvY2FsU3RvcmFnZUtleSA9IGBjb20uYXBwbGUuV2ViSW5zcGVjdG9y
JHtsZXZlbFN0cmluZ30uJHtuYW1lfWA7CiAgICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZSA9IGRl
ZmF1bHRWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
aHRtbAppbmRleCA4YjVmNzJjLi5iNDZmM2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0yMjAsNiArMjIwLDEwIEBACiAgICAgPHNjcmlw
dCBzcmM9IkJhc2UvTUlNRVR5cGVVdGlsaXRpZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJCYXNlL1VSTFV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJh
c2UvVXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQmFzZS9TZXR0aW5n
LmpzIj48L3NjcmlwdD4KKworICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9Qcm90b2NvbFRyYWNl
ci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0xvZ2dpbmdQcm90b2Nv
bFRyYWNlci5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQXBwbGlj
YXRpb25DYWNoZU9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9j
b2wvQ1NTT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgpAQCAtMzE5LDcgKzMyMyw2IEBACiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9TY3JpcHQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9TY3JpcHRUaW1lbGluZVJlY29yZC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9TZXR0aW5nLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Nv
dXJjZUNvZGVQb3NpdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9T
b3VyY2VDb2RlUmV2aXNpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
U291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tl
bmQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNw
ZWN0b3JCYWNrZW5kLmpzCmluZGV4IGFlOGJhNzMuLjMzMjZmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5z
cGVjdG9yQmFja2VuZC5qcwpAQCAtMzgsMTcgKzM4LDkxIEBAIEluc3BlY3RvckJhY2tlbmRDbGFz
cyA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDbGFzcwogICAgICAgICB0aGlzLl9wZW5kaW5nUmVz
cG9uc2VzID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fYWdlbnRzID0ge307CiAgICAgICAgIHRo
aXMuX2RlZmVycmVkU2NyaXB0cyA9IFtdOworICAgICAgICB0aGlzLl9hY3RpdmVUcmFjZXIgPSBu
dWxsOworICAgICAgICB0aGlzLl9hdXRvbWF0aWNUcmFjZXIgPSBudWxsOwogCi0gICAgICAgIHRo
aXMuZHVtcEluc3BlY3RvclRpbWVTdGF0cyA9IGZhbHNlOwotICAgICAgICB0aGlzLmR1bXBJbnNw
ZWN0b3JQcm90b2NvbE1lc3NhZ2VzID0gZmFsc2U7Ci0gICAgICAgIHRoaXMud2FybkZvckxvbmdN
ZXNzYWdlSGFuZGxpbmcgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5sb25nTWVzc2FnZUhhbmRsaW5n
VGhyZXNob2xkID0gMTA7IC8vIG1pbGxpc2Vjb25kcy4KKyAgICAgICAgdGhpcy5fZHVtcEluc3Bl
Y3RvclRpbWVTdGF0cyA9IGZhbHNlOwogCi0gICAgICAgIHRoaXMuX2xvZyA9IHdpbmRvdy5JbnNw
ZWN0b3JUZXN0ID8gSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnVuYnVmZmVyZWRMb2cuYmluZChJbnNw
ZWN0b3JGcm9udGVuZEhvc3QpIDogY29uc29sZS5sb2cuYmluZChjb25zb2xlKTsKKyAgICAgICAg
bGV0IHNldHRpbmcgPSBXZWJJbnNwZWN0b3IuYXV0b0xvZ1Byb3RvY29sTWVzc2FnZXNTZXR0aW5n
ID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJhdXRvLWNvbGxlY3QtcHJvdG9jb2wtbWVzc2Fn
ZXMiLCBmYWxzZSk7CisgICAgICAgIHNldHRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9zdGFydE9yU3RvcEF1dG9tYXRpY1RyYWNp
bmcuYmluZCh0aGlzKSkKKyAgICAgICAgdGhpcy5fc3RhcnRPclN0b3BBdXRvbWF0aWNUcmFjaW5n
KCk7CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKKyAgICAvLyBJdCdzIHN0aWxsIHBvc3NpYmxl
IHRvIHNldCB0aGlzIGZsYWcgb24gSW5zcGVjdG9yQmFja2VuZCB0byBqdXN0CisgICAgLy8gZHVt
cCBwcm90b2NvbCB0cmFmZmljIGFzIGl0IGhhcHBlbnMuIEZvciBtb3JlIGNvbXBsZXggdXNlcyBv
ZgorICAgIC8vIHByb3RvY29sIGRhdGEsIGluc3RhbGwgYSBzdWJjbGFzcyBvZiBXZWJJbnNwZWN0
b3IuUHJvdG9jb2xUcmFjZXIuCisgICAgc2V0IGR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2Vz
KHZhbHVlKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGljaXRseSBjYXVzZSBhdXRvbWF0aWMgbG9n
Z2luZyB0byBzdGFydCBpZiBpdCdzIGFsbG93ZWQuCisgICAgICAgIGxldCBzZXR0aW5nID0gV2Vi
SW5zcGVjdG9yLmF1dG9Mb2dQcm90b2NvbE1lc3NhZ2VzU2V0dGluZzsKKyAgICAgICAgc2V0dGlu
Zy52YWx1ZSA9IHZhbHVlOworCisgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNlciAhPT0gdGhp
cy5fYXV0b21hdGljVHJhY2VyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0
aGlzLmFjdGl2ZVRyYWNlcikKKyAgICAgICAgICAgIHRoaXMuYWN0aXZlVHJhY2VyLmR1bXBNZXNz
YWdlc1RvQ29uc29sZSA9IHZhbHVlOworICAgIH0KKworICAgIGdldCBkdW1wSW5zcGVjdG9yUHJv
dG9jb2xNZXNzYWdlcygpCisgICAgeworICAgICAgICByZXR1cm4gISF0aGlzLl9hdXRvbWF0aWNU
cmFjZXI7CisgICAgfQorCisgICAgc2V0IGR1bXBJbnNwZWN0b3JUaW1lU3RhdHModmFsdWUpCisg
ICAgeworICAgICAgICBpZiAoIXRoaXMuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMpCisg
ICAgICAgICAgICB0aGlzLmR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzID0gdHJ1ZTsKKwor
ICAgICAgICBpZiAodGhpcy5hY3RpdmVUcmFjZXIgIT09IHRoaXMuX2F1dG9tYXRpY1RyYWNlcikK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGhpcy5hY3RpdmVUcmFjZXIpCisg
ICAgICAgICAgICB0aGlzLmFjdGl2ZVRyYWNlci5kdW1wVGltaW5nRGF0YVRvQ29uc29sZSA9IHZh
bHVlOworICAgIH0KKworICAgIGdldCBkdW1wSW5zcGVjdG9yVGltZVN0YXRzKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9kdW1wSW5zcGVjdG9yVGltZVN0YXRzOworICAgIH0KKworICAg
IHNldCBhY3RpdmVUcmFjZXIodHJhY2VyKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
IXRyYWNlciB8fCB0cmFjZXIgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvdG9jb2xUcmFjZXIp
OworCisgICAgICAgIC8vIEJhaWwgZWFybHkgaWYgbm8gc3RhdGUgY2hhbmdlIGlzIHRvIGJlIG1h
ZGUuCisgICAgICAgIGlmICghdHJhY2VyICYmICF0aGlzLl9hY3RpdmVUcmFjZXIpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRyYWNlciA9PT0gdGhpcy5fYWN0aXZlVHJhY2Vy
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIERvbid0IGFsbG93IGFuIGF1dG9t
YXRpYyB0cmFjZXIgdG8gZGlzbG9kZ2UgYSBjdXN0b20gdHJhY2VyLgorICAgICAgICBpZiAodGhp
cy5fYWN0aXZlVHJhY2VyICYmIHRyYWNlciA9PT0gdGhpcy5fYXV0b21hdGljVHJhY2VyKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNlcikKKyAgICAg
ICAgICAgIHRoaXMuYWN0aXZlVHJhY2VyLmxvZ0ZpbmlzaGVkKCk7CisKKyAgICAgICAgaWYgKHRo
aXMuX2FjdGl2ZVRyYWNlciA9PT0gdGhpcy5fYXV0b21hdGljVHJhY2VyKQorICAgICAgICAgICAg
dGhpcy5fYXV0b21hdGljVHJhY2VyID0gbnVsbDsKKworICAgICAgICB0aGlzLl9hY3RpdmVUcmFj
ZXIgPSB0cmFjZXI7CisgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNlcikKKyAgICAgICAgICAg
IHRoaXMuYWN0aXZlVHJhY2VyLmxvZ1N0YXJ0ZWQoKTsKKyAgICAgICAgLy8gSWYgdGhlIGN1c3Rv
bSB0cmFjZXIgd2FzIHJlbW92ZWQgYW5kIGF1dG9tYXRpYyB0cmFjaW5nIGlzIGVuYWJsZWQsCisg
ICAgICAgIC8vIHRoZW4gY3JlYXRlIGEgbmV3IGF1dG9tYXRpYyB0cmFjZXIgYW5kIGluc3RhbGwg
aXQgaW4gaXRzIHBsYWNlLgorICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9zdGFydE9y
U3RvcEF1dG9tYXRpY1RyYWNpbmcoKTsKKyAgICB9CisKKyAgICBnZXQgYWN0aXZlVHJhY2VyKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVUcmFjZXIgfHwgbnVsbDsKKyAgICB9
CisKICAgICByZWdpc3RlckNvbW1hbmQocXVhbGlmaWVkTmFtZSwgY2FsbFNpZ25hdHVyZSwgcmVw
bHlTaWduYXR1cmUpCiAgICAgewogICAgICAgICB2YXIgW2RvbWFpbk5hbWUsIGNvbW1hbmROYW1l
XSA9IHF1YWxpZmllZE5hbWUuc3BsaXQoIi4iKTsKQEAgLTc4LDEwICsxNTIsNyBAQCBJbnNwZWN0
b3JCYWNrZW5kQ2xhc3MgPSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MKIAogICAgIGRpc3Bh
dGNoKG1lc3NhZ2UpCiAgICAgewotICAgICAgICBpZiAodGhpcy5kdW1wSW5zcGVjdG9yUHJvdG9j
b2xNZXNzYWdlcykKLSAgICAgICAgICAgIHRoaXMuX2xvZygiYmFja2VuZDogIiArICgodHlwZW9m
IG1lc3NhZ2UgPT09ICJzdHJpbmciKSA/IG1lc3NhZ2UgOiBKU09OLnN0cmluZ2lmeShtZXNzYWdl
KSkpOwotCi0gICAgICAgIHZhciBtZXNzYWdlT2JqZWN0ID0gKHR5cGVvZiBtZXNzYWdlID09PSAi
c3RyaW5nIikgPyBKU09OLnBhcnNlKG1lc3NhZ2UpIDogbWVzc2FnZTsKKyAgICAgICAgbGV0IG1l
c3NhZ2VPYmplY3QgPSAodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciKSA/IEpTT04ucGFyc2Uo
bWVzc2FnZSkgOiBtZXNzYWdlOwogCiAgICAgICAgIGlmICgiaWQiIGluIG1lc3NhZ2VPYmplY3Qp
CiAgICAgICAgICAgICB0aGlzLl9kaXNwYXRjaFJlc3BvbnNlKG1lc3NhZ2VPYmplY3QpOwpAQCAt
MTEzLDYgKzE4NCwyOCBAQCBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MgPSBjbGFzcyBJbnNwZWN0b3JC
YWNrZW5kQ2xhc3MKIAogICAgIC8vIFByaXZhdGUKIAorICAgIF9zdGFydE9yU3RvcEF1dG9tYXRp
Y1RyYWNpbmcoKQorICAgIHsKKyAgICAgICAgbGV0IHNldHRpbmcgPSBXZWJJbnNwZWN0b3IuYXV0
b0xvZ1Byb3RvY29sTWVzc2FnZXNTZXR0aW5nOworCisgICAgICAgIC8vIEJhaWwgaWYgdGhlcmUg
aXMgbm8gc3RhdGUgdHJhbnNpdGlvbiB0byBiZSBtYWRlLgorICAgICAgICBpZiAoIShzZXR0aW5n
LnZhbHVlIF4gISF0aGlzLmFjdGl2ZVRyYWNlcikpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgKCFzZXR0aW5nLnZhbHVlKSB7CisgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVU
cmFjZXIgPT09IHRoaXMuX2F1dG9tYXRpY1RyYWNlcikKKyAgICAgICAgICAgICAgICB0aGlzLmFj
dGl2ZVRyYWNlciA9IG51bGw7CisKKyAgICAgICAgICAgIHRoaXMuX2F1dG9tYXRpY1RyYWNlciA9
IG51bGw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLl9hdXRvbWF0aWNUcmFj
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkxvZ2dpbmdQcm90b2NvbFRyYWNlcjsKKyAgICAgICAgICAg
IHRoaXMuX2F1dG9tYXRpY1RyYWNlci5kdW1wTWVzc2FnZXNUb0NvbnNvbGUgPSB0aGlzLmR1bXBJ
bnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzOworICAgICAgICAgICAgdGhpcy5fYXV0b21hdGljVHJh
Y2VyLmR1bXBUaW1pbmdEYXRhVG9Db25zb2xlID0gdGhpcy5kdW1wVGltaW5nRGF0YVRvQ29uc29s
ZTsKKyAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBiZSBpZ25vcmVkIGlmIGEgY3VzdG9tIHRyYWNl
ciBpcyBpbnN0YWxsZWQuCisgICAgICAgICAgICB0aGlzLmFjdGl2ZVRyYWNlciA9IHRoaXMuX2F1
dG9tYXRpY1RyYWNlcjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIF9hZ2VudEZvckRvbWFpbihk
b21haW5OYW1lKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2FnZW50c1tkb21haW5OYW1lXSkK
QEAgLTEzNyw3ICsyMzAsNyBAQCBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MgPSBjbGFzcyBJbnNwZWN0
b3JCYWNrZW5kQ2xhc3MKIAogICAgICAgICBsZXQgcmVzcG9uc2VEYXRhID0ge2NvbW1hbmQsIGNh
bGxiYWNrfTsKIAotICAgICAgICBpZiAodGhpcy5kdW1wSW5zcGVjdG9yVGltZVN0YXRzKQorICAg
ICAgICBpZiAodGhpcy5hY3RpdmVUcmFjZXIpCiAgICAgICAgICAgICByZXNwb25zZURhdGEuc2Vu
ZFJlcXVlc3RUaW1lc3RhbXAgPSB0aW1lc3RhbXAoKTsKIAogICAgICAgICB0aGlzLl9wZW5kaW5n
UmVzcG9uc2VzLnNldChzZXF1ZW5jZUlkLCByZXNwb25zZURhdGEpOwpAQCAtMTU4LDcgKzI1MSw3
IEBAIEluc3BlY3RvckJhY2tlbmRDbGFzcyA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDbGFzcwog
CiAgICAgICAgIGxldCByZXNwb25zZURhdGEgPSB7Y29tbWFuZH07CiAKLSAgICAgICAgaWYgKHRo
aXMuZHVtcEluc3BlY3RvclRpbWVTdGF0cykKKyAgICAgICAgaWYgKHRoaXMuYWN0aXZlVHJhY2Vy
KQogICAgICAgICAgICAgcmVzcG9uc2VEYXRhLnNlbmRSZXF1ZXN0VGltZXN0YW1wID0gdGltZXN0
YW1wKCk7CiAKICAgICAgICAgbGV0IHJlc3BvbnNlUHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0
aW9uKHJlc29sdmUsIHJlamVjdCkgewpAQCAtMTc0LDggKzI2Nyw4IEBAIEluc3BlY3RvckJhY2tl
bmRDbGFzcyA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDbGFzcwogICAgIF9zZW5kTWVzc2FnZVRv
QmFja2VuZChtZXNzYWdlT2JqZWN0KQogICAgIHsKICAgICAgICAgbGV0IHN0cmluZ2lmaWVkTWVz
c2FnZSA9IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VPYmplY3QpOwotICAgICAgICBpZiAodGhpcy5k
dW1wSW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcykKLSAgICAgICAgICAgIHRoaXMuX2xvZygiZnJv
bnRlbmQ6ICIgKyBzdHJpbmdpZmllZE1lc3NhZ2UpOworICAgICAgICBpZiAodGhpcy5hY3RpdmVU
cmFjZXIpCisgICAgICAgICAgICB0aGlzLmFjdGl2ZVRyYWNlci5sb2dGcm9udGVuZFJlcXVlc3Qo
c3RyaW5naWZpZWRNZXNzYWdlKTsKIAogICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2Vu
ZE1lc3NhZ2VUb0JhY2tlbmQoc3RyaW5naWZpZWRNZXNzYWdlKTsKICAgICB9CkBAIC0xOTUsOSAr
Mjg4LDExIEBAIEluc3BlY3RvckJhY2tlbmRDbGFzcyA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRD
bGFzcwogICAgICAgICBsZXQgcmVzcG9uc2VEYXRhID0gdGhpcy5fcGVuZGluZ1Jlc3BvbnNlcy50
YWtlKHNlcXVlbmNlSWQpOwogICAgICAgICBsZXQge2NvbW1hbmQsIGNhbGxiYWNrLCBwcm9taXNl
fSA9IHJlc3BvbnNlRGF0YTsKIAotICAgICAgICB2YXIgcHJvY2Vzc2luZ1N0YXJ0VGltZXN0YW1w
OwotICAgICAgICBpZiAodGhpcy5kdW1wSW5zcGVjdG9yVGltZVN0YXRzKQorICAgICAgICBsZXQg
cHJvY2Vzc2luZ1N0YXJ0VGltZXN0YW1wOworICAgICAgICBpZiAodGhpcy5hY3RpdmVUcmFjZXIp
IHsKICAgICAgICAgICAgIHByb2Nlc3NpbmdTdGFydFRpbWVzdGFtcCA9IHRpbWVzdGFtcCgpOwor
ICAgICAgICAgICAgdGhpcy5hY3RpdmVUcmFjZXIubG9nV2lsbEhhbmRsZVJlc3BvbnNlKEpTT04u
c3RyaW5naWZ5KG1lc3NhZ2VPYmplY3QpKTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICh0eXBl
b2YgY2FsbGJhY2sgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICB0aGlzLl9kaXNwYXRjaFJl
c3BvbnNlVG9DYWxsYmFjayhjb21tYW5kLCBtZXNzYWdlT2JqZWN0LCBjYWxsYmFjayk7CkBAIC0y
MDYsMTMgKzMwMSwxMCBAQCBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MgPSBjbGFzcyBJbnNwZWN0b3JC
YWNrZW5kQ2xhc3MKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29uc29sZS5lcnJvcigiUmVj
ZWl2ZWQgYSBjb21tYW5kIHJlc3BvbnNlIHdpdGhvdXQgYSBjb3JyZXNwb25kaW5nIGNhbGxiYWNr
IG9yIHByb21pc2UuIiwgbWVzc2FnZU9iamVjdCwgY29tbWFuZCk7CiAKLSAgICAgICAgbGV0IHBy
b2Nlc3NpbmdEdXJhdGlvbiA9ICh0aW1lc3RhbXAoKSAtIHByb2Nlc3NpbmdTdGFydFRpbWVzdGFt
cCkudG9GaXhlZCgzKTsKLSAgICAgICAgaWYgKHRoaXMud2FybkZvckxvbmdNZXNzYWdlSGFuZGxp
bmcgJiYgcHJvY2Vzc2luZ0R1cmF0aW9uID4gdGhpcy5sb25nTWVzc2FnZUhhbmRsaW5nVGhyZXNo
b2xkKQotICAgICAgICAgICAgY29uc29sZS53YXJuKGBJbnNwZWN0b3JCYWNrZW5kOiB0b29rICR7
cHJvY2Vzc2luZ0R1cmF0aW9ufW1zIHRvIGhhbmRsZSByZXNwb25zZSBmb3IgY29tbWFuZDogJHtj
b21tYW5kLnF1YWxpZmllZE5hbWV9YCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuZHVtcEluc3BlY3Rv
clRpbWVTdGF0cykgewotICAgICAgICAgICAgbGV0IHJvdW5kVHJpcER1cmF0aW9uID0gKHByb2Nl
c3NpbmdTdGFydFRpbWVzdGFtcCAtIHJlc3BvbnNlRGF0YS5zZW5kUmVxdWVzdFRpbWVzdGFtcCku
dG9GaXhlZCgzKTsKLSAgICAgICAgICAgIGNvbnNvbGUubG9nKGB0aW1lLXN0YXRzOiBIYW5kbGlu
ZzogJHtwcm9jZXNzaW5nRHVyYXRpb259bXM7IFJUVDogJHtyb3VuZFRyaXBEdXJhdGlvbn1tczsg
KGNvbW1hbmQgJHtjb21tYW5kLnF1YWxpZmllZE5hbWV9KWApOworICAgICAgICBpZiAodGhpcy5h
Y3RpdmVUcmFjZXIpIHsKKyAgICAgICAgICAgIGxldCBwcm9jZXNzaW5nVGltZSA9ICh0aW1lc3Rh
bXAoKSAtIHByb2Nlc3NpbmdTdGFydFRpbWVzdGFtcCkudG9GaXhlZCgzKTsKKyAgICAgICAgICAg
IGxldCByb3VuZFRyaXBUaW1lID0gKHByb2Nlc3NpbmdTdGFydFRpbWVzdGFtcCAtIHJlc3BvbnNl
RGF0YS5zZW5kUmVxdWVzdFRpbWVzdGFtcCkudG9GaXhlZCgzKTsKKyAgICAgICAgICAgIHRoaXMu
YWN0aXZlVHJhY2VyLmxvZ0RpZEhhbmRsZVJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VP
YmplY3QpLCB7cnR0OiByb3VuZFRyaXBUaW1lLCBkaXNwYXRjaDogcHJvY2Vzc2luZ1RpbWV9KTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmICh0aGlzLl9kZWZlcnJlZFNjcmlwdHMubGVuZ3RoICYm
ICF0aGlzLl9wZW5kaW5nUmVzcG9uc2VzLnNpemUpCkBAIC0yNDcsNDggKzMzOSw0NyBAQCBJbnNw
ZWN0b3JCYWNrZW5kQ2xhc3MgPSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MKIAogICAgIF9k
aXNwYXRjaEV2ZW50KG1lc3NhZ2VPYmplY3QpCiAgICAgewotICAgICAgICB2YXIgcXVhbGlmaWVk
TmFtZSA9IG1lc3NhZ2VPYmplY3RbIm1ldGhvZCJdOwotICAgICAgICB2YXIgW2RvbWFpbk5hbWUs
IGV2ZW50TmFtZV0gPSBxdWFsaWZpZWROYW1lLnNwbGl0KCIuIik7CisgICAgICAgIGxldCBxdWFs
aWZpZWROYW1lID0gbWVzc2FnZU9iamVjdFsibWV0aG9kIl07CisgICAgICAgIGxldCBbZG9tYWlu
TmFtZSwgZXZlbnROYW1lXSA9IHF1YWxpZmllZE5hbWUuc3BsaXQoIi4iKTsKICAgICAgICAgaWYg
KCEoZG9tYWluTmFtZSBpbiB0aGlzLl9hZ2VudHMpKSB7CiAgICAgICAgICAgICBjb25zb2xlLmVy
cm9yKCJQcm90b2NvbCBFcnJvcjogQXR0ZW1wdGVkIHRvIGRpc3BhdGNoIG1ldGhvZCAnIiArIGV2
ZW50TmFtZSArICInIGZvciBub24tZXhpc3RpbmcgZG9tYWluICciICsgZG9tYWluTmFtZSArICIn
Iik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgYWdlbnQg
PSB0aGlzLl9hZ2VudEZvckRvbWFpbihkb21haW5OYW1lKTsKKyAgICAgICAgbGV0IGFnZW50ID0g
dGhpcy5fYWdlbnRGb3JEb21haW4oZG9tYWluTmFtZSk7CiAgICAgICAgIGlmICghYWdlbnQuYWN0
aXZlKSB7CiAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJQcm90b2NvbCBFcnJvcjogQXR0ZW1w
dGVkIHRvIGRpc3BhdGNoIG1ldGhvZCBmb3IgZG9tYWluICciICsgZG9tYWluTmFtZSArICInIHdo
aWNoIGV4aXN0cyBidXQgaXMgbm90IGFjdGl2ZS4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIHZhciBldmVudCA9IGFnZW50LmdldEV2ZW50KGV2ZW50TmFtZSk7
CisgICAgICAgIGxldCBldmVudCA9IGFnZW50LmdldEV2ZW50KGV2ZW50TmFtZSk7CiAgICAgICAg
IGlmICghZXZlbnQpIHsKICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlByb3RvY29sIEVycm9y
OiBBdHRlbXB0ZWQgdG8gZGlzcGF0Y2ggYW4gdW5zcGVjaWZpZWQgbWV0aG9kICciICsgcXVhbGlm
aWVkTmFtZSArICInIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICB2YXIgZXZlbnRBcmd1bWVudHMgPSBbXTsKLSAgICAgICAgaWYgKG1lc3NhZ2VPYmplY3RbInBh
cmFtcyJdKSB7Ci0gICAgICAgICAgICB2YXIgcGFyYW1ldGVyTmFtZXMgPSBldmVudC5wYXJhbWV0
ZXJOYW1lczsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1ldGVyTmFtZXMu
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgZXZlbnRBcmd1bWVudHMucHVzaChtZXNzYWdl
T2JqZWN0WyJwYXJhbXMiXVtwYXJhbWV0ZXJOYW1lc1tpXV0pOwotICAgICAgICB9CisgICAgICAg
IGxldCBldmVudEFyZ3VtZW50cyA9IFtdOworICAgICAgICBpZiAobWVzc2FnZU9iamVjdFsicGFy
YW1zIl0pCisgICAgICAgICAgICBldmVudEFyZ3VtZW50cyA9IGV2ZW50LnBhcmFtZXRlck5hbWVz
Lm1hcCgobmFtZSkgPT4gbWVzc2FnZU9iamVjdFsicGFyYW1zIl1bbmFtZV0pOwogCi0gICAgICAg
IHZhciBwcm9jZXNzaW5nU3RhcnRUaW1lc3RhbXA7Ci0gICAgICAgIGlmICh0aGlzLmR1bXBJbnNw
ZWN0b3JUaW1lU3RhdHMpCisgICAgICAgIGxldCBwcm9jZXNzaW5nU3RhcnRUaW1lc3RhbXA7Cisg
ICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNlcikgewogICAgICAgICAgICAgcHJvY2Vzc2luZ1N0
YXJ0VGltZXN0YW1wID0gdGltZXN0YW1wKCk7CisgICAgICAgICAgICB0aGlzLmFjdGl2ZVRyYWNl
ci5sb2dXaWxsSGFuZGxlRXZlbnQoSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCkpOworICAg
ICAgICB9CiAKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGFnZW50LmRpc3BhdGNoRXZlbnQo
ZXZlbnROYW1lLCBldmVudEFyZ3VtZW50cyk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAg
ICAgICAgIGNvbnNvbGUuZXJyb3IoIlVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiBpbnNwZWN0b3IgcGFn
ZSB3aGlsZSBoYW5kbGluZyBldmVudCAiICsgcXVhbGlmaWVkTmFtZSwgZSk7CisgICAgICAgICAg
ICBpZiAodGhpcy5hY3RpdmVUcmFjZXIpCisgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVUcmFj
ZXIubG9nRnJvbnRlbmRFeGNlcHRpb24oSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCksIGUp
OwogICAgICAgICB9CiAKLSAgICAgICAgbGV0IHByb2Nlc3NpbmdEdXJhdGlvbiA9ICh0aW1lc3Rh
bXAoKSAtIHByb2Nlc3NpbmdTdGFydFRpbWVzdGFtcCkudG9GaXhlZCgzKTsKLSAgICAgICAgaWYg
KHRoaXMud2FybkZvckxvbmdNZXNzYWdlSGFuZGxpbmcgJiYgcHJvY2Vzc2luZ0R1cmF0aW9uID4g
dGhpcy5sb25nTWVzc2FnZUhhbmRsaW5nVGhyZXNob2xkKQotICAgICAgICAgICAgY29uc29sZS53
YXJuKGBJbnNwZWN0b3JCYWNrZW5kOiB0b29rICR7cHJvY2Vzc2luZ0R1cmF0aW9ufW1zIHRvIGhh
bmRsZSBldmVudDogJHttZXNzYWdlT2JqZWN0Lm1ldGhvZH1gKTsKLQotICAgICAgICBpZiAodGhp
cy5kdW1wSW5zcGVjdG9yVGltZVN0YXRzKQotICAgICAgICAgICAgY29uc29sZS5sb2coYHRpbWUt
c3RhdHM6IEhhbmRsaW5nOiAke3Byb2Nlc3NpbmdEdXJhdGlvbn1tcyAoZXZlbnQgJHttZXNzYWdl
T2JqZWN0Lm1ldGhvZH0pYCk7CisgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNlcikgeworICAg
ICAgICAgICAgbGV0IHByb2Nlc3NpbmdUaW1lID0gKHRpbWVzdGFtcCgpIC0gcHJvY2Vzc2luZ1N0
YXJ0VGltZXN0YW1wKS50b0ZpeGVkKDMpOworICAgICAgICAgICAgdGhpcy5hY3RpdmVUcmFjZXIu
bG9nRGlkSGFuZGxlRXZlbnQoSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCksIHtkaXNwYXRj
aDogcHJvY2Vzc2luZ1RpbWV9KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIF9yZXBvcnRQcm90
b2NvbEVycm9yKG1lc3NhZ2VPYmplY3QpCkBAIC0zMDAsOSArMzkxLDkgQEAgSW5zcGVjdG9yQmFj
a2VuZENsYXNzID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENsYXNzCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLl9wZW5kaW5nUmVzcG9uc2VzLnNpemUgPT09IDApOwogCi0gICAg
ICAgIHZhciBzY3JpcHRzVG9SdW4gPSB0aGlzLl9kZWZlcnJlZFNjcmlwdHM7CisgICAgICAgIGxl
dCBzY3JpcHRzVG9SdW4gPSB0aGlzLl9kZWZlcnJlZFNjcmlwdHM7CiAgICAgICAgIHRoaXMuX2Rl
ZmVycmVkU2NyaXB0cyA9IFtdOwotICAgICAgICBmb3IgKHZhciBzY3JpcHQgb2Ygc2NyaXB0c1Rv
UnVuKQorICAgICAgICBmb3IgKGxldCBzY3JpcHQgb2Ygc2NyaXB0c1RvUnVuKQogICAgICAgICAg
ICAgc2NyaXB0LmNhbGwodGhpcyk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xvZ2dpbmdQcm90b2NvbFRyYWNlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xvZ2dpbmdQ
cm90b2NvbFRyYWNlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Zjlh
ZGI3MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL0xvZ2dpbmdQcm90b2NvbFRyYWNlci5qcwpAQCAtMCwwICsxLDEyNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK1dlYkluc3BlY3Rvci5Mb2dnaW5nUHJvdG9jb2xUcmFjZXIgPSBjbGFzcyBM
b2dnaW5nUHJvdG9jb2xUcmFjZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuUHJvdG9jb2xUcmFjZXIK
K3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAg
IHRoaXMuX2R1bXBNZXNzYWdlc1RvQ29uc29sZSA9IGZhbHNlOworICAgICAgICB0aGlzLl9kdW1w
VGltaW5nRGF0YVRvQ29uc29sZSA9IGZhbHNlOworICAgICAgICB0aGlzLl9sb2dUb0NvbnNvbGUg
PSB3aW5kb3cuSW5zcGVjdG9yVGVzdCA/IEluc3BlY3RvckZyb250ZW5kSG9zdC51bmJ1ZmZlcmVk
TG9nLmJpbmQoSW5zcGVjdG9yRnJvbnRlbmRIb3N0KSA6IGNvbnNvbGUubG9nLmJpbmQoY29uc29s
ZSk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBzZXQgZHVtcE1lc3NhZ2VzVG9Db25z
b2xlKHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5fZHVtcE1lc3NhZ2VzVG9Db25zb2xlID0g
ISF2YWx1ZTsKKyAgICB9CisKKyAgICBnZXQgZHVtcE1lc3NhZ2VzVG9Db25zb2xlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9kdW1wTWVzc2FnZXNUb0NvbnNvbGU7CisgICAgfQorCisg
ICAgc2V0IGR1bXBUaW1pbmdEYXRhVG9Db25zb2xlKHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhp
cy5fZHVtcFRpbWluZ0RhdGFUb0NvbnNvbGUgPSAhIXZhbHVlOworICAgIH0KKworICAgIGdldCBk
dW1wVGltaW5nRGF0YVRvQ29uc29sZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZHVt
cFRpbWluZ0RhdGFUb0NvbnNvbGU7CisgICAgfQorCisgICAgbG9nRnJvbnRlbmRFeGNlcHRpb24o
bWVzc2FnZSwgZXhjZXB0aW9uKQorICAgIHsKKyAgICAgICAgdGhpcy5fcHJvY2Vzc0VudHJ5KHt0
eXBlOiAiZXhjZXB0aW9uIiwgbWVzc2FnZSwgZXhjZXB0aW9ufSk7CisgICAgfQorCisgICAgbG9n
UHJvdG9jb2xFcnJvcihtZXNzYWdlLCBlcnJvcikKKyAgICB7CisgICAgICAgIHRoaXMuX3Byb2Nl
c3NFbnRyeSh7dHlwZTogImVycm9yIiwgbWVzc2FnZSwgZXJyb3J9KTsKKyAgICB9CisKKyAgICBs
b2dGcm9udGVuZFJlcXVlc3QobWVzc2FnZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHR5cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIiwgIk11c3Qgc3RyaW5naWZ5IG1lc3NhZ2VzIHRv
IGF2b2lkIGxlYWtpbmcgYWxsIEpTT04gcHJvdG9jb2wgbWVzc2FnZXMuIikKKworICAgICAgICB0
aGlzLl9wcm9jZXNzRW50cnkoe3R5cGU6ICJyZXF1ZXN0IiwgbWVzc2FnZX0pOworICAgIH0KKwor
ICAgIGxvZ1dpbGxIYW5kbGVSZXNwb25zZShtZXNzYWdlKQorICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciLCAiTXVzdCBzdHJpbmdpZnkgbWVz
c2FnZXMgdG8gYXZvaWQgbGVha2luZyBhbGwgSlNPTiBwcm90b2NvbCBtZXNzYWdlcy4iKQorCisg
ICAgICAgIGxldCBlbnRyeSA9IHt0eXBlOiAicmVzcG9uc2UiLCBtZXNzYWdlfTsKKyAgICAgICAg
dGhpcy5fcHJvY2Vzc0VudHJ5KGVudHJ5KTsKKyAgICB9CisKKyAgICBsb2dEaWRIYW5kbGVSZXNw
b25zZShtZXNzYWdlLCB0aW1pbmdzID0gbnVsbCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHR5cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIiwgIk11c3Qgc3RyaW5naWZ5IG1lc3NhZ2Vz
IHRvIGF2b2lkIGxlYWtpbmcgYWxsIEpTT04gcHJvdG9jb2wgbWVzc2FnZXMuIikKKworICAgICAg
ICBsZXQgZW50cnkgPSB7dHlwZTogInJlc3BvbnNlIiwgbWVzc2FnZX07CisgICAgICAgIGlmICh0
aW1pbmdzKQorICAgICAgICAgICAgZW50cnkudGltaW5ncyA9IE9iamVjdC5zaGFsbG93Q29weSh0
aW1pbmdzKTsKKworICAgICAgICB0aGlzLl9wcm9jZXNzRW50cnkoZW50cnkpOworICAgIH0KKwor
ICAgIGxvZ1dpbGxIYW5kbGVFdmVudChtZXNzYWdlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciLCAiTXVzdCBzdHJpbmdpZnkgbWVzc2Fn
ZXMgdG8gYXZvaWQgbGVha2luZyBhbGwgSlNPTiBwcm90b2NvbCBtZXNzYWdlcy4iKQorCisgICAg
ICAgIGxldCBlbnRyeSA9IHt0eXBlOiAiZXZlbnQiLCBtZXNzYWdlfTsKKyAgICAgICAgdGhpcy5f
cHJvY2Vzc0VudHJ5KGVudHJ5KTsKKyAgICB9CisKKyAgICBsb2dEaWRIYW5kbGVFdmVudChtZXNz
YWdlLCB0aW1pbmdzID0gbnVsbCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVv
ZiBtZXNzYWdlID09PSAic3RyaW5nIiwgIk11c3Qgc3RyaW5naWZ5IG1lc3NhZ2VzIHRvIGF2b2lk
IGxlYWtpbmcgYWxsIEpTT04gcHJvdG9jb2wgbWVzc2FnZXMuIikKKworICAgICAgICBsZXQgZW50
cnkgPSB7dHlwZTogImV2ZW50IiwgbWVzc2FnZX07CisgICAgICAgIGlmICh0aW1pbmdzKQorICAg
ICAgICAgICAgZW50cnkudGltaW5ncyA9IE9iamVjdC5zaGFsbG93Q29weSh0aW1pbmdzKTsKKwor
ICAgICAgICB0aGlzLl9wcm9jZXNzRW50cnkoZW50cnkpOworICAgIH0KKworICAgIF9wcm9jZXNz
RW50cnkoZW50cnkpCisgICAgeworICAgICAgICBpZiAodGhpcy5fZHVtcFRpbWluZ0RhdGFUb0Nv
bnNvbGUgJiYgZW50cnkudGltaW5ncykgeworICAgICAgICAgICAgaWYgKGVudHJ5LnRpbWluZ3Mu
cnR0ICYmIGVudHJ5LnRpbWluZ3MuZGlzcGF0Y2gpCisgICAgICAgICAgICAgICAgdGhpcy5fbG9n
VG9Db25zb2xlKGB0aW1lLXN0YXRzOiBIYW5kbGluZzogJHtlbnRyeS50aW1pbmdzLmRpc3BhdGNo
IHx8IE5hTn1tczsgUlRUOiAke2VudHJ5LnRpbWluZ3MucnR0fW1zYCk7CisgICAgICAgICAgICBl
bHNlIGlmIChlbnRyeS50aW1pbmdzLmRpc3BhdGNoKQorICAgICAgICAgICAgICAgIHRoaXMuX2xv
Z1RvQ29uc29sZShgdGltZS1zdGF0czogSGFuZGxpbmc6ICR7ZW50cnkudGltaW5ncy5kaXNwYXRj
aCB8fCBOYU59bXNgKTsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9kdW1wTWVzc2FnZXNUb0Nv
bnNvbGUpCisgICAgICAgICAgICB0aGlzLl9sb2dUb0NvbnNvbGUoYCR7ZW50cnkudHlwZX06ICR7
ZW50cnkubWVzc2FnZX1gKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUHJvdG9jb2xUcmFjZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Qcm90b2NvbFRyYWNlci5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDE2YzIxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUHJvdG9j
b2xUcmFjZXIuanMKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5Q
cm90b2NvbFRyYWNlciA9IGNsYXNzIFByb3RvY29sVHJhY2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAoreworICAgIC8vIFB1YmxpYworCisgICAgbG9nU3RhcnRlZCgpCisgICAgeworICAg
ICAgICAvLyBUbyBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAgfQorCisgICAgbG9n
RnJvbnRlbmRFeGNlcHRpb24obWVzc2FnZSwgZXhjZXB0aW9uKQorICAgIHsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciLCAiTXVzdCBzdHJpbmdpZnkg
bWVzc2FnZXMgdG8gYXZvaWQgbGVha2luZyBhbGwgSlNPTiBwcm90b2NvbCBtZXNzYWdlcy4iKQor
CisgICAgICAgIC8vIFRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KKyAgICB9CisKKyAg
ICBsb2dQcm90b2NvbEVycm9yKG1lc3NhZ2UsIGVycm9yKQorICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciLCAiTXVzdCBzdHJpbmdpZnkgbWVz
c2FnZXMgdG8gYXZvaWQgbGVha2luZyBhbGwgSlNPTiBwcm90b2NvbCBtZXNzYWdlcy4iKQorCisg
ICAgICAgIC8vIFRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KKyAgICB9CisKKyAgICBs
b2dGcm9udGVuZFJlcXVlc3QobWVzc2FnZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHR5cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIiwgIk11c3Qgc3RyaW5naWZ5IG1lc3NhZ2VzIHRv
IGF2b2lkIGxlYWtpbmcgYWxsIEpTT04gcHJvdG9jb2wgbWVzc2FnZXMuIikKKworICAgICAgICAv
LyBUbyBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAgfQorCisgICAgbG9nV2lsbEhh
bmRsZVJlc3BvbnNlKG1lc3NhZ2UpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBl
b2YgbWVzc2FnZSA9PT0gInN0cmluZyIsICJNdXN0IHN0cmluZ2lmeSBtZXNzYWdlcyB0byBhdm9p
ZCBsZWFraW5nIGFsbCBKU09OIHByb3RvY29sIG1lc3NhZ2VzLiIpCisKKyAgICAgICAgLy8gVG8g
YmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgorICAgIH0KKworICAgIGxvZ0RpZEhhbmRsZVJl
c3BvbnNlKG1lc3NhZ2UsIHRpbWluZ3MgPSBudWxsKQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciLCAiTXVzdCBzdHJpbmdpZnkgbWVzc2Fn
ZXMgdG8gYXZvaWQgbGVha2luZyBhbGwgSlNPTiBwcm90b2NvbCBtZXNzYWdlcy4iKQorCisgICAg
ICAgIC8vIFRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KKyAgICB9CisKKyAgICBsb2dX
aWxsSGFuZGxlRXZlbnQobWVzc2FnZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5
cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIiwgIk11c3Qgc3RyaW5naWZ5IG1lc3NhZ2VzIHRvIGF2
b2lkIGxlYWtpbmcgYWxsIEpTT04gcHJvdG9jb2wgbWVzc2FnZXMuIikKKworICAgICAgICAvLyBU
byBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAgfQorCisgICAgbG9nRGlkSGFuZGxl
RXZlbnQobWVzc2FnZSwgdGltaW5ncyA9IG51bGwpCisgICAgeworICAgICAgICBjb25zb2xlLmFz
c2VydCh0eXBlb2YgbWVzc2FnZSA9PT0gInN0cmluZyIsICJNdXN0IHN0cmluZ2lmeSBtZXNzYWdl
cyB0byBhdm9pZCBsZWFraW5nIGFsbCBKU09OIHByb3RvY29sIG1lc3NhZ2VzLiIpCisKKyAgICAg
ICAgLy8gVG8gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgorICAgIH0KKworICAgIGxvZ0Zp
bmlzaGVkKCkKKyAgICB7CisgICAgICAgIC8vIFRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nl
cy4KKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVz
dC5odG1sCmluZGV4IGJlZGYzMDIuLmUxYzM5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTQ5LDYgKzQ5LDEwIEBACiAgICAgPHNjcmlw
dCBzcmM9IkJhc2UvRXZlbnRMaXN0ZW5lclNldC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IkJhc2UvVVJMVXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFz
ZS9VdGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJCYXNlL1NldHRpbmcu
anMiPjwvc2NyaXB0PgorCisgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1Byb3RvY29sVHJhY2Vy
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvTG9nZ2luZ1Byb3RvY29s
VHJhY2VyLmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9JbnNwZWN0
b3JCYWNrZW5kLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvSW5zcGVj
dG9yRnJvbnRlbmRBUEkuanMiPjwvc2NyaXB0PgpAQCAtMTMwLDcgKzEzNCw2IEBACiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9TY3JpcHQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9TY3JpcHRUaW1lbGluZVJlY29yZC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9TZXR0aW5nLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Nv
dXJjZUNvZGVMb2NhdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9T
b3VyY2VDb2RlUmV2aXNpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
U291cmNlQ29kZVRpbWVsaW5lLmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267043</attachid>
            <date>2015-12-09 13:46:15 -0800</date>
            <delta_ts>2015-12-17 15:02:04 -0800</delta_ts>
            <desc>For Landing</desc>
            <filename>bug-151635-20151209134544.patch</filename>
            <type>text/plain</type>
            <size>36359</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAz
ODVjNjFkMDhiMzVmNjA1NjU1N2UyZDQ2Y2EzMzliZmI5NzM4YTM1Li5lOGRlOGIzNjQzMWRkZmVk
OTBkYzI4ZDllMDhlYTkyOTRhYzIyMzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw5OCBAQAogMjAxNS0xMi0wOSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBjb250cm9sIHdoZXRoZXIgdG8gY29sbGVjdCBhbmQgZHVt
cCBwcm90b2NvbCBtZXNzYWdlcyB1c2luZyBhIFdlYkluc3BlY3Rvci5TZXR0aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE2MzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgV2hlbiBjbG9zaW5nIGFu
ZCByZW9wZW5pbmcgdGhlIGluc3BlY3RvciwgdGhlIHNldHRpbmcgZm9yIHdoZXRoZXIKKyAgICAg
ICAgdG8gZHVtcCBwcm90b2NvbCBtZXNzYWdlcyBzaG91bGQgYmUgcGVyc2lzdGVkLiBPdGhlcndp
c2UsIGVuYWJsaW5nCisgICAgICAgIGR1bXBpbmcgZnJvbSB0aGUgZGVidWctb25seSBVSSB3aWxs
IG1pc3MgdGhlIGluaXRpYWwgZmxvb2Qgb2YKKyAgICAgICAgbWVzc2FnZXMgdGhhdCBhcmUgcHJv
Y2Vzc2VkIHdoZW4gdGhlIEluc3BlY3RvciBsb2FkcyBpbml0aWFsIGRhdGEuCisKKyAgICAgICAg
VG8gc3VwcG9ydCBhIHBlcnNpc3RlbnQgc2V0dGluZywgYW5kIGJ1aWxkIHNvbWUgaW5mcmFzdHJ1
Y3R1cmUgZm9yCisgICAgICAgIG1vcmUgYWR2YW5jZWQgdXNlcyBvZiBjb2xsZWN0ZWQgcHJvdG9j
b2wgbWVzc2FnZXMsIHRoaXMgcGF0Y2ggYWRkcworICAgICAgICBhIG5ldyBvYmplY3QgdG8gdHJh
Y2UgcHJvdG9jb2wgZXZlbnRzLiBJdCBnZXRzIGNhbGxiYWNrcyBmb3IgZWFjaAorICAgICAgICBh
bmQgaW1wbGVtZW50cyB0aGUgY29uc29sZS1kdW1waW5nIGZ1bmN0aW9uYWxpdHkgcHJldmlvdXNs
eSBiYWtlZCBpbgorICAgICAgICB0byBJbnNwZWN0b3JCYWNrZW5kLgorCisgICAgICAgIEluIGZv
bGxvdy11cCBwYXRjaGVzLCBvdGhlciBwcm90b2NvbCB0cmFjZXJzIHdpbGwgYmUgYWRkZWQgdG8g
c2F2ZQorICAgICAgICBwcm90b2NvbCBkYXRhIHRvIGRpc2ssIG1hcnNoYWxsIGl0IHRvIGEgaGln
aGVyIGluc3BlY3Rpb24gbGV2ZWwsCisgICAgICAgIG9yIHByb3ZpZGUgbW9yZSBmaW5lLWdyYWlu
ZWQgY29udHJvbCBvdmVyIHdoYXQgaXMgbG9nZ2VkLgorCisgICAgICAgIFRoaXMgY2hhbmdlIG1v
dmVzIFNldHRpbmcuanMgaW50byB0aGUgQmFzZS8gZGlyZWN0b3J5LAorICAgICAgICBzaW5jZSBp
dCBpcyB1c2VkIGJ5IFZpZXdzLCBNb2RlbHMsIGFuZCBub3cgUHJvdG9jb2wgY2xhc3Nlcy4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NldHRpbmcuanMuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGlu
Zy5wcm90b3R5cGUuZ2V0IG5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmcucHJv
dG90eXBlLmdldCB2YWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZy5wcm90b3R5
cGUuc2V0IHZhbHVlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanM6CisgICAgICAg
IChJbnNwZWN0b3JCYWNrZW5kQ2xhc3MpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNz
LnByb3RvdHlwZS5zZXQgZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMpOgorICAgICAgICAo
SW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZS5nZXQgZHVtcEluc3BlY3RvclByb3RvY29s
TWVzc2FnZXMpOgorCisgICAgICAgICAgICBXZSBzdGlsbCB3YW50IHRvIHN1cHBvcnQgdGhlIGxl
Z2FjeSB3YXkgdG8gZW5hYmxlIGR1bXBpbmc6CisgICAgICAgICAgICBgSW5zcGVjdG9yQmFja2Vu
ZC5kdW1wSW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcyA9IHRydWVgLiBUaGlzCisgICAgICAgICAg
ICBpcyBiZWNhdXNlIHNvbWUgdGVzdHMgYWx3YXlzIHVzZSBpdCwgYW5kIGl0J3MgZWFzaWVyIHRv
IHNldCB0aGlzCisgICAgICAgICAgICBmbGFnIGluIGEgY3VzdG9tIEJvb3RzdHJhcC5qcyBmaWxl
IHRoYW4gdG8gY29uZmlndXJlIHRoZSBTZXR0aW5nLgorCisgICAgICAgIChJbnNwZWN0b3JCYWNr
ZW5kQ2xhc3MucHJvdG90eXBlLnNldCBkdW1wSW5zcGVjdG9yVGltZVN0YXRzKToKKyAgICAgICAg
KEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUuZ2V0IGR1bXBJbnNwZWN0b3JUaW1lU3Rh
dHMpOgorCisgICAgICAgICAgICBXZSBzdGlsbCB3YW50IHRvIHN1cHBvcnQgdGhlIGxlZ2FjeSB3
YXkgdG8gZW5hYmxlIGR1bXBpbmc6CisgICAgICAgICAgICBgSW5zcGVjdG9yQmFja2VuZC5kdW1w
SW5zcGVjdG9yVGltZVN0YXRzID0gdHJ1ZWAuIFRoaXMgaXMKKyAgICAgICAgICAgIGJlY2F1c2Ug
TWVzc2FnZURpc3BhdGNoZXIgY2hlY2tzIHRoaXMgZmxhZyBmb3IgaXRzIGxvZ2dpbmcuCisKKyAg
ICAgICAgKEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUuc2V0IGFjdGl2ZVRyYWNlcik6
CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLmdldCBhY3RpdmVUcmFj
ZXIpOgorCisgICAgICAgICAgICBTZXQgdGhlIGFjdGl2ZSB0cmFjZXIsIGZpbmFsaXppbmcgYW5k
IHJlbW92aW5nIGFueSBhY3RpdmUgdHJhY2VyCisgICAgICAgICAgICBpZiBvbmUgZXhpc3RzLiBJ
ZiByZW1vdmluZyBhIGN1c3RvbSB0cmFjZXIgKHNldHRpbmcgdG8gbnVsbCksIHRoZW4KKyAgICAg
ICAgICAgIHJlLXN5bmMgYWN0aXZlVHJhY2VyIHdpdGggdGhlIGF1dG9tYXRpYyB0cmFjaW5nIFNl
dHRpbmcuCisKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUuZGlzcGF0
Y2gpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZS5fc3RhcnRPclN0
b3BBdXRvbWF0aWNUcmFjaW5nKToKKworICAgICAgICAgICAgU3luYyB0aGUgU2V0dGluZyB3aXRo
IGFjdGl2ZVRyYWNlci4gSWYgYW4gY3VzdG9tIHRyYWNlciBpcyBhY3RpdmUsCisgICAgICAgICAg
ICBkb24ndCByZXBsYWNlIGl0IHdpdGggdGhlIGF1dG9tYXRpYyBsb2dnaW5nIHRyYWNlci4KKwor
ICAgICAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZS5fc2VuZENvbW1hbmRUb0Jh
Y2tlbmRXaXRoQ2FsbGJhY2spOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3Rv
dHlwZS5fc2VuZENvbW1hbmRUb0JhY2tlbmRFeHBlY3RpbmdQcm9taXNlKToKKyAgICAgICAgKElu
c3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUuX3NlbmRNZXNzYWdlVG9CYWNrZW5kKToKKyAg
ICAgICAgKEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUuX2Rpc3BhdGNoUmVzcG9uc2Up
OgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZS5fZGlzcGF0Y2hFdmVu
dCk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLl9mbHVzaFBlbmRp
bmdTY3JpcHRzKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0xvZ2dpbmdQcm90
b2NvbFRyYWNlci5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuTG9nZ2luZ1Byb3Rv
Y29sVHJhY2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Mb2dnaW5nUHJvdG9jb2xUcmFjZXIu
cHJvdG90eXBlLnNldCBkdW1wTWVzc2FnZXNUb0NvbnNvbGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkxvZ2dpbmdQcm90b2NvbFRyYWNlci5wcm90b3R5cGUuZ2V0IGR1bXBNZXNzYWdlc1RvQ29u
c29sZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTG9nZ2luZ1Byb3RvY29sVHJhY2VyLnByb3Rv
dHlwZS5zZXQgZHVtcFRpbWluZ0RhdGFUb0NvbnNvbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkxvZ2dpbmdQcm90b2NvbFRyYWNlci5wcm90b3R5cGUuZ2V0IGR1bXBUaW1pbmdEYXRhVG9Db25z
b2xlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Mb2dnaW5nUHJvdG9jb2xUcmFjZXIucHJvdG90
eXBlLmxvZ0Zyb250ZW5kRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Mb2dnaW5n
UHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLmxvZ1Byb3RvY29sRXJyb3IpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkxvZ2dpbmdQcm90b2NvbFRyYWNlci5wcm90b3R5cGUubG9nRnJvbnRlbmRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Mb2dnaW5nUHJvdG9jb2xUcmFjZXIucHJvdG90
eXBlLmxvZ1dpbGxIYW5kbGVSZXNwb25zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTG9nZ2lu
Z1Byb3RvY29sVHJhY2VyLnByb3RvdHlwZS5sb2dEaWRIYW5kbGVSZXNwb25zZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTG9nZ2luZ1Byb3RvY29sVHJhY2VyLnByb3RvdHlwZS5sb2dXaWxsSGFu
ZGxlRXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxvZ2dpbmdQcm90b2NvbFRyYWNlci5w
cm90b3R5cGUubG9nRGlkSGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxvZ2dp
bmdQcm90b2NvbFRyYWNlci5wcm90b3R5cGUuX3Byb2Nlc3NFbnRyeSk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9Qcm90b2NvbFRyYWNlci5qczogQWRkZWQuCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLmxvZ1N0YXJ0ZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByb3RvY29sVHJhY2VyLnByb3RvdHlwZS5sb2dGcm9udGVuZEV4Y2Vw
dGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLmxv
Z1Byb3RvY29sRXJyb3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb3RvY29sVHJhY2VyLnBy
b3RvdHlwZS5sb2dGcm9udGVuZFJlcXVlc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb3Rv
Y29sVHJhY2VyLnByb3RvdHlwZS5sb2dXaWxsSGFuZGxlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb3RvY29sVHJhY2VyLnByb3RvdHlwZS5sb2dEaWRIYW5kbGVSZXNwb25zZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvdG9jb2xUcmFjZXIucHJvdG90eXBlLmxvZ1dpbGxI
YW5kbGVFdmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvdG9jb2xUcmFjZXIucHJvdG90
eXBlLmxvZ0RpZEhhbmRsZUV2ZW50KTogICAgICAgIChXZWJJbnNwZWN0b3IuUHJvdG9jb2xUcmFj
ZXIucHJvdG90eXBlLmxvZ0ZpbmlzaGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm90b2Nv
bFRyYWNlcik6CisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0Lmh0bWw6CisKKzIwMTUtMTIt
MDkgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogem9vbSB3aXRoIEN0cmwgKy8tIGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkgd2hlbiBpbnNwZWN0
b3IgaXMgZG9ja2VkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTIwNzYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9TZXR0aW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9TZXR0aW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmOWMwODE4ZGU0MTYxNGRkYjU2OTViMWY5
OTllYTMxOGRkNzI0NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3Iu
U2V0dGluZyA9IGNsYXNzIFNldHRpbmcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7Cisg
ICAgY29uc3RydWN0b3IobmFtZSwgZGVmYXVsdFZhbHVlKQorICAgIHsKKyAgICAgICAgc3VwZXIo
KTsKKworICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKKworICAgICAgICBsZXQgaW5zcGVjdGlv
bkxldmVsID0gSW5zcGVjdG9yRnJvbnRlbmRIb3N0ID8gSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmlu
c3BlY3Rpb25MZXZlbCgpIDogMTsKKyAgICAgICAgbGV0IGxldmVsU3RyaW5nID0gaW5zcGVjdGlv
bkxldmVsID4gMSA/ICItIiArIGluc3BlY3Rpb25MZXZlbCA6ICIiOworICAgICAgICB0aGlzLl9s
b2NhbFN0b3JhZ2VLZXkgPSBgY29tLmFwcGxlLldlYkluc3BlY3RvciR7bGV2ZWxTdHJpbmd9LiR7
bmFtZX1gOworICAgICAgICB0aGlzLl9kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7CisgICAg
fQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgbmFtZSgpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fbmFtZTsKKyAgICB9CisKKyAgICBnZXQgdmFsdWUoKQorICAgIHsKKyAgICAgICAg
aWYgKCJfdmFsdWUiIGluIHRoaXMpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7CisK
KyAgICAgICAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIGRlZmF1bHQgdmFsdWUgc28gY2hhbmdlcyB0
byBvYmplY3QgdmFsdWVzIGRvbid0IG1vZGlmeSB0aGUgZGVmYXVsdCB2YWx1ZS4KKyAgICAgICAg
dGhpcy5fdmFsdWUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX2RlZmF1bHRWYWx1
ZSkpOworCisgICAgICAgIGlmICghd2luZG93Lkluc3BlY3RvclRlc3QgJiYgd2luZG93LmxvY2Fs
U3RvcmFnZSAmJiB0aGlzLl9sb2NhbFN0b3JhZ2VLZXkgaW4gd2luZG93LmxvY2FsU3RvcmFnZSkg
eworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IEpTT04u
cGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZVt0aGlzLl9sb2NhbFN0b3JhZ2VLZXldKTsKKyAgICAg
ICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgICAgIGRlbGV0ZSB3aW5kb3cubG9jYWxT
dG9yYWdlW3RoaXMuX2xvY2FsU3RvcmFnZUtleV07CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7CisgICAgfQorCisgICAgc2V0IHZhbHVlKHZh
bHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTsKKworICAgICAgICBpZiAo
IXdpbmRvdy5JbnNwZWN0b3JUZXN0ICYmIHdpbmRvdy5sb2NhbFN0b3JhZ2UpIHsKKyAgICAgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICAgICAgLy8gVXNlIE9iamVjdC5zaGFsbG93RXF1YWwgdG8g
cHJvcGVybHkgY29tcGFyZSBvYmplY3RzLgorICAgICAgICAgICAgICAgIGlmIChPYmplY3Quc2hh
bGxvd0VxdWFsKHRoaXMuX3ZhbHVlLCB0aGlzLl9kZWZhdWx0VmFsdWUpKQorICAgICAgICAgICAg
ICAgICAgICBkZWxldGUgd2luZG93LmxvY2FsU3RvcmFnZVt0aGlzLl9sb2NhbFN0b3JhZ2VLZXld
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2Fs
U3RvcmFnZVt0aGlzLl9sb2NhbFN0b3JhZ2VLZXldID0gSlNPTi5zdHJpbmdpZnkodGhpcy5fdmFs
dWUpOworICAgICAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5l
cnJvcigiRXJyb3Igc2F2aW5nIHNldHRpbmcgd2l0aCBuYW1lOiAiICsgdGhpcy5fbmFtZSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl92YWx1ZSwg
e25hbWU6IHRoaXMuX25hbWV9KTsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuU2V0dGluZy5F
dmVudCA9IHsKKyAgICBDaGFuZ2VkOiAic2V0dGluZy1jaGFuZ2VkIgorfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCAyMTFiYWU0ZjUyNjNi
N2E0OTUzMjA0ZDk1ZTNlYWMzNzgxNzM4OGEzLi41MmY5M2M1YjU1YTYwMGM1Yjg4OWY5MTI3MTQ4
MWVmYTdiZGEzNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sCkBAIC0yMjQsNiArMjI0LDEwIEBACiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvTUlN
RVR5cGVVdGlsaXRpZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL1VSTFV0
aWxpdGllcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvVXRpbGl0aWVzLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQmFzZS9TZXR0aW5nLmpzIj48L3NjcmlwdD4K
KworICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9Qcm90b2NvbFRyYWNlci5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0xvZ2dpbmdQcm90b2NvbFRyYWNlci5qcyI+PC9z
Y3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZU9ic2Vy
dmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIu
anMiPjwvc2NyaXB0PgpAQCAtMzI4LDcgKzMzMiw2IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9TY3JpcHRJbnN0cnVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxz
L1NjcmlwdFN5bnRheFRyZWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
U2NyaXB0VGltZWxpbmVSZWNvcmQuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvU2V0dGluZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Tb3VyY2VD
b2RlUG9zaXRpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvU291cmNl
Q29kZVJldmlzaW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1NvdXJj
ZUNvZGVTZWFyY2hNYXRjaE9iamVjdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2V0dGluZy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TZXR0aW5nLmpzCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1NmU5OTc4MTdhZTU4ZDcxNTFlMDdkNWMwZTFhYjRkZDdlNGRm
YmRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TZXR0aW5nLmpzCisrKyAvZGV2
L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi1XZWJJbnNwZWN0b3IuU2V0dGluZyA9IGNsYXNzIFNldHRpbmcg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Ci17Ci0gICAgY29uc3RydWN0b3IobmFtZSwgZGVm
YXVsdFZhbHVlKQotICAgIHsKLSAgICAgICAgc3VwZXIoKTsKLQotICAgICAgICB0aGlzLl9uYW1l
ID0gbmFtZTsKLQotICAgICAgICBsZXQgaW5zcGVjdGlvbkxldmVsID0gSW5zcGVjdG9yRnJvbnRl
bmRIb3N0Lmluc3BlY3Rpb25MZXZlbCgpOwotICAgICAgICBsZXQgbGV2ZWxTdHJpbmcgPSBpbnNw
ZWN0aW9uTGV2ZWwgPiAxID8gIi0iICsgaW5zcGVjdGlvbkxldmVsIDogIiI7Ci0gICAgICAgIHRo
aXMuX2xvY2FsU3RvcmFnZUtleSA9IGBjb20uYXBwbGUuV2ViSW5zcGVjdG9yJHtsZXZlbFN0cmlu
Z30uJHtuYW1lfWA7Ci0gICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTsK
LSAgICB9Ci0KLSAgICAvLyBQdWJsaWMKLQotICAgIGdldCBuYW1lKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9uYW1lOwotICAgIH0KLQotICAgIGdldCB2YWx1ZSgpCi0gICAgewotICAg
ICAgICBpZiAoIl92YWx1ZSIgaW4gdGhpcykKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWx1
ZTsKLQotICAgICAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgZGVmYXVsdCB2YWx1ZSBzbyBjaGFu
Z2VzIHRvIG9iamVjdCB2YWx1ZXMgZG9uJ3QgbW9kaWZ5IHRoZSBkZWZhdWx0IHZhbHVlLgotICAg
ICAgICB0aGlzLl92YWx1ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5fZGVmYXVs
dFZhbHVlKSk7Ci0KLSAgICAgICAgaWYgKCF3aW5kb3cuSW5zcGVjdG9yVGVzdCAmJiB3aW5kb3cu
bG9jYWxTdG9yYWdlICYmIHRoaXMuX2xvY2FsU3RvcmFnZUtleSBpbiB3aW5kb3cubG9jYWxTdG9y
YWdlKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0g
SlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdlW3RoaXMuX2xvY2FsU3RvcmFnZUtleV0pOwot
ICAgICAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICAgICAgZGVsZXRlIHdpbmRvdy5s
b2NhbFN0b3JhZ2VbdGhpcy5fbG9jYWxTdG9yYWdlS2V5XTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTsKLSAgICB9Ci0KLSAgICBzZXQgdmFs
dWUodmFsdWUpCi0gICAgewotICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlOwotCi0gICAgICAg
IGlmICghd2luZG93Lkluc3BlY3RvclRlc3QgJiYgd2luZG93LmxvY2FsU3RvcmFnZSkgewotICAg
ICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAvLyBVc2UgT2JqZWN0LnNoYWxsb3dFcXVh
bCB0byBwcm9wZXJseSBjb21wYXJlIG9iamVjdHMuCi0gICAgICAgICAgICAgICAgaWYgKE9iamVj
dC5zaGFsbG93RXF1YWwodGhpcy5fdmFsdWUsIHRoaXMuX2RlZmF1bHRWYWx1ZSkpCi0gICAgICAg
ICAgICAgICAgICAgIGRlbGV0ZSB3aW5kb3cubG9jYWxTdG9yYWdlW3RoaXMuX2xvY2FsU3RvcmFn
ZUtleV07Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB3aW5kb3cu
bG9jYWxTdG9yYWdlW3RoaXMuX2xvY2FsU3RvcmFnZUtleV0gPSBKU09OLnN0cmluZ2lmeSh0aGlz
Ll92YWx1ZSk7Ci0gICAgICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgICAgICBjb25z
b2xlLmVycm9yKCJFcnJvciBzYXZpbmcgc2V0dGluZyB3aXRoIG5hbWU6ICIgKyB0aGlzLl9uYW1l
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX3Zh
bHVlLCB7bmFtZTogdGhpcy5fbmFtZX0pOwotICAgIH0KLX07Ci0KLVdlYkluc3BlY3Rvci5TZXR0
aW5nLkV2ZW50ID0gewotICAgIENoYW5nZWQ6ICJzZXR0aW5nLWNoYW5nZWQiCi19OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVj
dG9yQmFja2VuZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL0luc3BlY3RvckJhY2tlbmQuanMKaW5kZXggYWU4YmE3MzUyMDhjMTg2NDZiMWE3MWUwOTM3
MDk5M2ZlOWVlYmMxNy4uMzQzMTMwODQwZjA5MDI4Mzg2ZjIzNTQ5NzMyMzAwNGRmYzcxNjI1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
SW5zcGVjdG9yQmFja2VuZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpzCkBAIC0zOCwxNyArMzgsOTIgQEAgSW5z
cGVjdG9yQmFja2VuZENsYXNzID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENsYXNzCiAgICAgICAg
IHRoaXMuX3BlbmRpbmdSZXNwb25zZXMgPSBuZXcgTWFwOwogICAgICAgICB0aGlzLl9hZ2VudHMg
PSB7fTsKICAgICAgICAgdGhpcy5fZGVmZXJyZWRTY3JpcHRzID0gW107CisgICAgICAgIHRoaXMu
X2FjdGl2ZVRyYWNlciA9IG51bGw7CisgICAgICAgIHRoaXMuX2F1dG9tYXRpY1RyYWNlciA9IG51
bGw7CiAKLSAgICAgICAgdGhpcy5kdW1wSW5zcGVjdG9yVGltZVN0YXRzID0gZmFsc2U7Ci0gICAg
ICAgIHRoaXMuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMgPSBmYWxzZTsKLSAgICAgICAg
dGhpcy53YXJuRm9yTG9uZ01lc3NhZ2VIYW5kbGluZyA9IGZhbHNlOwotICAgICAgICB0aGlzLmxv
bmdNZXNzYWdlSGFuZGxpbmdUaHJlc2hvbGQgPSAxMDsgLy8gbWlsbGlzZWNvbmRzLgorICAgICAg
ICB0aGlzLl9kdW1wSW5zcGVjdG9yVGltZVN0YXRzID0gZmFsc2U7CiAKLSAgICAgICAgdGhpcy5f
bG9nID0gd2luZG93Lkluc3BlY3RvclRlc3QgPyBJbnNwZWN0b3JGcm9udGVuZEhvc3QudW5idWZm
ZXJlZExvZy5iaW5kKEluc3BlY3RvckZyb250ZW5kSG9zdCkgOiBjb25zb2xlLmxvZy5iaW5kKGNv
bnNvbGUpOworICAgICAgICBsZXQgc2V0dGluZyA9IFdlYkluc3BlY3Rvci5hdXRvTG9nUHJvdG9j
b2xNZXNzYWdlc1NldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoImF1dG8tY29sbGVj
dC1wcm90b2NvbC1tZXNzYWdlcyIsIGZhbHNlKTsKKyAgICAgICAgc2V0dGluZy5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX3N0YXJ0T3JT
dG9wQXV0b21hdGljVHJhY2luZy5iaW5kKHRoaXMpKQorICAgICAgICB0aGlzLl9zdGFydE9yU3Rv
cEF1dG9tYXRpY1RyYWNpbmcoKTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAorICAgIC8vIEl0
J3Mgc3RpbGwgcG9zc2libGUgdG8gc2V0IHRoaXMgZmxhZyBvbiBJbnNwZWN0b3JCYWNrZW5kIHRv
IGp1c3QKKyAgICAvLyBkdW1wIHByb3RvY29sIHRyYWZmaWMgYXMgaXQgaGFwcGVucy4gRm9yIG1v
cmUgY29tcGxleCB1c2VzIG9mCisgICAgLy8gcHJvdG9jb2wgZGF0YSwgaW5zdGFsbCBhIHN1YmNs
YXNzIG9mIFdlYkluc3BlY3Rvci5Qcm90b2NvbFRyYWNlci4KKyAgICBzZXQgZHVtcEluc3BlY3Rv
clByb3RvY29sTWVzc2FnZXModmFsdWUpCisgICAgeworICAgICAgICAvLyBJbXBsaWNpdGx5IGNh
dXNlIGF1dG9tYXRpYyBsb2dnaW5nIHRvIHN0YXJ0IGlmIGl0J3MgYWxsb3dlZC4KKyAgICAgICAg
bGV0IHNldHRpbmcgPSBXZWJJbnNwZWN0b3IuYXV0b0xvZ1Byb3RvY29sTWVzc2FnZXNTZXR0aW5n
OworICAgICAgICBzZXR0aW5nLnZhbHVlID0gdmFsdWU7CisKKyAgICAgICAgaWYgKHRoaXMuYWN0
aXZlVHJhY2VyICE9PSB0aGlzLl9hdXRvbWF0aWNUcmFjZXIpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKHRoaXMuYWN0aXZlVHJhY2VyKQorICAgICAgICAgICAgdGhpcy5hY3Rp
dmVUcmFjZXIuZHVtcE1lc3NhZ2VzVG9Db25zb2xlID0gdmFsdWU7CisgICAgfQorCisgICAgZ2V0
IGR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzKCkKKyAgICB7CisgICAgICAgIHJldHVybiAh
IXRoaXMuX2F1dG9tYXRpY1RyYWNlcjsKKyAgICB9CisKKyAgICBzZXQgZHVtcEluc3BlY3RvclRp
bWVTdGF0cyh2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5kdW1wSW5zcGVjdG9yUHJv
dG9jb2xNZXNzYWdlcykKKyAgICAgICAgICAgIHRoaXMuZHVtcEluc3BlY3RvclByb3RvY29sTWVz
c2FnZXMgPSB0cnVlOworCisgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNlciAhPT0gdGhpcy5f
YXV0b21hdGljVHJhY2VyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0aGlz
LmFjdGl2ZVRyYWNlcikKKyAgICAgICAgICAgIHRoaXMuYWN0aXZlVHJhY2VyLmR1bXBUaW1pbmdE
YXRhVG9Db25zb2xlID0gdmFsdWU7CisgICAgfQorCisgICAgZ2V0IGR1bXBJbnNwZWN0b3JUaW1l
U3RhdHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2R1bXBJbnNwZWN0b3JUaW1lU3Rh
dHM7CisgICAgfQorCisgICAgc2V0IGFjdGl2ZVRyYWNlcih0cmFjZXIpCisgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydCghdHJhY2VyIHx8IHRyYWNlciBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5Qcm90b2NvbFRyYWNlcik7CisKKyAgICAgICAgLy8gQmFpbCBlYXJseSBpZiBubyBzdGF0ZSBj
aGFuZ2UgaXMgdG8gYmUgbWFkZS4KKyAgICAgICAgaWYgKCF0cmFjZXIgJiYgIXRoaXMuX2FjdGl2
ZVRyYWNlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodHJhY2VyID09PSB0
aGlzLl9hY3RpdmVUcmFjZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gRG9u
J3QgYWxsb3cgYW4gYXV0b21hdGljIHRyYWNlciB0byBkaXNsb2RnZSBhIGN1c3RvbSB0cmFjZXIu
CisgICAgICAgIGlmICh0aGlzLl9hY3RpdmVUcmFjZXIgJiYgdHJhY2VyID09PSB0aGlzLl9hdXRv
bWF0aWNUcmFjZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMuYWN0
aXZlVHJhY2VyKQorICAgICAgICAgICAgdGhpcy5hY3RpdmVUcmFjZXIubG9nRmluaXNoZWQoKTsK
KworICAgICAgICBpZiAodGhpcy5fYWN0aXZlVHJhY2VyID09PSB0aGlzLl9hdXRvbWF0aWNUcmFj
ZXIpCisgICAgICAgICAgICB0aGlzLl9hdXRvbWF0aWNUcmFjZXIgPSBudWxsOworCisgICAgICAg
IHRoaXMuX2FjdGl2ZVRyYWNlciA9IHRyYWNlcjsKKyAgICAgICAgaWYgKHRoaXMuYWN0aXZlVHJh
Y2VyKQorICAgICAgICAgICAgdGhpcy5hY3RpdmVUcmFjZXIubG9nU3RhcnRlZCgpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBjdXN0b20gdHJhY2VyIHdhcyByZW1vdmVk
IGFuZCBhdXRvbWF0aWMgdHJhY2luZyBpcyBlbmFibGVkLAorICAgICAgICAgICAgLy8gdGhlbiBj
cmVhdGUgYSBuZXcgYXV0b21hdGljIHRyYWNlciBhbmQgaW5zdGFsbCBpdCBpbiBpdHMgcGxhY2Uu
CisgICAgICAgICAgICB0aGlzLl9zdGFydE9yU3RvcEF1dG9tYXRpY1RyYWNpbmcoKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGdldCBhY3RpdmVUcmFjZXIoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2FjdGl2ZVRyYWNlciB8fCBudWxsOworICAgIH0KKwogICAgIHJlZ2lzdGVyQ29t
bWFuZChxdWFsaWZpZWROYW1lLCBjYWxsU2lnbmF0dXJlLCByZXBseVNpZ25hdHVyZSkKICAgICB7
CiAgICAgICAgIHZhciBbZG9tYWluTmFtZSwgY29tbWFuZE5hbWVdID0gcXVhbGlmaWVkTmFtZS5z
cGxpdCgiLiIpOwpAQCAtNzgsMTAgKzE1Myw3IEBAIEluc3BlY3RvckJhY2tlbmRDbGFzcyA9IGNs
YXNzIEluc3BlY3RvckJhY2tlbmRDbGFzcwogCiAgICAgZGlzcGF0Y2gobWVzc2FnZSkKICAgICB7
Ci0gICAgICAgIGlmICh0aGlzLmR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzKQotICAgICAg
ICAgICAgdGhpcy5fbG9nKCJiYWNrZW5kOiAiICsgKCh0eXBlb2YgbWVzc2FnZSA9PT0gInN0cmlu
ZyIpID8gbWVzc2FnZSA6IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKSk7Ci0KLSAgICAgICAgdmFy
IG1lc3NhZ2VPYmplY3QgPSAodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciKSA/IEpTT04ucGFy
c2UobWVzc2FnZSkgOiBtZXNzYWdlOworICAgICAgICBsZXQgbWVzc2FnZU9iamVjdCA9ICh0eXBl
b2YgbWVzc2FnZSA9PT0gInN0cmluZyIpID8gSlNPTi5wYXJzZShtZXNzYWdlKSA6IG1lc3NhZ2U7
CiAKICAgICAgICAgaWYgKCJpZCIgaW4gbWVzc2FnZU9iamVjdCkKICAgICAgICAgICAgIHRoaXMu
X2Rpc3BhdGNoUmVzcG9uc2UobWVzc2FnZU9iamVjdCk7CkBAIC0xMTMsNiArMTg1LDI4IEBAIElu
c3BlY3RvckJhY2tlbmRDbGFzcyA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDbGFzcwogCiAgICAg
Ly8gUHJpdmF0ZQogCisgICAgX3N0YXJ0T3JTdG9wQXV0b21hdGljVHJhY2luZygpCisgICAgewor
ICAgICAgICBsZXQgc2V0dGluZyA9IFdlYkluc3BlY3Rvci5hdXRvTG9nUHJvdG9jb2xNZXNzYWdl
c1NldHRpbmc7CisKKyAgICAgICAgLy8gQmFpbCBpZiB0aGVyZSBpcyBubyBzdGF0ZSB0cmFuc2l0
aW9uIHRvIGJlIG1hZGUuCisgICAgICAgIGlmICghKHNldHRpbmcudmFsdWUgXiAhIXRoaXMuYWN0
aXZlVHJhY2VyKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIXNldHRpbmcu
dmFsdWUpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNlciA9PT0gdGhpcy5fYXV0
b21hdGljVHJhY2VyKQorICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVHJhY2VyID0gbnVsbDsK
KworICAgICAgICAgICAgdGhpcy5fYXV0b21hdGljVHJhY2VyID0gbnVsbDsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHRoaXMuX2F1dG9tYXRpY1RyYWNlciA9IG5ldyBXZWJJbnNwZWN0
b3IuTG9nZ2luZ1Byb3RvY29sVHJhY2VyOworICAgICAgICAgICAgdGhpcy5fYXV0b21hdGljVHJh
Y2VyLmR1bXBNZXNzYWdlc1RvQ29uc29sZSA9IHRoaXMuZHVtcEluc3BlY3RvclByb3RvY29sTWVz
c2FnZXM7CisgICAgICAgICAgICB0aGlzLl9hdXRvbWF0aWNUcmFjZXIuZHVtcFRpbWluZ0RhdGFU
b0NvbnNvbGUgPSB0aGlzLmR1bXBUaW1pbmdEYXRhVG9Db25zb2xlOworICAgICAgICAgICAgLy8g
VGhpcyB3aWxsIGJlIGlnbm9yZWQgaWYgYSBjdXN0b20gdHJhY2VyIGlzIGluc3RhbGxlZC4KKyAg
ICAgICAgICAgIHRoaXMuYWN0aXZlVHJhY2VyID0gdGhpcy5fYXV0b21hdGljVHJhY2VyOworICAg
ICAgICB9CisgICAgfQorCiAgICAgX2FnZW50Rm9yRG9tYWluKGRvbWFpbk5hbWUpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5fYWdlbnRzW2RvbWFpbk5hbWVdKQpAQCAtMTM3LDcgKzIzMSw3IEBA
IEluc3BlY3RvckJhY2tlbmRDbGFzcyA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDbGFzcwogCiAg
ICAgICAgIGxldCByZXNwb25zZURhdGEgPSB7Y29tbWFuZCwgY2FsbGJhY2t9OwogCi0gICAgICAg
IGlmICh0aGlzLmR1bXBJbnNwZWN0b3JUaW1lU3RhdHMpCisgICAgICAgIGlmICh0aGlzLmFjdGl2
ZVRyYWNlcikKICAgICAgICAgICAgIHJlc3BvbnNlRGF0YS5zZW5kUmVxdWVzdFRpbWVzdGFtcCA9
IHRpbWVzdGFtcCgpOwogCiAgICAgICAgIHRoaXMuX3BlbmRpbmdSZXNwb25zZXMuc2V0KHNlcXVl
bmNlSWQsIHJlc3BvbnNlRGF0YSk7CkBAIC0xNTgsNyArMjUyLDcgQEAgSW5zcGVjdG9yQmFja2Vu
ZENsYXNzID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENsYXNzCiAKICAgICAgICAgbGV0IHJlc3Bv
bnNlRGF0YSA9IHtjb21tYW5kfTsKIAotICAgICAgICBpZiAodGhpcy5kdW1wSW5zcGVjdG9yVGlt
ZVN0YXRzKQorICAgICAgICBpZiAodGhpcy5hY3RpdmVUcmFjZXIpCiAgICAgICAgICAgICByZXNw
b25zZURhdGEuc2VuZFJlcXVlc3RUaW1lc3RhbXAgPSB0aW1lc3RhbXAoKTsKIAogICAgICAgICBs
ZXQgcmVzcG9uc2VQcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0
KSB7CkBAIC0xNzQsOCArMjY4LDggQEAgSW5zcGVjdG9yQmFja2VuZENsYXNzID0gY2xhc3MgSW5z
cGVjdG9yQmFja2VuZENsYXNzCiAgICAgX3NlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2VPYmpl
Y3QpCiAgICAgewogICAgICAgICBsZXQgc3RyaW5naWZpZWRNZXNzYWdlID0gSlNPTi5zdHJpbmdp
ZnkobWVzc2FnZU9iamVjdCk7Ci0gICAgICAgIGlmICh0aGlzLmR1bXBJbnNwZWN0b3JQcm90b2Nv
bE1lc3NhZ2VzKQotICAgICAgICAgICAgdGhpcy5fbG9nKCJmcm9udGVuZDogIiArIHN0cmluZ2lm
aWVkTWVzc2FnZSk7CisgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNlcikKKyAgICAgICAgICAg
IHRoaXMuYWN0aXZlVHJhY2VyLmxvZ0Zyb250ZW5kUmVxdWVzdChzdHJpbmdpZmllZE1lc3NhZ2Up
OwogCiAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zZW5kTWVzc2FnZVRvQmFja2VuZChz
dHJpbmdpZmllZE1lc3NhZ2UpOwogICAgIH0KQEAgLTE5NSw5ICsyODksMTEgQEAgSW5zcGVjdG9y
QmFja2VuZENsYXNzID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENsYXNzCiAgICAgICAgIGxldCBy
ZXNwb25zZURhdGEgPSB0aGlzLl9wZW5kaW5nUmVzcG9uc2VzLnRha2Uoc2VxdWVuY2VJZCk7CiAg
ICAgICAgIGxldCB7Y29tbWFuZCwgY2FsbGJhY2ssIHByb21pc2V9ID0gcmVzcG9uc2VEYXRhOwog
Ci0gICAgICAgIHZhciBwcm9jZXNzaW5nU3RhcnRUaW1lc3RhbXA7Ci0gICAgICAgIGlmICh0aGlz
LmR1bXBJbnNwZWN0b3JUaW1lU3RhdHMpCisgICAgICAgIGxldCBwcm9jZXNzaW5nU3RhcnRUaW1l
c3RhbXA7CisgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNlcikgewogICAgICAgICAgICAgcHJv
Y2Vzc2luZ1N0YXJ0VGltZXN0YW1wID0gdGltZXN0YW1wKCk7CisgICAgICAgICAgICB0aGlzLmFj
dGl2ZVRyYWNlci5sb2dXaWxsSGFuZGxlUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9i
amVjdCkpOworICAgICAgICB9CiAKICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1
bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoUmVzcG9uc2VUb0NhbGxiYWNrKGNv
bW1hbmQsIG1lc3NhZ2VPYmplY3QsIGNhbGxiYWNrKTsKQEAgLTIwNiwxMyArMzAyLDEwIEBAIElu
c3BlY3RvckJhY2tlbmRDbGFzcyA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDbGFzcwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJSZWNlaXZlZCBhIGNvbW1hbmQgcmVz
cG9uc2Ugd2l0aG91dCBhIGNvcnJlc3BvbmRpbmcgY2FsbGJhY2sgb3IgcHJvbWlzZS4iLCBtZXNz
YWdlT2JqZWN0LCBjb21tYW5kKTsKIAotICAgICAgICBsZXQgcHJvY2Vzc2luZ0R1cmF0aW9uID0g
KHRpbWVzdGFtcCgpIC0gcHJvY2Vzc2luZ1N0YXJ0VGltZXN0YW1wKS50b0ZpeGVkKDMpOwotICAg
ICAgICBpZiAodGhpcy53YXJuRm9yTG9uZ01lc3NhZ2VIYW5kbGluZyAmJiBwcm9jZXNzaW5nRHVy
YXRpb24gPiB0aGlzLmxvbmdNZXNzYWdlSGFuZGxpbmdUaHJlc2hvbGQpCi0gICAgICAgICAgICBj
b25zb2xlLndhcm4oYEluc3BlY3RvckJhY2tlbmQ6IHRvb2sgJHtwcm9jZXNzaW5nRHVyYXRpb259
bXMgdG8gaGFuZGxlIHJlc3BvbnNlIGZvciBjb21tYW5kOiAke2NvbW1hbmQucXVhbGlmaWVkTmFt
ZX1gKTsKLQotICAgICAgICBpZiAodGhpcy5kdW1wSW5zcGVjdG9yVGltZVN0YXRzKSB7Ci0gICAg
ICAgICAgICBsZXQgcm91bmRUcmlwRHVyYXRpb24gPSAocHJvY2Vzc2luZ1N0YXJ0VGltZXN0YW1w
IC0gcmVzcG9uc2VEYXRhLnNlbmRSZXF1ZXN0VGltZXN0YW1wKS50b0ZpeGVkKDMpOwotICAgICAg
ICAgICAgY29uc29sZS5sb2coYHRpbWUtc3RhdHM6IEhhbmRsaW5nOiAke3Byb2Nlc3NpbmdEdXJh
dGlvbn1tczsgUlRUOiAke3JvdW5kVHJpcER1cmF0aW9ufW1zOyAoY29tbWFuZCAke2NvbW1hbmQu
cXVhbGlmaWVkTmFtZX0pYCk7CisgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNlcikgeworICAg
ICAgICAgICAgbGV0IHByb2Nlc3NpbmdUaW1lID0gKHRpbWVzdGFtcCgpIC0gcHJvY2Vzc2luZ1N0
YXJ0VGltZXN0YW1wKS50b0ZpeGVkKDMpOworICAgICAgICAgICAgbGV0IHJvdW5kVHJpcFRpbWUg
PSAocHJvY2Vzc2luZ1N0YXJ0VGltZXN0YW1wIC0gcmVzcG9uc2VEYXRhLnNlbmRSZXF1ZXN0VGlt
ZXN0YW1wKS50b0ZpeGVkKDMpOworICAgICAgICAgICAgdGhpcy5hY3RpdmVUcmFjZXIubG9nRGlk
SGFuZGxlUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCksIHtydHQ6IHJvdW5k
VHJpcFRpbWUsIGRpc3BhdGNoOiBwcm9jZXNzaW5nVGltZX0pOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKHRoaXMuX2RlZmVycmVkU2NyaXB0cy5sZW5ndGggJiYgIXRoaXMuX3BlbmRpbmdSZXNw
b25zZXMuc2l6ZSkKQEAgLTI0Nyw0OCArMzQwLDQ3IEBAIEluc3BlY3RvckJhY2tlbmRDbGFzcyA9
IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDbGFzcwogCiAgICAgX2Rpc3BhdGNoRXZlbnQobWVzc2Fn
ZU9iamVjdCkKICAgICB7Ci0gICAgICAgIHZhciBxdWFsaWZpZWROYW1lID0gbWVzc2FnZU9iamVj
dFsibWV0aG9kIl07Ci0gICAgICAgIHZhciBbZG9tYWluTmFtZSwgZXZlbnROYW1lXSA9IHF1YWxp
ZmllZE5hbWUuc3BsaXQoIi4iKTsKKyAgICAgICAgbGV0IHF1YWxpZmllZE5hbWUgPSBtZXNzYWdl
T2JqZWN0WyJtZXRob2QiXTsKKyAgICAgICAgbGV0IFtkb21haW5OYW1lLCBldmVudE5hbWVdID0g
cXVhbGlmaWVkTmFtZS5zcGxpdCgiLiIpOwogICAgICAgICBpZiAoIShkb21haW5OYW1lIGluIHRo
aXMuX2FnZW50cykpIHsKICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlByb3RvY29sIEVycm9y
OiBBdHRlbXB0ZWQgdG8gZGlzcGF0Y2ggbWV0aG9kICciICsgZXZlbnROYW1lICsgIicgZm9yIG5v
bi1leGlzdGluZyBkb21haW4gJyIgKyBkb21haW5OYW1lICsgIiciKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBhZ2VudCA9IHRoaXMuX2FnZW50Rm9yRG9t
YWluKGRvbWFpbk5hbWUpOworICAgICAgICBsZXQgYWdlbnQgPSB0aGlzLl9hZ2VudEZvckRvbWFp
bihkb21haW5OYW1lKTsKICAgICAgICAgaWYgKCFhZ2VudC5hY3RpdmUpIHsKICAgICAgICAgICAg
IGNvbnNvbGUuZXJyb3IoIlByb3RvY29sIEVycm9yOiBBdHRlbXB0ZWQgdG8gZGlzcGF0Y2ggbWV0
aG9kIGZvciBkb21haW4gJyIgKyBkb21haW5OYW1lICsgIicgd2hpY2ggZXhpc3RzIGJ1dCBpcyBu
b3QgYWN0aXZlLiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
dmFyIGV2ZW50ID0gYWdlbnQuZ2V0RXZlbnQoZXZlbnROYW1lKTsKKyAgICAgICAgbGV0IGV2ZW50
ID0gYWdlbnQuZ2V0RXZlbnQoZXZlbnROYW1lKTsKICAgICAgICAgaWYgKCFldmVudCkgewogICAg
ICAgICAgICAgY29uc29sZS5lcnJvcigiUHJvdG9jb2wgRXJyb3I6IEF0dGVtcHRlZCB0byBkaXNw
YXRjaCBhbiB1bnNwZWNpZmllZCBtZXRob2QgJyIgKyBxdWFsaWZpZWROYW1lICsgIiciKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBldmVudEFyZ3VtZW50
cyA9IFtdOwotICAgICAgICBpZiAobWVzc2FnZU9iamVjdFsicGFyYW1zIl0pIHsKLSAgICAgICAg
ICAgIHZhciBwYXJhbWV0ZXJOYW1lcyA9IGV2ZW50LnBhcmFtZXRlck5hbWVzOwotICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbWV0ZXJOYW1lcy5sZW5ndGg7ICsraSkKLSAgICAg
ICAgICAgICAgICBldmVudEFyZ3VtZW50cy5wdXNoKG1lc3NhZ2VPYmplY3RbInBhcmFtcyJdW3Bh
cmFtZXRlck5hbWVzW2ldXSk7Ci0gICAgICAgIH0KKyAgICAgICAgbGV0IGV2ZW50QXJndW1lbnRz
ID0gW107CisgICAgICAgIGlmIChtZXNzYWdlT2JqZWN0WyJwYXJhbXMiXSkKKyAgICAgICAgICAg
IGV2ZW50QXJndW1lbnRzID0gZXZlbnQucGFyYW1ldGVyTmFtZXMubWFwKChuYW1lKSA9PiBtZXNz
YWdlT2JqZWN0WyJwYXJhbXMiXVtuYW1lXSk7CiAKLSAgICAgICAgdmFyIHByb2Nlc3NpbmdTdGFy
dFRpbWVzdGFtcDsKLSAgICAgICAgaWYgKHRoaXMuZHVtcEluc3BlY3RvclRpbWVTdGF0cykKKyAg
ICAgICAgbGV0IHByb2Nlc3NpbmdTdGFydFRpbWVzdGFtcDsKKyAgICAgICAgaWYgKHRoaXMuYWN0
aXZlVHJhY2VyKSB7CiAgICAgICAgICAgICBwcm9jZXNzaW5nU3RhcnRUaW1lc3RhbXAgPSB0aW1l
c3RhbXAoKTsKKyAgICAgICAgICAgIHRoaXMuYWN0aXZlVHJhY2VyLmxvZ1dpbGxIYW5kbGVFdmVu
dChKU09OLnN0cmluZ2lmeShtZXNzYWdlT2JqZWN0KSk7CisgICAgICAgIH0KIAogICAgICAgICB0
cnkgewogICAgICAgICAgICAgYWdlbnQuZGlzcGF0Y2hFdmVudChldmVudE5hbWUsIGV2ZW50QXJn
dW1lbnRzKTsKICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgY29uc29sZS5lcnJv
cigiVW5jYXVnaHQgZXhjZXB0aW9uIGluIGluc3BlY3RvciBwYWdlIHdoaWxlIGhhbmRsaW5nIGV2
ZW50ICIgKyBxdWFsaWZpZWROYW1lLCBlKTsKKyAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRy
YWNlcikKKyAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRyYWNlci5sb2dGcm9udGVuZEV4Y2Vw
dGlvbihKU09OLnN0cmluZ2lmeShtZXNzYWdlT2JqZWN0KSwgZSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBsZXQgcHJvY2Vzc2luZ0R1cmF0aW9uID0gKHRpbWVzdGFtcCgpIC0gcHJvY2Vzc2luZ1N0
YXJ0VGltZXN0YW1wKS50b0ZpeGVkKDMpOwotICAgICAgICBpZiAodGhpcy53YXJuRm9yTG9uZ01l
c3NhZ2VIYW5kbGluZyAmJiBwcm9jZXNzaW5nRHVyYXRpb24gPiB0aGlzLmxvbmdNZXNzYWdlSGFu
ZGxpbmdUaHJlc2hvbGQpCi0gICAgICAgICAgICBjb25zb2xlLndhcm4oYEluc3BlY3RvckJhY2tl
bmQ6IHRvb2sgJHtwcm9jZXNzaW5nRHVyYXRpb259bXMgdG8gaGFuZGxlIGV2ZW50OiAke21lc3Nh
Z2VPYmplY3QubWV0aG9kfWApOwotCi0gICAgICAgIGlmICh0aGlzLmR1bXBJbnNwZWN0b3JUaW1l
U3RhdHMpCi0gICAgICAgICAgICBjb25zb2xlLmxvZyhgdGltZS1zdGF0czogSGFuZGxpbmc6ICR7
cHJvY2Vzc2luZ0R1cmF0aW9ufW1zIChldmVudCAke21lc3NhZ2VPYmplY3QubWV0aG9kfSlgKTsK
KyAgICAgICAgaWYgKHRoaXMuYWN0aXZlVHJhY2VyKSB7CisgICAgICAgICAgICBsZXQgcHJvY2Vz
c2luZ1RpbWUgPSAodGltZXN0YW1wKCkgLSBwcm9jZXNzaW5nU3RhcnRUaW1lc3RhbXApLnRvRml4
ZWQoMyk7CisgICAgICAgICAgICB0aGlzLmFjdGl2ZVRyYWNlci5sb2dEaWRIYW5kbGVFdmVudChK
U09OLnN0cmluZ2lmeShtZXNzYWdlT2JqZWN0KSwge2Rpc3BhdGNoOiBwcm9jZXNzaW5nVGltZX0p
OworICAgICAgICB9CiAgICAgfQogCiAgICAgX3JlcG9ydFByb3RvY29sRXJyb3IobWVzc2FnZU9i
amVjdCkKQEAgLTMwMCw5ICszOTIsOSBAQCBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MgPSBjbGFzcyBJ
bnNwZWN0b3JCYWNrZW5kQ2xhc3MKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X3BlbmRpbmdSZXNwb25zZXMuc2l6ZSA9PT0gMCk7CiAKLSAgICAgICAgdmFyIHNjcmlwdHNUb1J1
biA9IHRoaXMuX2RlZmVycmVkU2NyaXB0czsKKyAgICAgICAgbGV0IHNjcmlwdHNUb1J1biA9IHRo
aXMuX2RlZmVycmVkU2NyaXB0czsKICAgICAgICAgdGhpcy5fZGVmZXJyZWRTY3JpcHRzID0gW107
Ci0gICAgICAgIGZvciAodmFyIHNjcmlwdCBvZiBzY3JpcHRzVG9SdW4pCisgICAgICAgIGZvciAo
bGV0IHNjcmlwdCBvZiBzY3JpcHRzVG9SdW4pCiAgICAgICAgICAgICBzY3JpcHQuY2FsbCh0aGlz
KTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvTG9nZ2luZ1Byb3RvY29sVHJhY2VyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTG9nZ2luZ1Byb3RvY29sVHJhY2VyLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZmOWFkYjcyYTc3YjNhOWY3Zjk2Mjk4MTZkYjllZGY0ODE3NmE4OTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9Mb2dnaW5nUHJvdG9jb2xUcmFjZXIuanMKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitXZWJJbnNwZWN0b3IuTG9nZ2luZ1Byb3RvY29sVHJhY2VyID0gY2xhc3MgTG9nZ2luZ1Byb3Rv
Y29sVHJhY2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlByb3RvY29sVHJhY2VyCit7CisgICAgY29u
c3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9kdW1w
TWVzc2FnZXNUb0NvbnNvbGUgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fZHVtcFRpbWluZ0RhdGFU
b0NvbnNvbGUgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gd2luZG93Lklu
c3BlY3RvclRlc3QgPyBJbnNwZWN0b3JGcm9udGVuZEhvc3QudW5idWZmZXJlZExvZy5iaW5kKElu
c3BlY3RvckZyb250ZW5kSG9zdCkgOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpOworICAgIH0K
KworICAgIC8vIFB1YmxpYworCisgICAgc2V0IGR1bXBNZXNzYWdlc1RvQ29uc29sZSh2YWx1ZSkK
KyAgICB7CisgICAgICAgIHRoaXMuX2R1bXBNZXNzYWdlc1RvQ29uc29sZSA9ICEhdmFsdWU7Cisg
ICAgfQorCisgICAgZ2V0IGR1bXBNZXNzYWdlc1RvQ29uc29sZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fZHVtcE1lc3NhZ2VzVG9Db25zb2xlOworICAgIH0KKworICAgIHNldCBkdW1w
VGltaW5nRGF0YVRvQ29uc29sZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2R1bXBUaW1p
bmdEYXRhVG9Db25zb2xlID0gISF2YWx1ZTsKKyAgICB9CisKKyAgICBnZXQgZHVtcFRpbWluZ0Rh
dGFUb0NvbnNvbGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2R1bXBUaW1pbmdEYXRh
VG9Db25zb2xlOworICAgIH0KKworICAgIGxvZ0Zyb250ZW5kRXhjZXB0aW9uKG1lc3NhZ2UsIGV4
Y2VwdGlvbikKKyAgICB7CisgICAgICAgIHRoaXMuX3Byb2Nlc3NFbnRyeSh7dHlwZTogImV4Y2Vw
dGlvbiIsIG1lc3NhZ2UsIGV4Y2VwdGlvbn0pOworICAgIH0KKworICAgIGxvZ1Byb3RvY29sRXJy
b3IobWVzc2FnZSwgZXJyb3IpCisgICAgeworICAgICAgICB0aGlzLl9wcm9jZXNzRW50cnkoe3R5
cGU6ICJlcnJvciIsIG1lc3NhZ2UsIGVycm9yfSk7CisgICAgfQorCisgICAgbG9nRnJvbnRlbmRS
ZXF1ZXN0KG1lc3NhZ2UpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgbWVz
c2FnZSA9PT0gInN0cmluZyIsICJNdXN0IHN0cmluZ2lmeSBtZXNzYWdlcyB0byBhdm9pZCBsZWFr
aW5nIGFsbCBKU09OIHByb3RvY29sIG1lc3NhZ2VzLiIpCisKKyAgICAgICAgdGhpcy5fcHJvY2Vz
c0VudHJ5KHt0eXBlOiAicmVxdWVzdCIsIG1lc3NhZ2V9KTsKKyAgICB9CisKKyAgICBsb2dXaWxs
SGFuZGxlUmVzcG9uc2UobWVzc2FnZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5
cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIiwgIk11c3Qgc3RyaW5naWZ5IG1lc3NhZ2VzIHRvIGF2
b2lkIGxlYWtpbmcgYWxsIEpTT04gcHJvdG9jb2wgbWVzc2FnZXMuIikKKworICAgICAgICBsZXQg
ZW50cnkgPSB7dHlwZTogInJlc3BvbnNlIiwgbWVzc2FnZX07CisgICAgICAgIHRoaXMuX3Byb2Nl
c3NFbnRyeShlbnRyeSk7CisgICAgfQorCisgICAgbG9nRGlkSGFuZGxlUmVzcG9uc2UobWVzc2Fn
ZSwgdGltaW5ncyA9IG51bGwpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2Yg
bWVzc2FnZSA9PT0gInN0cmluZyIsICJNdXN0IHN0cmluZ2lmeSBtZXNzYWdlcyB0byBhdm9pZCBs
ZWFraW5nIGFsbCBKU09OIHByb3RvY29sIG1lc3NhZ2VzLiIpCisKKyAgICAgICAgbGV0IGVudHJ5
ID0ge3R5cGU6ICJyZXNwb25zZSIsIG1lc3NhZ2V9OworICAgICAgICBpZiAodGltaW5ncykKKyAg
ICAgICAgICAgIGVudHJ5LnRpbWluZ3MgPSBPYmplY3Quc2hhbGxvd0NvcHkodGltaW5ncyk7CisK
KyAgICAgICAgdGhpcy5fcHJvY2Vzc0VudHJ5KGVudHJ5KTsKKyAgICB9CisKKyAgICBsb2dXaWxs
SGFuZGxlRXZlbnQobWVzc2FnZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVv
ZiBtZXNzYWdlID09PSAic3RyaW5nIiwgIk11c3Qgc3RyaW5naWZ5IG1lc3NhZ2VzIHRvIGF2b2lk
IGxlYWtpbmcgYWxsIEpTT04gcHJvdG9jb2wgbWVzc2FnZXMuIikKKworICAgICAgICBsZXQgZW50
cnkgPSB7dHlwZTogImV2ZW50IiwgbWVzc2FnZX07CisgICAgICAgIHRoaXMuX3Byb2Nlc3NFbnRy
eShlbnRyeSk7CisgICAgfQorCisgICAgbG9nRGlkSGFuZGxlRXZlbnQobWVzc2FnZSwgdGltaW5n
cyA9IG51bGwpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgbWVzc2FnZSA9
PT0gInN0cmluZyIsICJNdXN0IHN0cmluZ2lmeSBtZXNzYWdlcyB0byBhdm9pZCBsZWFraW5nIGFs
bCBKU09OIHByb3RvY29sIG1lc3NhZ2VzLiIpCisKKyAgICAgICAgbGV0IGVudHJ5ID0ge3R5cGU6
ICJldmVudCIsIG1lc3NhZ2V9OworICAgICAgICBpZiAodGltaW5ncykKKyAgICAgICAgICAgIGVu
dHJ5LnRpbWluZ3MgPSBPYmplY3Quc2hhbGxvd0NvcHkodGltaW5ncyk7CisKKyAgICAgICAgdGhp
cy5fcHJvY2Vzc0VudHJ5KGVudHJ5KTsKKyAgICB9CisKKyAgICBfcHJvY2Vzc0VudHJ5KGVudHJ5
KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2R1bXBUaW1pbmdEYXRhVG9Db25zb2xlICYmIGVu
dHJ5LnRpbWluZ3MpIHsKKyAgICAgICAgICAgIGlmIChlbnRyeS50aW1pbmdzLnJ0dCAmJiBlbnRy
eS50aW1pbmdzLmRpc3BhdGNoKQorICAgICAgICAgICAgICAgIHRoaXMuX2xvZ1RvQ29uc29sZShg
dGltZS1zdGF0czogSGFuZGxpbmc6ICR7ZW50cnkudGltaW5ncy5kaXNwYXRjaCB8fCBOYU59bXM7
IFJUVDogJHtlbnRyeS50aW1pbmdzLnJ0dH1tc2ApOworICAgICAgICAgICAgZWxzZSBpZiAoZW50
cnkudGltaW5ncy5kaXNwYXRjaCkKKyAgICAgICAgICAgICAgICB0aGlzLl9sb2dUb0NvbnNvbGUo
YHRpbWUtc3RhdHM6IEhhbmRsaW5nOiAke2VudHJ5LnRpbWluZ3MuZGlzcGF0Y2ggfHwgTmFOfW1z
YCk7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fZHVtcE1lc3NhZ2VzVG9Db25zb2xlKQorICAg
ICAgICAgICAgdGhpcy5fbG9nVG9Db25zb2xlKGAke2VudHJ5LnR5cGV9OiAke2VudHJ5Lm1lc3Nh
Z2V9YCk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL1Byb3RvY29sVHJhY2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUHJvdG9jb2xUcmFjZXIuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGQxNmMyMTMxN2QxYzY5MWEyYThmNzAxZGJhYjdmMDkxOTQwNDllOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1Byb3RvY29s
VHJhY2VyLmpzCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuUHJv
dG9jb2xUcmFjZXIgPSBjbGFzcyBQcm90b2NvbFRyYWNlciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKK3sKKyAgICAvLyBQdWJsaWMKKworICAgIGxvZ1N0YXJ0ZWQoKQorICAgIHsKKyAgICAg
ICAgLy8gVG8gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgorICAgIH0KKworICAgIGxvZ0Zy
b250ZW5kRXhjZXB0aW9uKG1lc3NhZ2UsIGV4Y2VwdGlvbikKKyAgICB7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHR5cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIiwgIk11c3Qgc3RyaW5naWZ5IG1l
c3NhZ2VzIHRvIGF2b2lkIGxlYWtpbmcgYWxsIEpTT04gcHJvdG9jb2wgbWVzc2FnZXMuIikKKwor
ICAgICAgICAvLyBUbyBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAgfQorCisgICAg
bG9nUHJvdG9jb2xFcnJvcihtZXNzYWdlLCBlcnJvcikKKyAgICB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHR5cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIiwgIk11c3Qgc3RyaW5naWZ5IG1lc3Nh
Z2VzIHRvIGF2b2lkIGxlYWtpbmcgYWxsIEpTT04gcHJvdG9jb2wgbWVzc2FnZXMuIikKKworICAg
ICAgICAvLyBUbyBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAgfQorCisgICAgbG9n
RnJvbnRlbmRSZXF1ZXN0KG1lc3NhZ2UpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0
eXBlb2YgbWVzc2FnZSA9PT0gInN0cmluZyIsICJNdXN0IHN0cmluZ2lmeSBtZXNzYWdlcyB0byBh
dm9pZCBsZWFraW5nIGFsbCBKU09OIHByb3RvY29sIG1lc3NhZ2VzLiIpCisKKyAgICAgICAgLy8g
VG8gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgorICAgIH0KKworICAgIGxvZ1dpbGxIYW5k
bGVSZXNwb25zZShtZXNzYWdlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9m
IG1lc3NhZ2UgPT09ICJzdHJpbmciLCAiTXVzdCBzdHJpbmdpZnkgbWVzc2FnZXMgdG8gYXZvaWQg
bGVha2luZyBhbGwgSlNPTiBwcm90b2NvbCBtZXNzYWdlcy4iKQorCisgICAgICAgIC8vIFRvIGJl
IG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KKyAgICB9CisKKyAgICBsb2dEaWRIYW5kbGVSZXNw
b25zZShtZXNzYWdlLCB0aW1pbmdzID0gbnVsbCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHR5cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIiwgIk11c3Qgc3RyaW5naWZ5IG1lc3NhZ2Vz
IHRvIGF2b2lkIGxlYWtpbmcgYWxsIEpTT04gcHJvdG9jb2wgbWVzc2FnZXMuIikKKworICAgICAg
ICAvLyBUbyBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAgfQorCisgICAgbG9nV2ls
bEhhbmRsZUV2ZW50KG1lc3NhZ2UpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBl
b2YgbWVzc2FnZSA9PT0gInN0cmluZyIsICJNdXN0IHN0cmluZ2lmeSBtZXNzYWdlcyB0byBhdm9p
ZCBsZWFraW5nIGFsbCBKU09OIHByb3RvY29sIG1lc3NhZ2VzLiIpCisKKyAgICAgICAgLy8gVG8g
YmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgorICAgIH0KKworICAgIGxvZ0RpZEhhbmRsZUV2
ZW50KG1lc3NhZ2UsIHRpbWluZ3MgPSBudWxsKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciLCAiTXVzdCBzdHJpbmdpZnkgbWVzc2FnZXMg
dG8gYXZvaWQgbGVha2luZyBhbGwgSlNPTiBwcm90b2NvbCBtZXNzYWdlcy4iKQorCisgICAgICAg
IC8vIFRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KKyAgICB9CisKKyAgICBsb2dGaW5p
c2hlZCgpCisgICAgeworICAgICAgICAvLyBUbyBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMu
CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3Qu
aHRtbAppbmRleCAwYjMyMWE1MTBjZTlkMDRhZjgyZjgxYWEwN2NhNDY3NTM2NDZjYWMwLi5lMjA0
NmRmODNmNjBlMzRmNWNkZDU4MmM1OGQ5MDBkNGJjMzlhZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCkBAIC00OSw2ICs0OSwxMCBAQAogICAg
IDxzY3JpcHQgc3JjPSJCYXNlL0V2ZW50TGlzdGVuZXJTZXQuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJCYXNlL1VSTFV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IkJhc2UvVXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQmFzZS9T
ZXR0aW5nLmpzIj48L3NjcmlwdD4KKworICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9Qcm90b2Nv
bFRyYWNlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0xvZ2dpbmdQ
cm90b2NvbFRyYWNlci5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wv
SW5zcGVjdG9yQmFja2VuZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29s
L0luc3BlY3RvckZyb250ZW5kQVBJLmpzIj48L3NjcmlwdD4KQEAgLTEzNSw3ICsxMzksNiBAQAog
ICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvU2NyaXB0SW5zdHJ1bWVudC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL1NjcmlwdFRpbWVsaW5lUmVjb3JkLmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1NldHRpbmcuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJNb2RlbHMvU291cmNlQ29kZUxvY2F0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL1NvdXJjZUNvZGVSZXZpc2lvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9Tb3VyY2VDb2RlVGltZWxpbmUuanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267585</attachid>
            <date>2015-12-17 15:02:11 -0800</date>
            <delta_ts>2015-12-17 15:54:18 -0800</delta_ts>
            <desc>Follow-up fix</desc>
            <filename>bug-151635-20151217150133.patch</filename>
            <type>text/plain</type>
            <size>1839</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
ZTUwODNlYjRmYjg3MjZjZTlmYjBmMGE3ZTY2MjI1YTBjODY4MjhlLi5jZmZhNTJjZDAyNzk1YWI3
OTM1Y2JlNDIxOTI2OGE5YjRkMTA5YmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNS0xMi0xNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBjb250cm9sIHdoZXRoZXIgdG8gY29sbGVjdCBhbmQgZHVt
cCBwcm90b2NvbCBtZXNzYWdlcyB1c2luZyBhIFdlYkluc3BlY3Rvci5TZXR0aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE2MzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb2xsb3ctdXAgZml4IHRv
IHN0b3AgZG91YmxlLWxvZ2dpbmcgZXZlcnl0aGluZy4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvTG9nZ2luZ1Byb3RvY29sVHJhY2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkxvZ2dpbmdQcm90b2NvbFRyYWNlci5wcm90b3R5cGUuX3Byb2Nlc3NFbnRyeSk6CisKIDIw
MTUtMTItMTcgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFJFR1JFU1NJT04gKHIxOTM5MTMpOiBQb3BvdmVyIGNvdmVycyBjb21wbGV0
aW9uIHN1Z2dlc3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9Mb2dnaW5nUHJvdG9jb2xUcmFjZXIuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Mb2dnaW5nUHJvdG9jb2xUcmFjZXIuanMK
aW5kZXggNmY5YWRiNzJhNzdiM2E5ZjdmOTYyOTgxNmRiOWVkZjQ4MTc2YTg5OC4uZDlmOGZlYWIz
YmM3Y2U3ZjkxMjc2ZWVlMjA1OTRmMjNlZmZjZDgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTG9nZ2luZ1Byb3RvY29sVHJhY2VyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xvZ2dp
bmdQcm90b2NvbFRyYWNlci5qcwpAQCAtMTE4LDcgKzExOCw3IEBAIFdlYkluc3BlY3Rvci5Mb2dn
aW5nUHJvdG9jb2xUcmFjZXIgPSBjbGFzcyBMb2dnaW5nUHJvdG9jb2xUcmFjZXIgZXh0ZW5kcyBX
ZWJJbnNwCiAgICAgICAgICAgICAgICAgdGhpcy5fbG9nVG9Db25zb2xlKGB0aW1lLXN0YXRzOiBI
YW5kbGluZzogJHtlbnRyeS50aW1pbmdzLmRpc3BhdGNoIHx8IE5hTn1tczsgUlRUOiAke2VudHJ5
LnRpbWluZ3MucnR0fW1zYCk7CiAgICAgICAgICAgICBlbHNlIGlmIChlbnRyeS50aW1pbmdzLmRp
c3BhdGNoKQogICAgICAgICAgICAgICAgIHRoaXMuX2xvZ1RvQ29uc29sZShgdGltZS1zdGF0czog
SGFuZGxpbmc6ICR7ZW50cnkudGltaW5ncy5kaXNwYXRjaCB8fCBOYU59bXNgKTsKLSAgICAgICAg
fSBlbHNlIGlmICh0aGlzLl9kdW1wTWVzc2FnZXNUb0NvbnNvbGUpCisgICAgICAgIH0gZWxzZSBp
ZiAodGhpcy5fZHVtcE1lc3NhZ2VzVG9Db25zb2xlICYmICFlbnRyeS50aW1pbmdzKQogICAgICAg
ICAgICAgdGhpcy5fbG9nVG9Db25zb2xlKGAke2VudHJ5LnR5cGV9OiAke2VudHJ5Lm1lc3NhZ2V9
YCk7CiAgICAgfQogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>