<?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>68711</bug_id>
          
          <creation_ts>2011-09-23 11:36:07 -0700</creation_ts>
          <short_desc>REGRESSION (r87756) - Document::initSecurityContext() fails to call securityOrigin().grantLoadLocalResources()</short_desc>
          <delta_ts>2012-12-03 09:03:00 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>38654</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Jocelyn Turcotte">jturcotte</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>benm</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fmalita</cc>
    
    <cc>japhet</cc>
    
    <cc>jturcotte</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>pdr</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rafael.lobo</cc>
    
    <cc>schenney</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>472371</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-09-23 11:36:07 -0700</bug_when>
    <thetext>The Document constructor calls Document::initSecurityContext(). This function is broken because it calls Document::loader() before the frame has a chance to point to this document. This was introduced by r87756. See https://bugs.webkit.org/show_bug.cgi?id=61494#c19 and onwards.

Note that both Qt and Android use AllowLocalLoadsForLocalAndSubstituteData so rely on Document::initSecurityContext().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472402</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-23 12:25:20 -0700</bug_when>
    <thetext>The core of this problem is the fact that during the creation of the Document it can’t get to its own DocumentLoader. I can think of two ways of fixing this:

    1) Improving the ownership model so the document doesn’t have to go through the frame&apos;s “active document loader” to get to its document loader. This is the best long term solution.

    2) Passing the document loader in when creating the document. This seems like something better to pass in than the frame, in fact.

Maybe there are other fixes. (2) should be relatively mechanical so it may be a good way to do things. The only concern I have is that some documents may not have a loader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472406</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-23 12:27:38 -0700</bug_when>
    <thetext>Another possibility:

    3) Hack the document initialization process so that it relies on the frame loader’s active document loader being the document’s loader despite the fact that the frame does not yet have the document as its current document. This hack could be simply implemented as a boolean that gets set during initialization and then cleared once initialization is complete.

While (3) makes things more like they were before r87756, it creates the risk of reintroducing the kind of problems r87756 was supposed to solve if during document initialization there is something that causes the frame loader to move on to a new document.

And (3) is not a good direction long term, since it makes things even more complicated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776768</commentid>
    <comment_count>3</comment_count>
      <attachid>176271</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-11-27 08:20:58 -0800</bug_when>
    <thetext>Created attachment 176271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776769</commentid>
    <comment_count>4</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-11-27 08:25:35 -0800</bug_when>
    <thetext>This basically implements (2). It didn&apos;t feel comfortable to add a reference of DocumentLoader into Document or the other way around since both are pretty heavy objects and their lifetime can&apos;t easily be encapsulated into one another.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776786</commentid>
    <comment_count>5</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-11-27 08:35:59 -0800</bug_when>
    <thetext>*** Bug 63245 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776929</commentid>
    <comment_count>6</comment_count>
      <attachid>176271</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-11-27 10:16:14 -0800</bug_when>
    <thetext>Comment on attachment 176271
Patch

Attachment 176271 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15014150</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777405</commentid>
    <comment_count>7</comment_count>
      <attachid>176271</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 17:22:09 -0800</bug_when>
    <thetext>Comment on attachment 176271
Patch

Attachment 176271 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15018234</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777630</commentid>
    <comment_count>8</comment_count>
      <attachid>176426</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-11-28 01:30:25 -0800</bug_when>
    <thetext>Created attachment 176426
Patch

Fix the chromium build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779129</commentid>
    <comment_count>9</comment_count>
      <attachid>176426</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-29 10:13:01 -0800</bug_when>
    <thetext>Comment on attachment 176426
Patch

There&apos;s got to be a better way of doing this.  Passing in both the Frame and the DocumentLoader into the constructor is redundant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779130</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-29 10:14:10 -0800</bug_when>
    <thetext>Perhaps the DocumentLoader should be in charge of calling grantLoadLocalResources() when it is using substitute data?  I don&apos;t think there is a particular reason we need to call the function during initSecurityContext().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779165</commentid>
    <comment_count>11</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-11-29 10:32:03 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 176426 [details])
&gt; There&apos;s got to be a better way of doing this.  Passing in both the Frame and the DocumentLoader into the constructor is redundant.

Should Document&apos;s constructor just take a DocumentLoader* then?

(In reply to comment #10)
&gt; Perhaps the DocumentLoader should be in charge of calling grantLoadLocalResources() when it is using substitute data?  I don&apos;t think there is a particular reason we need to call the function during initSecurityContext().

That seems reasonable. The grantLoadLocalResources() call appears to be the only place that Document knows about SubstituteData, which makes it seem particularly out of place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780046</commentid>
    <comment_count>12</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-11-30 05:46:59 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Perhaps the DocumentLoader should be in charge of calling grantLoadLocalResources() when it is using substitute data?  I don&apos;t think there is a particular reason we need to call the function during initSecurityContext().
&gt; 
&gt; That seems reasonable. The grantLoadLocalResources() call appears to be the only place that Document knows about SubstituteData, which makes it seem particularly out of place.

Thanks for the hint, that makes it much simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780050</commentid>
    <comment_count>13</comment_count>
      <attachid>176949</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-11-30 05:51:53 -0800</bug_when>
    <thetext>Created attachment 176949
Patch

Move the check to FrameLoader::didBeginDocument.
It could also be done in DocumentLoader::commitData by returning the Document from DocumentWriter::begin if you prefer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780072</commentid>
    <comment_count>14</comment_count>
      <attachid>176949</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-30 06:34:25 -0800</bug_when>
    <thetext>Comment on attachment 176949
Patch

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

New failing tests:
inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780373</commentid>
    <comment_count>15</comment_count>
      <attachid>176949</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-30 13:37:11 -0800</bug_when>
    <thetext>Comment on attachment 176949
Patch

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

&gt; Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp:-2935
&gt; -    QEXPECT_FAIL(&quot;&quot;, &quot;https://bugs.webkit.org/show_bug.cgi?id=63245&quot;, Continue);

Does this mean that this test is testing change?  I&apos;m not familiar with this test harness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780377</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-30 13:37:32 -0800</bug_when>
    <thetext>&gt; New failing tests:
&gt; inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html

^^^ This test is flaky.  Sorry about the noise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781491</commentid>
    <comment_count>17</comment_count>
      <attachid>176949</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-12-03 08:45:35 -0800</bug_when>
    <thetext>Comment on attachment 176949
Patch

(In reply to comment #15)
&gt; Does this mean that this test is testing change?  I&apos;m not familiar with this test harness.

Thanks, yes it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781505</commentid>
    <comment_count>18</comment_count>
      <attachid>176949</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 09:02:52 -0800</bug_when>
    <thetext>Comment on attachment 176949
Patch

Clearing flags on attachment: 176949

Committed r136404: &lt;http://trac.webkit.org/changeset/136404&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781506</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 09:03:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176271</attachid>
            <date>2012-11-27 08:20:58 -0800</date>
            <delta_ts>2012-11-28 01:30:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68711-20121127171834.patch</filename>
            <type>text/plain</type>
            <size>49476</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM3OWQ3NjIwNDY0ZjQx
YTdjNmI4NzUzOTNiZGUyYzZhNTk3YmVhYi4uYmJiZDY5NGNlOWJhMjdiZGY1YzUyMGUyYTIzYmUx
YTBmMGI2MmIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAxMi0xMS0yNyAgSm9j
ZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEuY29tPgorCisgICAgICAgIERv
Y3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkgZmFpbHMgdG8gY2FsbCBzZWN1cml0eU9yaWdp
bigpLmdyYW50TG9hZExvY2FsUmVzb3VyY2VzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NzExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgdGhhdCB0aGVyZSBpcyBubyBndWFy
YW50ZWUgdGhhdCBGcmFtZUxvYWRlcjo6YWN0aXZlRG9jdW1lbnRMb2FkZXIKKyAgICAgICAgcmVm
ZXJzIHRvIHRoZSBEb2N1bWVudExvYWRlciB0aGF0IGNyZWF0ZWQgYSBEb2N1bWVudC4gSXQgY2Fu
IGN1cnJlbnRseSBiZSBhc3N1bWVkCisgICAgICAgIHRoYXQgdGhpcyBob2xkcyB0cnVlIGR1cmlu
ZyB0aGUgY29uc3RydWN0aW9uIG9mIGEgRG9jdW1lbnQsIGJ1dCByZWx5aW5nIG9uIHN1Y2gKKyAg
ICAgICAgYSBmcmFnaWxlIGFzc3VtcHRpb24gdG8gZ3JhbnQgYWNjZXNzIHRvIHRoZSB1c2VyJ3Mg
aGFyZCBkcml2ZSBpc24ndCBzYWZlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcGFzc2VzIGEgcG9p
bnRlciBvZiB0aGUgRG9jdW1lbnRMb2FkZXIgZGlyZWN0bHkgdG8gdGhlIERvY3VtZW50J3MKKyAg
ICAgICAgY29uc3RydWN0b3IgYW5kIHVzZXMgYSB3ZWFrIHJlZmVyZW5jZSB0byBwcmV2ZW50IGRh
bmdsaW5nIHBvaW50ZXJzLCB3aGljaCBoYXMKKyAgICAgICAgYmVlbiB0aGUgbW90aXZhdGlvbiBm
b3IgdGhlIGNoYW5nZSB0aGF0IHRyaWdnZXJlZCB0aGUgcmVncmVzc2lvbi4KKworICAgICAgICAt
IENoYW5nZSBEb2N1bWVudDo6bG9hZGVyIHRvIHVzZSB0aGUgd2VhayByZWZlcmVuY2UgdG8gYmUg
YWJsZSB0byByZWZlciB0bworICAgICAgICBvdXIgYXNzb2NpYXRlZCBEb2N1bWVudExvYWRlciBy
aWdodCBmcm9tIHRoZSBEb2N1bWVudCdzIGNvbnN0cnVjdGlvbgorICAgICAgICAtIENoYW5nZSBy
ZWZlcmVuY2VzIHRvIEZyYW1lTG9hZGVyOjphY3RpdmVEb2N1bWVudExvYWRlciB3aXRoaW4gRG9j
dW1lbnQKKyAgICAgICAgdG8gdXNlIHRoZSBEb2N1bWVudExvYWRlcldlYWtSZWYKKyAgICAgICAg
LSBSZW5hbWUgRG9jdW1lbnRXZWFrUmVmZXJlbmNlIHRvIERvY3VtZW50V2Vha1JlZiBmb3IgY29u
c2lzdGVuY3kgd2l0aAorICAgICAgICBEb2N1bWVudExvYWRlcldlYWtSZWYKKworICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdlYWtSZWY6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdlYWtSZWY6OkRvY3VtZW50V2Vha1Jl
Zik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
cHJvY2Vzc0h0dHBFcXVpdik6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtVGFza0NvbnRleHQ6
OlBlcmZvcm1UYXNrQ29udGV4dCk6CisgICAgICAgIChQZXJmb3JtVGFza0NvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBvc3RUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpsb2FkZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpjcmVhdGVYSFRNTCk6CisgICAgICAgIChEb2N1bWVudCk6CisKKyAg
ICAgICAgLSBNYWludGFpbiBEb2N1bWVudExvYWRlcidzIHdlYWsgcmVmZXJlbmNlIGFuZCBwYXNz
IGl0cyBwb2ludGVyIGRvd24KKyAgICAgICAgdG8gRG9jdW1lbnRXcml0dGVyIHRvIGFsbG93IGdp
dmluZyBpdCB0byBjcmVhdGVkIERvY3VtZW50cworCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExv
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6fkRvY3VtZW50TG9hZGVy
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKERvY3VtZW50
TG9hZGVyV2Vha1JlZik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcldlYWtSZWY6
OmxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcldlYWtSZWY6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcldlYWtSZWY6OkRvY3VtZW50TG9h
ZGVyV2Vha1JlZik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcldlYWtSZWY6OmNs
ZWFyUHRyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OndlYWtSZWYpOgorICAgICAgICAoRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRl
cjo6RG9jdW1lbnRXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6OmNy
ZWF0ZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjpiZWdpbik6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKERvY3VtZW50V3JpdGVyKToKKworICAgICAgICAtIE1vZGlmeSBhbGwgRG9jdW1l
bnQncyBzdWJjbGFzc2VzIHRvIHJlY2VpdmUgdGhlaXIgRG9jdW1lbnRMb2FkZXIncyBwb2ludGVy
CisgICAgICAgIHRocm91Z2ggdGhlIGNvbnN0cnVjdG9yCisKKyAgICAgICAgKiBkb20vRE9NSW1w
bGVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmNy
ZWF0ZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpjcmVh
dGVIVE1MRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5oOgorICAg
ICAgICAoRE9NSW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cFdpdGhDb250ZXh0KToK
KyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZUUERpcmVjdG9yeURvY3VtZW50OjpGVFBEaXJlY3RvcnlEb2N1bWVudCk6CisgICAgICAg
ICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGly
ZWN0b3J5RG9jdW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChGVFBEaXJlY3RvcnlEb2N1bWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERvY3VtZW50OjpIVE1MRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChIVE1M
RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZURvY3VtZW50OjpIVE1MVmlld1NvdXJjZURv
Y3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChI
VE1MVmlld1NvdXJjZURvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVudDo6SW1hZ2VEb2N1bWVudCk6CisgICAg
ICAgICogaHRtbC9JbWFnZURvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3Vt
ZW50OjpjcmVhdGUpOgorICAgICAgICAoSW1hZ2VEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9N
ZWRpYURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRG9jdW1lbnQ6Ok1lZGlh
RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvTWVkaWFEb2N1bWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFEb2N1bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKE1lZGlhRG9jdW1lbnQpOgor
ICAgICAgICAqIGh0bWwvUGx1Z2luRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luRG9jdW1lbnQ6OlBsdWdpbkRvY3VtZW50KToKKyAgICAgICAgKiBodG1sL1BsdWdpbkRvY3Vt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFBsdWdpbkRvY3VtZW50KToKKyAgICAgICAgKiBodG1sL1RleHREb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RG9jdW1lbnQ6OlRleHREb2N1bWVudCk6CisgICAgICAgICog
aHRtbC9UZXh0RG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHREb2N1bWVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKFRleHREb2N1bWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0RPTVBh
dGNoU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXRjaFN1cHBvcnQ6OnBhdGNo
RG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9QbGFjZWhvbGRlckRvY3VtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlckRvY3VtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhY2Vob2xkZXJEb2N1bWVudDo6UGxhY2Vob2xkZXJEb2N1bWVudCk6CisgICAgICAg
ICogbG9hZGVyL1NpbmtEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5rRG9jdW1l
bnQ6OlNpbmtEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL1NpbmtEb2N1bWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2lua0RvY3VtZW50OjpjcmVhdGUpOgorICAgICAgICAoU2lua0RvY3Vt
ZW50KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVTVkdGb250RGF0YSk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNW
R0RvY3VtZW50OjpkYXRhKToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OlNWR0RvY3VtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
RG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoU1ZHRG9jdW1lbnQpOgorICAgICAgICAqIHhtbC9ET01QYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NUGFyc2VyOjpwYXJzZUZyb21TdHJpbmcpOgorICAgICAgICAqIHhtbC9Y
TUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVz
cG9uc2VYTUwpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlhTTFRQcm9jZXNzb3I6OmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZSk6IFRyYW5zZmVy
IHRoZSBvd25lckRvY3VtZW50J3MgRG9jdW1lbnRMb2FkZXIKKyAgICAgICAgaW4gY2FzZSB3ZSBl
bmQgdXAgbmVlZGluZyBpdHMgRG9jdW1lbnRXcml0ZXI6OnJlcGxhY2VEb2N1bWVudCBpbiBTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMLgorCiAyMDEyLTExLTI2ICBGbG9y
aW4gTWFsaXRhICA8Zm1hbGl0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuZGVyU1ZHUmVz
b3VyY2VDb250YWluZXIgZG9lcyBub3QgY2xlYXIgY2FjaGVkIGRhdGEgb24gcmVtb3ZhbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwppbmRleCBmOGJhNjVmZjg0ODUyOWFjZjgyODE4NzUyNmVmZjYxMjk5MzMzYjRmLi45
MzRkYmMwYzlmNzk4ZTZjMDc3ODNkZDVlOWRiMzBmZDI0MGE0YjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDEyLTExLTI3ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50
dXJjb3R0ZUBkaWdpYS5jb20+CisKKyAgICAgICAgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRl
eHQoKSBmYWlscyB0byBjYWxsIHNlY3VyaXR5T3JpZ2luKCkuZ3JhbnRMb2FkTG9jYWxSZXNvdXJj
ZXMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg3
MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRl
c3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OnRl
c3RTdG9wU2NoZWR1bGVkUGFnZVJlZnJlc2gpOiBVbm1hcmsgdGhlIGV4cGVjdGVkIGZhaWx1cmUu
CisKIDIwMTItMTEtMjYgIFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBnbWFpbC5jb20+CiAK
ICAgICAgICAgW1F0XSBSRUdSRVNTSU9OKHIxMzU1NzUpOiBJdCBtYWRlIGFsbCB0ZXN0cyBhc3Nl
cnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCmluZGV4IDI3NjkzYjM0
MDkzNzk3MzQ4OGIxNmNlNjcyNGUyODZhNzVjYjg4NmYuLjM1YzE4OWFjYmUwNmRiOTQ3ZTc1NDgz
NWE2OGU3ODc0ZWZlYTg3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBs
ZW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9u
LmNwcApAQCAtMjg3LDEzICsyODcsMTMgQEAgUGFzc1JlZlB0cjxEb2N1bWVudD4gRE9NSW1wbGVt
ZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVIKICAgICBS
ZWZQdHI8RG9jdW1lbnQ+IGRvYzsKICNpZiBFTkFCTEUoU1ZHKQogICAgIGlmIChuYW1lc3BhY2VV
UkkgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSSkKLSAgICAgICAgZG9jID0gU1ZHRG9jdW1l
bnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAgICAgICBkb2MgPSBTVkdEb2N1bWVudDo6Y3JlYXRl
KDAsIDAsIEtVUkwoKSk7CiAgICAgZWxzZQogI2VuZGlmCiAgICAgaWYgKG5hbWVzcGFjZVVSSSA9
PSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKQotICAgICAgICBkb2MgPSBEb2N1bWVudDo6
Y3JlYXRlWEhUTUwoMCwgS1VSTCgpKTsKKyAgICAgICAgZG9jID0gRG9jdW1lbnQ6OmNyZWF0ZVhI
VE1MKDAsIDAsIEtVUkwoKSk7CiAgICAgZWxzZQotICAgICAgICBkb2MgPSBEb2N1bWVudDo6Y3Jl
YXRlKDAsIEtVUkwoKSk7CisgICAgICAgIGRvYyA9IERvY3VtZW50OjpjcmVhdGUoMCwgMCwgS1VS
TCgpKTsKIAogICAgIGRvYy0+c2V0U2VjdXJpdHlPcmlnaW4obV9kb2N1bWVudC0+c2VjdXJpdHlP
cmlnaW4oKSk7CiAgICAgZG9jLT5zZXRDb250ZXh0RmVhdHVyZXMobV9kb2N1bWVudC0+Y29udGV4
dEZlYXR1cmVzKCkpOwpAQCAtMzY5LDcgKzM2OSw3IEBAIGJvb2wgRE9NSW1wbGVtZW50YXRpb246
OmlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIFBhc3NSZWZQdHI8SFRN
TERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlSFRNTERvY3VtZW50KGNvbnN0IFN0
cmluZyYgdGl0bGUpCiB7Ci0gICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gZCA9IEhUTUxEb2N1bWVu
dDo6Y3JlYXRlKDAsIEtVUkwoKSk7CisgICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gZCA9IEhUTUxE
b2N1bWVudDo6Y3JlYXRlKDAsIDAsIEtVUkwoKSk7CiAgICAgZC0+b3BlbigpOwogICAgIGQtPndy
aXRlKCI8IWRvY3R5cGUgaHRtbD48aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiIpOwogICAgIGlm
ICghdGl0bGUuaXNOdWxsKCkpCkBAIC0zNzksMjEgKzM3OSwyMSBAQCBQYXNzUmVmUHRyPEhUTUxE
b2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJp
bmcmIHRpdAogICAgIHJldHVybiBkLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVu
dD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgdHlwZSwg
RnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaW5WaWV3U291cmNlTW9kZSkKK1Bh
c3NSZWZQdHI8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25z
dCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29u
c3QgS1VSTCYgdXJsLCBib29sIGluVmlld1NvdXJjZU1vZGUpCiB7CiAgICAgaWYgKGluVmlld1Nv
dXJjZU1vZGUpCi0gICAgICAgIHJldHVybiBIVE1MVmlld1NvdXJjZURvY3VtZW50OjpjcmVhdGUo
ZnJhbWUsIHVybCwgdHlwZSk7CisgICAgICAgIHJldHVybiBIVE1MVmlld1NvdXJjZURvY3VtZW50
OjpjcmVhdGUoZnJhbWUsIGxvYWRlciwgdXJsLCB0eXBlKTsKIAogICAgIC8vIFBsdWdpbnMgY2Fu
bm90IHRha2UgSFRNTCBhbmQgWEhUTUwgZnJvbSB1cywgYW5kIHdlIGRvbid0IGV2ZW4gbmVlZCB0
byBpbml0aWFsaXplIHRoZSBwbHVnaW4gZGF0YWJhc2UgZm9yIHRob3NlLgogICAgIGlmICh0eXBl
ID09ICJ0ZXh0L2h0bWwiKQotICAgICAgICByZXR1cm4gSFRNTERvY3VtZW50OjpjcmVhdGUoZnJh
bWUsIHVybCk7CisgICAgICAgIHJldHVybiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgbG9h
ZGVyLCB1cmwpOwogICAgIGlmICh0eXBlID09ICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiKQotICAg
ICAgICByZXR1cm4gRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKGZyYW1lLCB1cmwpOworICAgICAgICBy
ZXR1cm4gRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKGZyYW1lLCBsb2FkZXIsIHVybCk7CiAKICNpZiBF
TkFCTEUoRlRQRElSKQogICAgIC8vIFBsdWdpbnMgY2Fubm90IHRha2UgRlRQIGZyb20gdXMgZWl0
aGVyCiAgICAgaWYgKHR5cGUgPT0gImFwcGxpY2F0aW9uL3gtZnRwLWRpcmVjdG9yeSIpCi0gICAg
ICAgIHJldHVybiBGVFBEaXJlY3RvcnlEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAg
ICAgICByZXR1cm4gRlRQRGlyZWN0b3J5RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgbG9hZGVyLCB1
cmwpOwogI2VuZGlmCiAKICAgICBQbHVnaW5EYXRhKiBwbHVnaW5EYXRhID0gMDsKQEAgLTQwMywz
NCArNDAzLDM0IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVh
dGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lCiAgICAgLy8gUERGIGlzIG9uZSBp
bWFnZSB0eXBlIGZvciB3aGljaCBhIHBsdWdpbiBjYW4gb3ZlcnJpZGUgYnVpbHQtaW4gc3VwcG9y
dC4KICAgICAvLyBXZSBkbyBub3Qgd2FudCBRdWlja1RpbWUgdG8gdGFrZSBvdmVyIGFsbCBpbWFn
ZSB0eXBlcywgb2J2aW91c2x5LgogICAgIGlmICgodHlwZSA9PSAiYXBwbGljYXRpb24vcGRmIiB8
fCB0eXBlID09ICJ0ZXh0L3BkZiIpICYmIHBsdWdpbkRhdGEgJiYgcGx1Z2luRGF0YS0+c3VwcG9y
dHNNaW1lVHlwZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVhdGUo
ZnJhbWUsIHVybCk7CisgICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZyYW1l
LCBsb2FkZXIsIHVybCk7CiAgICAgaWYgKEltYWdlOjpzdXBwb3J0c1R5cGUodHlwZSkpCi0gICAg
ICAgIHJldHVybiBJbWFnZURvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CisgICAgICAgIHJl
dHVybiBJbWFnZURvY3VtZW50OjpjcmVhdGUoZnJhbWUsIGxvYWRlciwgdXJsKTsKIAogI2lmIEVO
QUJMRShWSURFTykKICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSB0eXBlIGNhbiBiZSBwbGF5
ZWQgYnkgb3VyIE1lZGlhUGxheWVyLCBpZiBzbyBjcmVhdGUgYSBNZWRpYURvY3VtZW50CiAgICAg
Ly8gS2V5IHN5c3RlbSBpcyBub3QgYXBwbGljYWJsZSBoZXJlLgogICAgIERPTUltcGxlbWVudGF0
aW9uU3VwcG9ydHNUeXBlQ2xpZW50IGNsaWVudChmcmFtZSAmJiBmcmFtZS0+c2V0dGluZ3MoKSAm
JiBmcmFtZS0+c2V0dGluZ3MoKS0+bmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSwgdXJsLmhvc3Qo
KSk7CiAgICAgaWYgKE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUoQ29udGVudFR5cGUodHlwZSks
IFN0cmluZygpLCB1cmwsICZjbGllbnQpKQotICAgICAgICAgcmV0dXJuIE1lZGlhRG9jdW1lbnQ6
OmNyZWF0ZShmcmFtZSwgdXJsKTsKKyAgICAgICAgcmV0dXJuIE1lZGlhRG9jdW1lbnQ6OmNyZWF0
ZShmcmFtZSwgbG9hZGVyLCB1cmwpOwogI2VuZGlmCiAKICAgICAvLyBFdmVyeXRoaW5nIGVsc2Ug
ZXhjZXB0IHRleHQvcGxhaW4gY2FuIGJlIG92ZXJyaWRkZW4gYnkgcGx1Z2lucy4gSW4gcGFydGlj
dWxhciwgQWRvYmUgU1ZHIFZpZXdlciBzaG91bGQgYmUgdXNlZCBmb3IgU1ZHLCBpZiBpbnN0YWxs
ZWQuCiAgICAgLy8gRGlzYWxsb3dpbmcgcGx1Zy1pbnMgdG8gdXNlIHRleHQvcGxhaW4gcHJldmVu
dHMgcGx1Zy1pbnMgZnJvbSBoaWphY2tpbmcgYSBmdW5kYW1lbnRhbCB0eXBlIHRoYXQgdGhlIGJy
b3dzZXIgaXMgZXhwZWN0ZWQgdG8gaGFuZGxlLAogICAgIC8vIGFuZCBhbHNvIHNlcnZlcyBhcyBh
biBvcHRpbWl6YXRpb24gdG8gcHJldmVudCBsb2FkaW5nIHRoZSBwbHVnLWluIGRhdGFiYXNlIGlu
IHRoZSBjb21tb24gY2FzZS4KICAgICBpZiAodHlwZSAhPSAidGV4dC9wbGFpbiIgJiYgcGx1Z2lu
RGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0c01pbWVUeXBlKHR5cGUpKSAKLSAgICAgICAgcmV0
dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CisgICAgICAgIHJldHVybiBQ
bHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCBsb2FkZXIsIHVybCk7CiAgICAgaWYgKGlzVGV4
dE1JTUVUeXBlKHR5cGUpKQotICAgICAgICByZXR1cm4gVGV4dERvY3VtZW50OjpjcmVhdGUoZnJh
bWUsIHVybCk7CisgICAgICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgbG9h
ZGVyLCB1cmwpOwogCiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAodHlwZSA9PSAiaW1hZ2Uvc3Zn
K3htbCIpCi0gICAgICAgIHJldHVybiBTVkdEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwor
ICAgICAgICByZXR1cm4gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgbG9hZGVyLCB1cmwpOwog
I2VuZGlmCiAgICAgaWYgKGlzWE1MTUlNRVR5cGUodHlwZSkpCi0gICAgICAgIHJldHVybiBEb2N1
bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gRG9jdW1lbnQ6OmNyZWF0
ZShmcmFtZSwgbG9hZGVyLCB1cmwpOwogCi0gICAgcmV0dXJuIEhUTUxEb2N1bWVudDo6Y3JlYXRl
KGZyYW1lLCB1cmwpOworICAgIHJldHVybiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgbG9h
ZGVyLCB1cmwpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1w
bGVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCmlu
ZGV4IGRmZmI1NDllM2ZiZTdmYWE5MGM1OTE4NzViOTM1YzBlZWZjNTNkYjIuLmUzNzhkMDZkZDAx
ZjVmYzhkNjlkMGZkMDY3YjQ1MDZjMTNhYjdmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBs
ZW1lbnRhdGlvbi5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEhU
TUxEb2N1bWVudD4gY3JlYXRlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgdGl0bGUpOwogCiAg
ICAgLy8gT3RoZXIgbWV0aG9kcyAobm90IHBhcnQgb2YgRE9NKQotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBGcmFt
ZSosIGNvbnN0IEtVUkwmLCBib29sIGluVmlld1NvdXJjZU1vZGUpOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBG
cmFtZSosIERvY3VtZW50TG9hZGVyKiwgY29uc3QgS1VSTCYsIGJvb2wgaW5WaWV3U291cmNlTW9k
ZSk7CiAKICAgICBzdGF0aWMgYm9vbCBpc1hNTE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5
cGUpOwogICAgIHN0YXRpYyBib29sIGlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMzc1OWM0NDJjOTQ0YmE2YmI2ODQ1NjNi
YjYyMWMzOTU4YzE4NjA3Ny4uZGVmN2NlMDk3YThjYTRiMWQwYjI0YWVkMDhiMTU3ODAzZWRkZjU2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MDEsMTEgKzQwMSwxMSBAQCBzdGF0aWMg
dm9pZCBwcmludE5hdmlnYXRpb25FcnJvck1lc3NhZ2UoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJM
JiBhY3RpdmVVUkwpCiAKIHN0YXRpYyBIYXNoU2V0PERvY3VtZW50Kj4qIGRvY3VtZW50c1RoYXRO
ZWVkU3R5bGVSZWNhbGMgPSAwOwogCi1jbGFzcyBEb2N1bWVudFdlYWtSZWZlcmVuY2UgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RG9jdW1lbnRXZWFrUmVmZXJlbmNlPiB7CitjbGFzcyBE
b2N1bWVudFdlYWtSZWYgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RG9jdW1lbnRXZWFr
UmVmPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRXZWFrUmVmZXJl
bmNlPiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERv
Y3VtZW50V2Vha1JlZj4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRG9jdW1lbnRXZWFrUmVmZXJlbmNlKGRvY3VtZW50KSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRG9jdW1lbnRXZWFrUmVmKGRvY3VtZW50KSk7CiAg
ICAgfQogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkKQEAgLTQyMSw3ICs0MjEsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIERvY3VtZW50V2Vha1JlZmVyZW5jZShEb2N1bWVu
dCogZG9jdW1lbnQpCisgICAgRG9jdW1lbnRXZWFrUmVmKERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKQEAgLTQzMiw3ICs0MzIsNyBAQCBwcml2YXRlOgogCiB1aW50NjRfdCBEb2N1
bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9IDA7CiAKLURvY3VtZW50OjpEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKK0Rv
Y3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNv
bnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICA6IENvbnRhaW5l
ck5vZGUoMCwgQ3JlYXRlRG9jdW1lbnQpCiAgICAgLCBUcmVlU2NvcGUodGhpcykKICAgICAsIG1f
Z3VhcmRSZWZDb3VudCgwKQpAQCAtNDc3LDcgKzQ3Nyw4IEBAIERvY3VtZW50OjpEb2N1bWVudChG
cmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkK
ICAgICAsIG1faXNTcmNkb2NEb2N1bWVudChmYWxzZSkKICAgICAsIG1fcmVuZGVyZXIoMCkKICAg
ICAsIG1fZXZlbnRRdWV1ZShEb2N1bWVudEV2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKLSAgICAs
IG1fd2Vha1JlZmVyZW5jZShEb2N1bWVudFdlYWtSZWZlcmVuY2U6OmNyZWF0ZSh0aGlzKSkKKyAg
ICAsIG1fd2Vha1JlZihEb2N1bWVudFdlYWtSZWY6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fZG9j
dW1lbnRMb2FkZXJXZWFrUmVmKGxvYWRlciA/IGxvYWRlci0+d2Vha1JlZigpIDogMCkKICAgICAs
IG1faWRBdHRyaWJ1dGVOYW1lKGlkQXR0cikKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAg
ICAgLCBtX2FyZUtleXNFbmFibGVkSW5GdWxsU2NyZWVuKDApCkBAIC01MjUsMTAgKzUyNiw3IEBA
IERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBp
c1hIVE1MLCBib29sIGlzSFRNTCkKIAogICAgIG1fbWFya2VycyA9IGFkb3B0UHRyKG5ldyBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIpOwogCi0gICAgaWYgKG1fZnJhbWUpCi0gICAgICAgIG1fY2Fj
aGVkUmVzb3VyY2VMb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2Fk
ZXIoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICBpZiAoIW1fY2FjaGVkUmVzb3VyY2VM
b2FkZXIpCi0gICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6Y3JlYXRlKDApOworICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBsb2FkZXIgPyBs
b2FkZXItPmNhY2hlZFJlc291cmNlTG9hZGVyKCkgOiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlKDApOwogICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnNldERvY3VtZW50KHRoaXMpOwog
CiAjaWYgRU5BQkxFKExJTktfUFJFUkVOREVSKQpAQCAtNjQ2LDcgKzY0NCw3IEBAIERvY3VtZW50
Ojp+RG9jdW1lbnQoKQogICAgIGlmIChtX2VsZW1TaGVldCkKICAgICAgICAgbV9lbGVtU2hlZXQt
PmNsZWFyT3duZXJOb2RlKCk7CiAKLSAgICBtX3dlYWtSZWZlcmVuY2UtPmNsZWFyKCk7CisgICAg
bV93ZWFrUmVmLT5jbGVhcigpOwogCiAgICAgY2xlYXJTdHlsZVJlc29sdmVyKCk7IC8vIFdlIG5l
ZWQgdG8gZGVzdG9yeSBDU1NGb250U2VsZWN0b3IgYmVmb3JlIGRlc3Ryb3lpbmcgbV9jYWNoZWRS
ZXNvdXJjZUxvYWRlci4KIApAQCAtMjg3OCw4ICsyODc2LDkgQEAgdm9pZCBEb2N1bWVudDo6cHJv
Y2Vzc0h0dHBFcXVpdihjb25zdCBTdHJpbmcmIGVxdWl2LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQp
CiAgICAgICAgIGlmIChmcmFtZSkgewogICAgICAgICAgICAgRnJhbWVMb2FkZXIqIGZyYW1lTG9h
ZGVyID0gZnJhbWUtPmxvYWRlcigpOwogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyByZXF1ZXN0
SWRlbnRpZmllciA9IDA7Ci0gICAgICAgICAgICBpZiAoZnJhbWVMb2FkZXItPmFjdGl2ZURvY3Vt
ZW50TG9hZGVyKCkgJiYgZnJhbWVMb2FkZXItPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPm1haW5S
ZXNvdXJjZUxvYWRlcigpKQotICAgICAgICAgICAgICAgIHJlcXVlc3RJZGVudGlmaWVyID0gZnJh
bWVMb2FkZXItPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZUxvYWRlcigpLT5p
ZGVudGlmaWVyKCk7CisgICAgICAgICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIg
PSBsb2FkZXIoKTsKKyAgICAgICAgICAgIGlmIChkb2N1bWVudExvYWRlciAmJiBkb2N1bWVudExv
YWRlci0+bWFpblJlc291cmNlTG9hZGVyKCkpCisgICAgICAgICAgICAgICAgcmVxdWVzdElkZW50
aWZpZXIgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlTG9hZGVyKCktPmlkZW50aWZpZXIo
KTsKICAgICAgICAgICAgIGlmIChmcmFtZUxvYWRlci0+c2hvdWxkSW50ZXJydXB0TG9hZEZvclhG
cmFtZU9wdGlvbnMoY29udGVudCwgdXJsKCksIHJlcXVlc3RJZGVudGlmaWVyKSkgewogICAgICAg
ICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gIlJlZnVzZWQgdG8gZGlzcGxheSAnIiArIHVybCgp
LnN0cmluZygpICsgIicgaW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRpb25z
JyB0byAnIiArIGNvbnRlbnQgKyAiJy4iOwogICAgICAgICAgICAgICAgIGZyYW1lTG9hZGVyLT5z
dG9wQWxsTG9hZGVycygpOwpAQCAtNDgwNiwxMyArNDgwNSwxMyBAQCB2b2lkIERvY3VtZW50Ojph
ZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdl
TGV2ZWwgbAogc3RydWN0IFBlcmZvcm1UYXNrQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUGVyZm9ybVRhc2tDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgUGVyZm9ybVRhc2tDb250ZXh0KFBhc3NSZWZQdHI8RG9jdW1lbnRXZWFrUmVmZXJl
bmNlPiBkb2N1bWVudFJlZmVyZW5jZSwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPiB0YXNrKQorICAgIFBlcmZvcm1UYXNrQ29udGV4dChQYXNzUmVmUHRyPERvY3VtZW50
V2Vha1JlZj4gZG9jdW1lbnRSZWZlcmVuY2UsIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4gdGFzaykKICAgICAgICAgOiBkb2N1bWVudFJlZmVyZW5jZShkb2N1bWVudFJl
ZmVyZW5jZSkKICAgICAgICAgLCB0YXNrKHRhc2spCiAgICAgewogICAgIH0KIAotICAgIFJlZlB0
cjxEb2N1bWVudFdlYWtSZWZlcmVuY2U+IGRvY3VtZW50UmVmZXJlbmNlOworICAgIFJlZlB0cjxE
b2N1bWVudFdlYWtSZWY+IGRvY3VtZW50UmVmZXJlbmNlOwogICAgIE93blB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPiB0YXNrOwogfTsKIApAQCAtNDgzOCw3ICs0ODM3LDcgQEAgdm9p
ZCBEb2N1bWVudDo6ZGlkUmVjZWl2ZVRhc2sodm9pZCogdW50eXBlZENvbnRleHQpCiAKIHZvaWQg
RG9jdW1lbnQ6OnBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4gdGFzaykKIHsKLSAgICBjYWxsT25N
YWluVGhyZWFkKGRpZFJlY2VpdmVUYXNrLCBuZXcgUGVyZm9ybVRhc2tDb250ZXh0KG1fd2Vha1Jl
ZmVyZW5jZSwgdGFzaykpOworICAgIGNhbGxPbk1haW5UaHJlYWQoZGlkUmVjZWl2ZVRhc2ssIG5l
dyBQZXJmb3JtVGFza0NvbnRleHQobV93ZWFrUmVmLCB0YXNrKSk7CiB9CiAKIHZvaWQgRG9jdW1l
bnQ6OnBlbmRpbmdUYXNrc1RpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+KikKQEAgLTU2NjEsMTcg
KzU2NjAsOSBAQCBib29sIERvY3VtZW50OjpzaG91bGREaXNwbGF5U2VhbWxlc3NseVdpdGhQYXJl
bnQoKSBjb25zdAogCiBEb2N1bWVudExvYWRlciogRG9jdW1lbnQ6OmxvYWRlcigpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX2ZyYW1lKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBEb2N1bWVu
dExvYWRlciogbG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCk7Ci0g
ICAgaWYgKCFsb2FkZXIpCisgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyV2Vha1JlZikKICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkgIT0gdGhpcykK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJuIGxvYWRlcjsKKyAgICByZXR1cm4g
bV9kb2N1bWVudExvYWRlcldlYWtSZWYtPmxvYWRlcigpOwogfQogCiAjaWYgRU5BQkxFKE1JQ1JP
REFUQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMDc1YjAwZTliMzBlMDliYTJhMjkzODQwMjQ4
ODIzNmQ2MGY4Y2M5My4uOWNmYzk5OWQxZTY5YmIyMTc0NjFlY2VhMThiYzNkYzkwYTI1NzM3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTc1LDExICs3NSwxMiBAQCBjbGFzcyBEYXRhYmFzZTsK
IGNsYXNzIERhdGFiYXNlVGhyZWFkOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERv
Y3VtZW50TG9hZGVyOworY2xhc3MgRG9jdW1lbnRMb2FkZXJXZWFrUmVmOwogY2xhc3MgRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyOwogY2xhc3MgRG9jdW1lbnRQYXJzZXI7CiBjbGFzcyBEb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uOwogY2xhc3MgRG9jdW1lbnRUeXBlOwotY2xhc3MgRG9jdW1l
bnRXZWFrUmVmZXJlbmNlOworY2xhc3MgRG9jdW1lbnRXZWFrUmVmOwogY2xhc3MgRWxlbWVudDsK
IGNsYXNzIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOwogY2xhc3MgRW50aXR5UmVmZXJlbmNlOwpAQCAt
MjExLDEzICsyMTIsMTMgQEAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBPd25QdHI8SW1tdXRh
YmxlQXR0cmlidXRlRGF0YUNhY2hlRW50cnk+LCBBbHJlYWR5SGFzaGUKIAogY2xhc3MgRG9jdW1l
bnQgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSwgcHVibGljIFRyZWVTY29wZSwgcHVibGljIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3Vt
ZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIGNvbnN0IEtVUkwmIHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRG9jdW1lbnQoZnJhbWUsIHVybCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRG9jdW1lbnQoZnJhbWUsIGxvYWRlciwgdXJsLCBmYWxzZSwgZmFsc2UpKTsK
ICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZVhIVE1MKEZyYW1l
KiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50
PiBjcmVhdGVYSFRNTChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IEtVUkwmIHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRG9jdW1lbnQo
ZnJhbWUsIHVybCwgdHJ1ZSwgZmFsc2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBE
b2N1bWVudChmcmFtZSwgbG9hZGVyLCB1cmwsIHRydWUsIGZhbHNlKSk7CiAgICAgfQogICAgIHZp
cnR1YWwgfkRvY3VtZW50KCk7CiAKQEAgLTExNzQsNyArMTE3NSw3IEBAIHB1YmxpYzoKICNlbmRp
ZgogCiBwcm90ZWN0ZWQ6Ci0gICAgRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJiwgYm9vbCBp
c1hIVE1MLCBib29sIGlzSFRNTCk7CisgICAgRG9jdW1lbnQoRnJhbWUqLCBEb2N1bWVudExvYWRl
ciosIGNvbnN0IEtVUkwmLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBkaWRVcGRhdGVTZWN1cml0eU9yaWdpbigpIE9WRVJSSURFOwogCkBAIC0xNDU0LDcg
KzE0NTUsOCBAQCBwcml2YXRlOgogICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKICAgICBS
ZWZQdHI8RG9jdW1lbnRFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CiAKLSAgICBSZWZQdHI8RG9j
dW1lbnRXZWFrUmVmZXJlbmNlPiBtX3dlYWtSZWZlcmVuY2U7CisgICAgUmVmUHRyPERvY3VtZW50
V2Vha1JlZj4gbV93ZWFrUmVmOworICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcldlYWtSZWY+IG1f
ZG9jdW1lbnRMb2FkZXJXZWFrUmVmOwogCiAgICAgSGFzaFNldDxNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIqPiBtX21lZGlhQ2FuU3RhcnRMaXN0ZW5lcnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cAppbmRleCBmNmJmOTcwMTVhY2IxYjI1ODM2N2FlZWFjMDUzMzE5MDE3MWY2ZTI0Li4xZDRiNTQ1
N2MwNjNmOGE4ZjRmNGVlZTlkOTcwMGFmNDM3ZTBlMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwCkBAIC03MjgsNyArNzI4LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBj
cmVhdGVGcmFnbWVudEZyb21NYXJrdXBXaXRoQ29udGV4dChEb2N1bWVudCogZG9jdW0KICAgICB0
YWdnZWRNYXJrdXAuYXBwZW5kKG1hcmt1cC5zdWJzdHJpbmcoZnJhZ21lbnRFbmQpKTsKIAogICAg
IFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiB0YWdnZWRGcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50
RnJvbU1hcmt1cChkb2N1bWVudCwgdGFnZ2VkTWFya3VwLnRvU3RyaW5nKCksIGJhc2VVUkwsIHNj
cmlwdGluZ1Blcm1pc3Npb24pOwotICAgIFJlZlB0cjxEb2N1bWVudD4gdGFnZ2VkRG9jdW1lbnQg
PSBEb2N1bWVudDo6Y3JlYXRlKDAsIEtVUkwoKSk7CisgICAgUmVmUHRyPERvY3VtZW50PiB0YWdn
ZWREb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUoMCwgMCwgS1VSTCgpKTsKICAgICB0YWdnZWRE
b2N1bWVudC0+c2V0Q29udGV4dEZlYXR1cmVzKGRvY3VtZW50LT5jb250ZXh0RmVhdHVyZXMoKSk7
CiAgICAgdGFnZ2VkRG9jdW1lbnQtPnRha2VBbGxDaGlsZHJlbkZyb20odGFnZ2VkRnJhZ21lbnQu
Z2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
CmluZGV4IGMxYTAxNTBlMzEwMWVhNDU3MmJjMjM0MTA1NWRjYTk4NmY0ZjEwOWEuLjYzNmVkM2Ey
ZTUzMzAzN2ZlOGI1ZTk2MGZhYThiOGE5MDUzYTZhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC00MjgsOCArNDI4LDggQEAgdm9pZCBGVFBE
aXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6ZmluaXNoKCkKICAgICBIVE1MRG9jdW1lbnRQYXJzZXI6
OmZpbmlzaCgpOwogfQogCi1GVFBEaXJlY3RvcnlEb2N1bWVudDo6RlRQRGlyZWN0b3J5RG9jdW1l
bnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCi0gICAgOiBIVE1MRG9jdW1lbnQoZnJh
bWUsIHVybCkKK0ZUUERpcmVjdG9yeURvY3VtZW50OjpGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFt
ZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHVybCkKKyAgICA6
IEhUTUxEb2N1bWVudChmcmFtZSwgbG9hZGVyLCB1cmwpCiB7CiAjaWYgIUxPR19ESVNBQkxFRAog
ICAgIExvZ0ZUUC5zdGF0ZSA9IFdURkxvZ0NoYW5uZWxPbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RlRQRGlyZWN0b3J5RG9jdW1lbnQuaAppbmRleCBlN2U1MmY3YTcyNGIxMTNhMDIwMzhiNzQzMmU1
NjU5N2JkNDcxZmY5Li43ZWM1YjVmNDI5MTFiZmU1N2EwMzM1NGUzZjAzZjk0ZDdmNzJiNmQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5oCkBAIC0zMywxMyAr
MzMsMTMgQEAgY2xhc3MgRE9NSW1wbGVtZW50YXRpb247CiAgICAgCiBjbGFzcyBGVFBEaXJlY3Rv
cnlEb2N1bWVudCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEZUUERpcmVjdG9yeURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25z
dCBLVVJMJiB1cmwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RlRQRGlyZWN0b3J5RG9jdW1lbnQ+
IGNyZWF0ZShGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwm
IHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRlRQRGlyZWN0b3J5RG9j
dW1lbnQoZnJhbWUsIHVybCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZUUERpcmVj
dG9yeURvY3VtZW50KGZyYW1lLCBsb2FkZXIsIHVybCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICBGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwmKTsKKyAgICBGVFBEaXJl
Y3RvcnlEb2N1bWVudChGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgY29uc3QgS1VSTCYpOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CiB9Owog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4IGI5ZDc2N2UzMDRiYzlh
NWMwZDNjNjQwNzU5ODU4NzNhN2MzNGMyNGQuLjYxMmRlNTc3MTM4ZTdkYmI5ZjMyYjlmNGQwNjU0
NDE2M2FiMWM3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAgLTgwLDgg
KzgwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCi1IVE1MRG9jdW1lbnQ6OkhUTUxEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwm
IHVybCkKLSAgICA6IERvY3VtZW50KGZyYW1lLCB1cmwsIGZhbHNlLCB0cnVlKQorSFRNTERvY3Vt
ZW50OjpIVE1MRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCBLVVJMJiB1cmwpCisgICAgOiBEb2N1bWVudChmcmFtZSwgbG9hZGVyLCB1cmwsIGZhbHNl
LCB0cnVlKQogewogICAgIGNsZWFyWE1MVmVyc2lvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmgKaW5kZXggZDM5ZjM5MmFhYTQyYjgxOTM3NGE1YTFhYWFjMjI2NTEzYjQ1OTc1Zi4u
NTA2MmJjNTBkZTYyNGQ1ZmFiM2E3ZGFiYWRjNWE1NTA2OGVhZTdmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEb2N1bWVudC5oCkBAIC0zNSw5ICszNSw5IEBAIGNsYXNzIEhUTUxFbGVtZW50OwogCiBj
bGFzcyBIVE1MRG9jdW1lbnQgOiBwdWJsaWMgRG9jdW1lbnQsIHB1YmxpYyBDYWNoZWRSZXNvdXJj
ZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERvY3VtZW50PiBj
cmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SFRNTERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9h
ZGVyLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SFRNTERvY3VtZW50KGZyYW1lLCBsb2FkZXIsIHVybCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5I
VE1MRG9jdW1lbnQoKTsKIApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNF
eHRyYU5hbWVkSXRlbShBdG9taWNTdHJpbmdJbXBsKiBuYW1lKTsKIAogcHJvdGVjdGVkOgotICAg
IEhUTUxEb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwmKTsKKyAgICBIVE1MRG9jdW1lbnQoRnJh
bWUqLCBEb2N1bWVudExvYWRlciosIGNvbnN0IEtVUkwmKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcm
IHRhZ05hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWV3U291cmNlRG9jdW1lbnQuY3BwCmluZGV4IGFiZjI0MzgzNmQzYjczNDBlYmQxMzhkMDYzM2Ji
NTAyYWJhODk5NDIuLjgwZDI3NDllOWY1NGM3MWYwMzllYzQxMjhjMjE3ZjFmMDNiNzYxYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcApAQCAt
NDksOCArNDksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKLUhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQo
RnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi0g
ICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCkKK0hUTUxWaWV3U291cmNlRG9jdW1lbnQ6OkhU
TUxWaWV3U291cmNlRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVy
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCisgICAgOiBIVE1MRG9j
dW1lbnQoZnJhbWUsIGxvYWRlciwgdXJsKQogICAgICwgbV90eXBlKG1pbWVUeXBlKQogewogICAg
IHN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPnNldFVzZXNCZWZvcmVBZnRlclJ1bGVzT3ZlcnJpZGUo
dHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCmlu
ZGV4IGM1YzY2ODI4ZTgzNzE4MjVkNDcwYzBiZGJiZGUwMzA4M2U1MjE3NTMuLjIyNDhiMzg4MWQy
MTljNTdjZjgxNTk2NGY2OGVhMGM4M2ZlM2E2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCkBAIC0zNSwxNSArMzUsMTUgQEAgY2xhc3MgSFRNTFRv
a2VuOwogCiBjbGFzcyBIVE1MVmlld1NvdXJjZURvY3VtZW50IDogcHVibGljIEhUTUxEb2N1bWVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFZpZXdTb3VyY2VEb2N1bWVu
dD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxWaWV3U291cmNlRG9jdW1lbnQ+IGNy
ZWF0ZShGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSFRNTFZpZXdTb3VyY2VEb2N1bWVudChmcmFtZSwgdXJsLCBtaW1lVHlwZSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxWaWV3U291cmNlRG9jdW1lbnQoZnJhbWUsIGxv
YWRlciwgdXJsLCBtaW1lVHlwZSkpOwogICAgIH0KIAogICAgIHZvaWQgYWRkU291cmNlKGNvbnN0
IFN0cmluZyYsIEhUTUxUb2tlbiYpOwogCiBwcml2YXRlOgotICAgIEhUTUxWaWV3U291cmNlRG9j
dW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAg
SFRNTFZpZXdTb3VyY2VEb2N1bWVudChGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgY29uc3QgS1VS
TCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gUmV0dXJucyBIVE1MVmlld1Nv
dXJjZVBhcnNlciBvciBUZXh0RG9jdW1lbnRQYXJzZXIgYmFzZWQgb24gbV90eXBlLgogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCA1MWEwMzA0YTVkMGM1MDQzNDRiNDU4YTNj
MmFjYzE2M2JlYTMwMmMxLi5mNTEzNjZhZDg3OWVkZTYxZDYzZjI4N2U0YjlkYzZhY2U4MTNiYWI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTE3NCw4ICsxNzQsOCBA
QCB2b2lkIEltYWdlRG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpCiAgICAgCiAvLyAtLS0tLS0tLQog
Ci1JbWFnZURvY3VtZW50OjpJbWFnZURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYg
dXJsKQotICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCitJbWFnZURvY3VtZW50OjpJbWFn
ZURvY3VtZW50KEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VS
TCYgdXJsKQorICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCBsb2FkZXIsIHVybCkKICAgICAsIG1f
aW1hZ2VFbGVtZW50KDApCiAgICAgLCBtX2ltYWdlU2l6ZUlzS25vd24oZmFsc2UpCiAgICAgLCBt
X2RpZFNocmlua0ltYWdlKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaAppbmRl
eCBmYWY5MjA3MGZmNDAyNTQ4OTQ2ZTdhNjgwMTVlZTEyNDE0YzgyMjIzLi40ZGJkOGQ4MDJkNzk4
ODNiYWQzYjhkZDA2N2EzMTA3ZGMyNGQ2NzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1l
bnQuaApAQCAtMzQsOSArMzQsOSBAQCBjbGFzcyBJbWFnZURvY3VtZW50RWxlbWVudDsKIAogY2xh
c3MgSW1hZ2VEb2N1bWVudCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEltYWdlRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZURvY3VtZW50PiBjcmVhdGUo
RnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiB1cmwpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlRG9jdW1lbnQoZnJhbWUsIHVy
bCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlRG9jdW1lbnQoZnJhbWUsIGxv
YWRlciwgdXJsKSk7CiAgICAgfQogCiAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCk7CkBA
IC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGltYWdlQ2xpY2tlZChpbnQgeCwgaW50
IHkpOwogCiBwcml2YXRlOgotICAgIEltYWdlRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJik7
CisgICAgSW1hZ2VEb2N1bWVudChGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgY29uc3QgS1VSTCYp
OwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIo
KTsKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZURvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKaW5kZXggZTUxOTQ1NDJhNmMw
NTZlYWZlM2QyMTk5Y2ZjNDkwN2MxNGQwYTA2ZS4uYjQxZTUwODZhZWI5YjUwMDQzYTc0OGNhMzNk
NjQ0ZmMyMmM1ODhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCkBAIC0x
MTcsOCArMTE3LDggQEAgdm9pZCBNZWRpYURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1
bWVudFdyaXRlciosIGNvbnN0IGNoYXIqLCBzaXplX3QpCiAgICAgZmluaXNoKCk7CiB9CiAgICAg
Ci1NZWRpYURvY3VtZW50OjpNZWRpYURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYg
dXJsKQotICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCitNZWRpYURvY3VtZW50OjpNZWRp
YURvY3VtZW50KEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VS
TCYgdXJsKQorICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCBsb2FkZXIsIHVybCkKICAgICAsIG1f
cmVwbGFjZU1lZGlhRWxlbWVudFRpbWVyKHRoaXMsICZNZWRpYURvY3VtZW50OjpyZXBsYWNlTWVk
aWFFbGVtZW50VGltZXJGaXJlZCkKIHsKICAgICBzZXRDb21wYXRpYmlsaXR5TW9kZShRdWlya3NN
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmgKaW5kZXggMmQ4MTI5NjNiZjExZmJl
YTZkMWM1YzYwZWU3NjFjYzI4NjQyMTg3ZS4uMjg1MjE3NDgyOTZkOWUxYTExOTUyNjcxNGE5NGJi
MDBmN2FkNzQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmgKQEAgLTM0LDE2ICsz
NCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhRG9jdW1lbnQgOiBwdWJs
aWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYURv
Y3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgY29uc3QgS1VSTCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYURvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYURvY3VtZW50KGZyYW1lLCBsb2FkZXIsIHVybCkpOwogICAgIH0KICAg
ICB2aXJ0dWFsIH5NZWRpYURvY3VtZW50KCk7CiAKICAgICB2b2lkIG1lZGlhRWxlbWVudFNhd1Vu
c3VwcG9ydGVkVHJhY2tzKCk7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFEb2N1bWVudChGcmFtZSos
IGNvbnN0IEtVUkwmKTsKKyAgICBNZWRpYURvY3VtZW50KEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBLVVJMJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYURvY3VtZW50KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfSAgICAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3Vt
ZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUGx1Z2luRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVu
dC5jcHAKaW5kZXggNDk2NDQ5MjgxNTBlYjI0YTY0NDU4YjJmYzRkMjRjMTljMjYyYjZkMS4uNjFm
NGNmZWQ3NTE5YjRmZjkwZjczNDgzMzRkMmIxNzhiYjAyNTdiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9QbHVnaW5Eb2N1bWVudC5jcHAKQEAgLTEzNyw4ICsxMzcsOCBAQCB2b2lkIFBsdWdpbkRvY3Vt
ZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciosIGNvbnN0IGNoYXIqLCBzaXpl
X3QpCiAgICAgZmluaXNoKCk7CiB9CiAKLVBsdWdpbkRvY3VtZW50OjpQbHVnaW5Eb2N1bWVudChG
cmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKLSAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwg
dXJsKQorUGx1Z2luRG9jdW1lbnQ6OlBsdWdpbkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VSTCYgdXJsKQorICAgIDogSFRNTERvY3VtZW50KGZy
YW1lLCBsb2FkZXIsIHVybCkKICAgICAsIG1fc2hvdWxkTG9hZFBsdWdpbk1hbnVhbGx5KHRydWUp
CiB7CiAgICAgc2V0Q29tcGF0aWJpbGl0eU1vZGUoUXVpcmtzTW9kZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1BsdWdpbkRvY3VtZW50LmgKaW5kZXggNmRhYTk3Y2Y1ZDU5Mzk4NzdjMTUxM2ExNzk4N2Q4NWQw
MzM1ZmM5NC4uMzZhNGYyZWVjN2FjMDA2NmQwMzFhMjJkZTQxNmVmNTVkOTllNTFjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaApAQCAtMzQsOSArMzQsOSBAQCBjbGFzcyBXaWRn
ZXQ7CiAKIGNsYXNzIFBsdWdpbkRvY3VtZW50IDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSog
ZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Eb2N1
bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3Qg
S1VSTCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5Eb2N1
bWVudChmcmFtZSwgdXJsKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luRG9j
dW1lbnQoZnJhbWUsIGxvYWRlciwgdXJsKSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRQbHVnaW5O
b2RlKE5vZGUqIHBsdWdpbk5vZGUpIHsgbV9wbHVnaW5Ob2RlID0gcGx1Z2luTm9kZTsgfQpAQCAt
NTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRMb2FkUGx1Z2luTWFudWFsbHko
KSB7IHJldHVybiBtX3Nob3VsZExvYWRQbHVnaW5NYW51YWxseTsgfQogCiBwcml2YXRlOgotICAg
IFBsdWdpbkRvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYpOworICAgIFBsdWdpbkRvY3VtZW50
KEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJik7CiAKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBpc1BsdWdpbkRvY3VtZW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfSAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmNwcAppbmRleCA5MzM0YTM5N2Jl
ZGYyOWM3NmUyM2NjYWM1MGNjMmYxZTk3OWNkYTVkLi5iYjgwOTAyMjE2NTQ4MTE1NTJiZWZmMjY1
ZTY3ZTYxOGRjYzBjYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuY3BwCkBAIC0y
OSw4ICsyOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVGV4dERvY3VtZW50OjpUZXh0
RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCi0gICAgOiBIVE1MRG9jdW1l
bnQoZnJhbWUsIHVybCkKK1RleHREb2N1bWVudDo6VGV4dERvY3VtZW50KEZyYW1lKiBmcmFtZSwg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VSTCYgdXJsKQorICAgIDogSFRNTERvY3Vt
ZW50KGZyYW1lLCBsb2FkZXIsIHVybCkKIHsKICAgICBzZXRDb21wYXRpYmlsaXR5TW9kZShRdWly
a3NNb2RlKTsKICAgICBsb2NrQ29tcGF0aWJpbGl0eU1vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRE
b2N1bWVudC5oCmluZGV4IDJlYTQ5ZjgxYTgwOGU5NjdiZjY5NDIwYmZmMDQwYWIwZGViNTBlODIu
LjQ0OTBmN2NlOWEwMjQ1ZjkyYTliOWM0MmQ3MGJiZTRjOGExYjMxOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RG9jdW1lbnQuaApAQCAtMzEsMTMgKzMxLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgVGV4dERvY3VtZW50IDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBj
b25zdCBLVVJMJiB1cmwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dERvY3VtZW50PiBjcmVh
dGUoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiB1cmwp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHREb2N1bWVudChmcmFtZSwg
dXJsKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dERvY3VtZW50KGZyYW1lLCBs
b2FkZXIsIHVybCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBUZXh0RG9jdW1lbnQoRnJhbWUq
LCBjb25zdCBLVVJMJik7CisgICAgVGV4dERvY3VtZW50KEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBLVVJMJik7CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50UGFy
c2VyPiBjcmVhdGVQYXJzZXIoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Q
YXRjaFN1cHBvcnQuY3BwCmluZGV4IDhlNmMxODAwZDM1MjgyNjRlNTMxMzRlZDhkYzYxYjgzZWY4
OGI5NTYuLmNhNzcyN2VjZDNkY2E5Nzk1ZjAzMmNjZDhmODE0MGQwNDRhOGU1NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCkBAIC04OSw3ICs4OSw3
IEBAIERPTVBhdGNoU3VwcG9ydDo6fkRPTVBhdGNoU3VwcG9ydCgpIHsgfQogCiB2b2lkIERPTVBh
dGNoU3VwcG9ydDo6cGF0Y2hEb2N1bWVudChjb25zdCBTdHJpbmcmIG1hcmt1cCkKIHsKLSAgICBS
ZWZQdHI8SFRNTERvY3VtZW50PiBuZXdEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKDAs
IEtVUkwoKSk7CisgICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gbmV3RG9jdW1lbnQgPSBIVE1MRG9j
dW1lbnQ6OmNyZWF0ZSgwLCAwLCBLVVJMKCkpOwogICAgIG5ld0RvY3VtZW50LT5zZXRDb250ZXh0
RmVhdHVyZXMobV9kb2N1bWVudC0+Y29udGV4dEZlYXR1cmVzKCkpOwogICAgIFJlZlB0cjxEb2N1
bWVudFBhcnNlcj4gcGFyc2VyID0gSFRNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUobmV3RG9jdW1l
bnQuZ2V0KCksIGZhbHNlKTsKICAgICBwYXJzZXItPmluc2VydChtYXJrdXApOyAvLyBVc2UgaW5z
ZXJ0KCkgc28gdGhhdCB0aGUgcGFyc2VyIHdpbGwgbm90IHlpZWxkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMjE4ZGI4MjJmZjMyM2ViOTllY2YxOGM1ODE5
NmY4NGZlYjgxZGMwMC4uMDc5ZDBjMjlmNThhMzVkODdhNjdmZWFiYmU3MjI2YTQ3ODE2NmZjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC04OCw3ICs4OCw4
IEBAIERvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcSwgY29uc3QgU3Vic3RpdHV0ZURhdGEmCiAgICAgOiBtX2RlZmVyTWFpblJlc291cmNlRGF0
YUxvYWQodHJ1ZSkKICAgICAsIG1fZnJhbWUoMCkKICAgICAsIG1fY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0aGlzKSkKLSAgICAsIG1fd3JpdGVyKG1f
ZnJhbWUpCisgICAgLCBtX3dyaXRlcihtX2ZyYW1lLCB0aGlzKQorICAgICwgbV93ZWFrUmVmKERv
Y3VtZW50TG9hZGVyV2Vha1JlZjo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9vcmlnaW5hbFJlcXVl
c3QocmVxKQogICAgICwgbV9zdWJzdGl0dXRlRGF0YShzdWJzdGl0dXRlRGF0YSkKICAgICAsIG1f
b3JpZ2luYWxSZXF1ZXN0Q29weShyZXEpCkBAIC0xMjAsNiArMTIxLDcgQEAgRG9jdW1lbnRMb2Fk
ZXI6On5Eb2N1bWVudExvYWRlcigpCiAgICAgaWYgKG1faWNvbkRhdGFDYWxsYmFjaykKICAgICAg
ICAgbV9pY29uRGF0YUNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9jYWNoZWRSZXNvdXJj
ZUxvYWRlci0+Y2xlYXJEb2N1bWVudExvYWRlcigpOworICAgIG1fd2Vha1JlZi0+Y2xlYXJQdHIo
KTsKIH0KIAogUGFzc1JlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5S
ZXNvdXJjZURhdGEoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApp
bmRleCBlNWFjZjRjODIzYWI2ODdmYWUzNGU5MzhkNDRiMDdlODQ4MTczYTQ5Li4yZjczMmQ3ZjA2
OGYyYTUxZWEwYzAzYmVkOWRhMThiZWM0OTVmOTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaApAQCAtNjYsNiArNjYsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8UmVzb3VyY2VMb2FkZXI+ID4gUmVzb3VyY2VMb2FkZXJT
ZXQ7CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVzb3VyY2VSZXNwb25zZT4gUmVzcG9uc2VWZWN0b3I7
CiAKKyAgICBjbGFzcyBEb2N1bWVudExvYWRlcldlYWtSZWYgOiBwdWJsaWMgUmVmQ291bnRlZDxE
b2N1bWVudExvYWRlcldlYWtSZWY+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIoKSB7IHJldHVybiBtX3B0cjsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXJXZWFrUmVmPiBjcmVhdGUoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikgeyByZXR1cm4gYWRvcHRSZWYobmV3IERvY3VtZW50TG9hZGVyV2Vha1Jl
Zihsb2FkZXIpKTsgfQorICAgICAgICBEb2N1bWVudExvYWRlcldlYWtSZWYoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcikgOiBtX3B0cihsb2FkZXIpIHsgfQorICAgICAgICB2b2lkIGNsZWFyUHRyKCkg
eyBtX3B0ciA9IDA7IH0KKworICAgICAgICBEb2N1bWVudExvYWRlciogbV9wdHI7CisgICAgICAg
IGZyaWVuZCBjbGFzcyBEb2N1bWVudExvYWRlcjsKKyAgICB9OworCiAgICAgY2xhc3MgRG9jdW1l
bnRMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj4gewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBkYXRhKQpA
QCAtODUsNiArOTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhc3NSZWZQdHI8
UmVzb3VyY2VCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICAgICAgCiAgICAg
ICAgIERvY3VtZW50V3JpdGVyKiB3cml0ZXIoKSBjb25zdCB7IHJldHVybiAmbV93cml0ZXI7IH0K
KyAgICAgICAgUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcldlYWtSZWY+IHdlYWtSZWYoKSB7IHJl
dHVybiBtX3dlYWtSZWY7IH0KIAogICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCgpIGNvbnN0OwogICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdENvcHkoKSBjb25zdDsKQEAgLTI4MSw2ICsyOTUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gbV9tYWluUmVzb3VyY2VEYXRh
OwogICAgICAgICAKICAgICAgICAgbXV0YWJsZSBEb2N1bWVudFdyaXRlciBtX3dyaXRlcjsKKyAg
ICAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyV2Vha1JlZj4gbV93ZWFrUmVmOwogCiAgICAgICAg
IC8vIEEgcmVmZXJlbmNlIHRvIGFjdHVhbCByZXF1ZXN0IHVzZWQgdG8gY3JlYXRlIHRoZSBkYXRh
IHNvdXJjZS4KICAgICAgICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGJ5IHRoZSByZXNv
dXJjZUxvYWREZWxlZ2F0ZSdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNw
cAppbmRleCAxYTE2ZWVjNTZiNTljMzljMDM0ODFiOGVlYzdjMjIzMDRmZjQ2OWQ5Li5kNjgwMjRl
MmFhYTRlZTRjOWIxZmQyNzBmZDZkMDM1YjNjNThmMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFdyaXRlci5jcHAKQEAgLTU0LDggKzU0LDkgQEAgc3RhdGljIGlubGluZSBib29s
IGNhblJlZmVyVG9QYXJlbnRGcmFtZUVuY29kaW5nKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3Qg
RnJhbWUKICAgICByZXR1cm4gcGFyZW50RnJhbWUgJiYgcGFyZW50RnJhbWUtPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2VzcyhmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSk7CiB9CiAgICAgCi1Eb2N1bWVudFdyaXRlcjo6RG9jdW1lbnRXcml0ZXIoRnJhbWUq
IGZyYW1lKQorRG9jdW1lbnRXcml0ZXI6OkRvY3VtZW50V3JpdGVyKEZyYW1lKiBmcmFtZSwgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICA6IG1fZnJhbWUoZnJhbWUpCisgICAgLCBtX2RvY3Vt
ZW50TG9hZGVyKGxvYWRlcikKICAgICAsIG1faGFzUmVjZWl2ZWRTb21lRGF0YShmYWxzZSkKICAg
ICAsIG1fZW5jb2RpbmdXYXNDaG9zZW5CeVVzZXIoZmFsc2UpCiAgICAgLCBtX3N0YXRlKE5vdFN0
YXJ0ZWRXcml0aW5nU3RhdGUpCkBAIC0xMDEsMTAgKzEwMiwxMCBAQCB2b2lkIERvY3VtZW50V3Jp
dGVyOjpiZWdpbigpCiBQYXNzUmVmUHRyPERvY3VtZW50PiBEb2N1bWVudFdyaXRlcjo6Y3JlYXRl
RG9jdW1lbnQoY29uc3QgS1VSTCYgdXJsKQogewogICAgIGlmICghbV9mcmFtZS0+bG9hZGVyKCkt
PnN0YXRlTWFjaGluZSgpLT5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpICYmIG1f
ZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+c2hvdWxkVXNlUGx1Z2luRG9jdW1lbnQobV9taW1l
VHlwZSkpCi0gICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKG1fZnJhbWUsIHVy
bCk7CisgICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKG1fZnJhbWUsIG1fZG9j
dW1lbnRMb2FkZXIsIHVybCk7CiAgICAgaWYgKCFtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkt
Pmhhc0hUTUxWaWV3KCkpCi0gICAgICAgIHJldHVybiBQbGFjZWhvbGRlckRvY3VtZW50OjpjcmVh
dGUobV9mcmFtZSwgdXJsKTsKLSAgICByZXR1cm4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURv
Y3VtZW50KG1fbWltZVR5cGUsIG1fZnJhbWUsIHVybCwgbV9mcmFtZS0+aW5WaWV3U291cmNlTW9k
ZSgpKTsKKyAgICAgICAgcmV0dXJuIFBsYWNlaG9sZGVyRG9jdW1lbnQ6OmNyZWF0ZShtX2ZyYW1l
LCBtX2RvY3VtZW50TG9hZGVyLCB1cmwpOworICAgIHJldHVybiBET01JbXBsZW1lbnRhdGlvbjo6
Y3JlYXRlRG9jdW1lbnQobV9taW1lVHlwZSwgbV9mcmFtZSwgbV9kb2N1bWVudExvYWRlciwgdXJs
LCBtX2ZyYW1lLT5pblZpZXdTb3VyY2VNb2RlKCkpOwogfQogCiB2b2lkIERvY3VtZW50V3JpdGVy
OjpiZWdpbihjb25zdCBLVVJMJiB1cmxSZWZlcmVuY2UsIGJvb2wgZGlzcGF0Y2gsIERvY3VtZW50
KiBvd25lckRvY3VtZW50KQpAQCAtMTIxLDcgKzEyMiw3IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6
OmJlZ2luKGNvbnN0IEtVUkwmIHVybFJlZmVyZW5jZSwgYm9vbCBkaXNwYXRjaCwgRG9jdW1lbnQq
IG93CiAgICAgLy8gSWYgdGhlIG5ldyBkb2N1bWVudCBpcyBmb3IgYSBQbHVnaW4gYnV0IHdlJ3Jl
IHN1cHBvc2VkIHRvIGJlIHNhbmRib3hlZCBmcm9tIFBsdWdpbnMsCiAgICAgLy8gdGhlbiByZXBs
YWNlIHRoZSBkb2N1bWVudCB3aXRoIG9uZSB3aG9zZSBwYXJzZXIgd2lsbCBpZ25vcmUgdGhlIGlu
Y29taW5nIGRhdGEgKGJ1ZyAzOTMyMykKICAgICBpZiAoZG9jdW1lbnQtPmlzUGx1Z2luRG9jdW1l
bnQoKSAmJiBkb2N1bWVudC0+aXNTYW5kYm94ZWQoU2FuZGJveFBsdWdpbnMpKQotICAgICAgICBk
b2N1bWVudCA9IFNpbmtEb2N1bWVudDo6Y3JlYXRlKG1fZnJhbWUsIHVybCk7CisgICAgICAgIGRv
Y3VtZW50ID0gU2lua0RvY3VtZW50OjpjcmVhdGUobV9mcmFtZSwgbV9kb2N1bWVudExvYWRlciwg
dXJsKTsKIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGNvbnN1bHQgdGhlIGNvbnRlbnQg
c2VjdXJpdHkgcG9saWN5IGhlcmUgYWJvdXQgYmxvY2tlZCBwbHVnLWlucz8KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAppbmRleCAzZDkwYjlkODczZmUwNGI3OWQxODY4OTFh
NzgxYzdmN2M2MzY4YTY5Li43ODZjZTMyMWMxOGE1NWE2ZGNhYTNlMjE1NDliZmNhYjU2OTQ5NGM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaApAQCAtMzUsNiArMzUsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIERvY3VtZW50
TG9hZGVyOwogY2xhc3MgRG9jdW1lbnRQYXJzZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwpAQCAtNDMsNyArNDQsNyBAQCBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwog
Y2xhc3MgRG9jdW1lbnRXcml0ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERvY3VtZW50
V3JpdGVyKTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBEb2N1bWVudFdyaXRlcihGcmFtZSopOwor
ICAgIGV4cGxpY2l0IERvY3VtZW50V3JpdGVyKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqKTsKIAog
ICAgIC8vIFRoaXMgaXMgb25seSBjYWxsZWQgYnkgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlm
SmF2YVNjcmlwdFVSTAogICAgIC8vIGFuZCBhbHdheXMgY29udGFpbnMgdGhlIHJlc3VsdCBvZiBl
dmFsdWF0aW5nIGEgamF2YXNjcmlwdDogdXJsLgpAQCAtNzIsNiArNzMsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIEZyYW1lKiBtX2ZyYW1lOworICAgIERvY3VtZW50TG9h
ZGVyKiBtX2RvY3VtZW50TG9hZGVyOwogCiAgICAgYm9vbCBtX2hhc1JlY2VpdmVkU29tZURhdGE7
CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUGxhY2Vob2xkZXJEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BsYWNlaG9s
ZGVyRG9jdW1lbnQuaAppbmRleCAzZDQwYTZlYTM5ZjdmNjc2ZDY4MjY5MGM1ZTNhNDYxOGM0OWI4
YzA1Li5iNjQxNDIzMjU4MDUzMmM0YjY1YmYzY2NhZDE3MzEyNGFmZmU3NTE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9QbGFjZWhvbGRlckRvY3VtZW50LmgKQEAgLTMyLDE1ICszMiwxNSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBsYWNlaG9sZGVyRG9jdW1lbnQgOiBwdWJs
aWMgRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYWNlaG9sZGVy
RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxQbGFjZWhvbGRlckRvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBE
b2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBsYWNlaG9sZGVyRG9jdW1lbnQoZnJhbWUsIHVybCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYWNlaG9sZGVyRG9jdW1lbnQoZnJhbWUsIGxvYWRl
ciwgdXJsKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogCiBwcml2YXRl
OgotICAgIFBsYWNlaG9sZGVyRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwp
IDogRG9jdW1lbnQoZnJhbWUsIHVybCwgZmFsc2UsIGZhbHNlKSB7IH0KKyAgICBQbGFjZWhvbGRl
ckRvY3VtZW50KEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VS
TCYgdXJsKSA6IERvY3VtZW50KGZyYW1lLCBsb2FkZXIsIHVybCwgZmFsc2UsIGZhbHNlKSB7IH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1
bWVudC5jcHAKaW5kZXggNDg0ZDIzODlhNTcwYTNjNmY0OWE2NWNhZDcxNjE2ZjgxOTAxNjY0ZC4u
N2VlMGE5NzBmOGI3MjE2ZWUzNzlkZDBkYzYyOWU2YzE3Y2Y3OTA1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1NpbmtEb2N1bWVudC5jcHAKQEAgLTQ3LDggKzQ3LDggQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqLCBjb25zdCBjaGFyKiwgc2l6
ZV90KSB7IH0KIH07CiAKLVNpbmtEb2N1bWVudDo6U2lua0RvY3VtZW50KEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsKQotICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCitTaW5rRG9j
dW1lbnQ6OlNpbmtEb2N1bWVudChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IGNvbnN0IEtVUkwmIHVybCkKKyAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgbG9hZGVyLCB1cmwp
CiB7CiAgICAgc2V0Q29tcGF0aWJpbGl0eU1vZGUoUXVpcmtzTW9kZSk7CiAgICAgbG9ja0NvbXBh
dGliaWxpdHlNb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0Rv
Y3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmgKaW5kZXggNTAx
NTJmZjllY2NhN2Y1ZTRmZGE2ZTg3NDEyOTFlNGJhOWUxYjk0Ny4uZTU5OGI1NGM0Nzc4Nzc5MDQ0
YzNlNDMyYTFlOWQ1Nzc2OWUwMTFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1NpbmtEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQu
aApAQCAtMzIsMTMgKzMyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2lua0Rv
Y3VtZW50IDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2lua0RvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2lua0RvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1l
LCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNpbmtEb2N1bWVudChmcmFtZSwgdXJsKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU2lua0RvY3VtZW50KGZyYW1lLCBsb2FkZXIsIHVybCkpOwog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBTaW5rRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJik7
CisgICAgU2lua0RvY3VtZW50KEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJik7
CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJz
ZXIoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5k
ZXggZjExOWI5MzY5YTY5YTU1NDc4NWVjMTZmMDNjYTc2N2FmMWRiNWJiMC4uN2JiMmFjNGE0NDFj
YTU4Njk0NDZlNDU0ZjQ0N2FjNTNmYTY1MGY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIEZvbnRQbGF0Zm9ybURhdGEg
Q2FjaGVkRm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoZmxvYXQgc2l6ZSwgYm9vbCBi
b2xkLCBiCiBib29sIENhY2hlZEZvbnQ6OmVuc3VyZVNWR0ZvbnREYXRhKCkKIHsKICAgICBpZiAo
IW1fZXh0ZXJuYWxTVkdEb2N1bWVudCAmJiAhZXJyb3JPY2N1cnJlZCgpICYmICFpc0xvYWRpbmco
KSAmJiBtX2RhdGEpIHsKLSAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gU1ZHRG9jdW1l
bnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBT
VkdEb2N1bWVudDo6Y3JlYXRlKDAsIDAsIEtVUkwoKSk7CiAKICAgICAgICAgUmVmUHRyPFRleHRS
ZXNvdXJjZURlY29kZXI+IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFw
cGxpY2F0aW9uL3htbCIpOwogICAgICAgICBTdHJpbmcgc3ZnU291cmNlID0gZGVjb2Rlci0+ZGVj
b2RlKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCA0ZWM1NGE4ZTI1Yjk5
YjllMTY4MTBkYzExZTFjYTliNzA5NGJhYTRmLi5jZGQ1MmMxMDdjMjA4NjA5NWE1ZTdmNzAyNDZh
NGU4NjQ4NTUyZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1bWVu
dDo6ZGF0YShQYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXYKICAgICAgICAgZGVjb2RlZFRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgIGRlY29kZWRUZXh0LmFwcGVuZChtX2RlY29k
ZXItPmZsdXNoKCkpOwogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBm
cmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVzZUVs
ZW1lbnQuCi0gICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKDAsIHJlc3Bv
bnNlKCkudXJsKCkpOworICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgw
LCAwLCByZXNwb25zZSgpLnVybCgpKTsKICAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChk
ZWNvZGVkVGV4dC50b1N0cmluZygpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQu
Y3BwCmluZGV4IGZmNzc0ZDJlYTk4OGRmZGYzMDlmYzQ2M2IwYjgzODYwODdiOGZjMzYuLmExOGY4
ZDc2NjE3YmY2NzFjMzEzMTJhZGIzMGFiMWQ4ODczMzUxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Rv
Y3VtZW50LmNwcApAQCAtMzYsOCArMzYsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNW
R0RvY3VtZW50OjpTVkdEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKLSAg
ICA6IERvY3VtZW50KGZyYW1lLCB1cmwsIGZhbHNlLCBmYWxzZSkKK1NWR0RvY3VtZW50OjpTVkdE
b2N1bWVudChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwm
IHVybCkKKyAgICA6IERvY3VtZW50KGZyYW1lLCBsb2FkZXIsIHVybCwgZmFsc2UsIGZhbHNlKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCmluZGV4IGE2Mzc4NzIxOGU2ODFkYTE5Mzdh
MWE4MjBhZjliMWQwM2VlOGI3YmIuLmU2ZDQxZWE5ZWFiMmMzYzgzOWU1NzZjNDcyNDc2NDMxZWE2
OWUzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCkBAIC0zMyw5ICszMyw5IEBAIGNsYXNz
IFNWR1NWR0VsZW1lbnQ7CiAKIGNsYXNzIFNWR0RvY3VtZW50IDogcHVibGljIERvY3VtZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdEb2N1bWVudD4gY3JlYXRlKEZyYW1l
KiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0RvY3Vt
ZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBL
VVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0RvY3VtZW50
KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdEb2N1bWVudChm
cmFtZSwgbG9hZGVyLCB1cmwpKTsKICAgICB9CiAKICAgICBTVkdTVkdFbGVtZW50KiByb290RWxl
bWVudCgpIGNvbnN0OwpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVQ
YW4oY29uc3QgRmxvYXRQb2ludCYgcG9zKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBTVkdEb2N1
bWVudChGcmFtZSosIGNvbnN0IEtVUkwmKTsKKyAgICBTVkdEb2N1bWVudChGcmFtZSosIERvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgS1VSTCYpOwogCiAgICAgdmlydHVhbCBib29sIGlzU1ZHRG9jdW1l
bnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9ET01QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5jcHAKaW5k
ZXggNDk2NzdlYTc5NTI0YzhmYWUzM2JhZWM1MDMzZjgzYTkxZTFmMGU4MC4uMzVlYjVjNWYyNmU4
NWUzMjg3NTVmODFmY2RlODczMTA2YWY2Y2RiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL0RPTVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5jcHAK
QEAgLTMwLDcgKzMwLDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudD4gRE9NUGFyc2VyOjpwYXJzZUZy
b21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHIsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIURPTUlt
cGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKGNvbnRlbnRUeXBlKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvYyA9IERPTUltcGxlbWVudGF0aW9uOjpjcmVh
dGVEb2N1bWVudChjb250ZW50VHlwZSwgMCwgS1VSTCgpLCBmYWxzZSk7CisgICAgUmVmUHRyPERv
Y3VtZW50PiBkb2MgPSBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29udGVudFR5
cGUsIDAsIDAsIEtVUkwoKSwgZmFsc2UpOwogICAgIGRvYy0+c2V0Q29udGVudChzdHIpOwogICAg
IHJldHVybiBkb2MucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKaW5kZXggMjk1MzZkYTg0MmNkOTA3MDI3ZWMxYzdjZTJmMzg5MTFmMWYzMzMyNi4uNjVjZjM4
MzFlMTdiNGY1ODUyZjQ3MTBkZjA0ZjQzYWJiZjQxMDNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCkBAIC0yNjIsOSArMjYyLDkgQEAgRG9jdW1lbnQqIFhNTEh0dHBSZXF1
ZXN0OjpyZXNwb25zZVhNTChFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIG1fcmVzcG9u
c2VEb2N1bWVudCA9IDA7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoaXNIVE1M
KQotICAgICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3Jl
YXRlKDAsIG1fdXJsKTsKKyAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBIVE1M
RG9jdW1lbnQ6OmNyZWF0ZSgwLCAwLCBtX3VybCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZSgwLCBtX3VybCk7
CisgICAgICAgICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZSgw
LCAwLCBtX3VybCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogU2V0IExhc3QtTW9kaWZpZWQuCiAg
ICAgICAgICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQtPnNldENvbnRlbnQobV9yZXNwb25zZUJ1aWxk
ZXIudG9TdHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgbV9yZXNwb25zZURv
Y3VtZW50LT5zZXRTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbigpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yLmNwcAppbmRleCAyMWVmZjgwYjBjZWVlYzczMmYzZWU5MmE4MGFjYTkw
NmEwYzQ5ZDE5Li5hZDNhOTYyNDNhMjI3OTVmMTFkNWQ1MDI0NzI4NGRiZGM2ZTZjMjlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCkBAIC03MSwxNSArNzEsMTYgQEAgUGFzc1Jl
ZlB0cjxEb2N1bWVudD4gWFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1lbnRGcm9tU291cmNlKGNv
bnN0IFN0cmluZyYgc291cmMKICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZUVuY29kaW5nLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU1JTUVUeXBlLCBOb2RlKiBzb3VyY2VOb2RlLCBGcmFtZSogZnJhbWUp
CiB7CiAgICAgUmVmUHRyPERvY3VtZW50PiBvd25lckRvY3VtZW50ID0gc291cmNlTm9kZS0+ZG9j
dW1lbnQoKTsKKyAgICBEb2N1bWVudExvYWRlciogb3duZXJEb2N1bWVudExvYWRlciA9IG93bmVy
RG9jdW1lbnQtPmxvYWRlcigpOwogICAgIGJvb2wgc291cmNlSXNEb2N1bWVudCA9IChzb3VyY2VO
b2RlID09IG93bmVyRG9jdW1lbnQuZ2V0KCkpOwogICAgIFN0cmluZyBkb2N1bWVudFNvdXJjZSA9
IHNvdXJjZVN0cmluZzsKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gcmVzdWx0OwogICAgIGlmIChz
b3VyY2VNSU1FVHlwZSA9PSAidGV4dC9wbGFpbiIpIHsKLSAgICAgICAgcmVzdWx0ID0gRG9jdW1l
bnQ6OmNyZWF0ZShmcmFtZSwgc291cmNlSXNEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQtPnVybCgp
IDogS1VSTCgpKTsKKyAgICAgICAgcmVzdWx0ID0gRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgb3du
ZXJEb2N1bWVudExvYWRlciwgc291cmNlSXNEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQtPnVybCgp
IDogS1VSTCgpKTsKICAgICAgICAgdHJhbnNmb3JtVGV4dFN0cmluZ1RvWEhUTUxEb2N1bWVudFN0
cmluZyhkb2N1bWVudFNvdXJjZSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlc3VsdCA9IERPTUlt
cGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChzb3VyY2VNSU1FVHlwZSwgZnJhbWUsIHNvdXJj
ZUlzRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LT51cmwoKSA6IEtVUkwoKSwgZmFsc2UpOworICAg
ICAgICByZXN1bHQgPSBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoc291cmNlTUlN
RVR5cGUsIGZyYW1lLCBvd25lckRvY3VtZW50TG9hZGVyLCBzb3VyY2VJc0RvY3VtZW50ID8gb3du
ZXJEb2N1bWVudC0+dXJsKCkgOiBLVVJMKCksIGZhbHNlKTsKIAogICAgIC8vIEJlZm9yZSBwYXJz
aW5nLCB3ZSBuZWVkIHRvIHNhdmUgJiBkZXRhY2ggdGhlIG9sZCBkb2N1bWVudCBhbmQgZ2V0IHRo
ZSBuZXcgZG9jdW1lbnQKICAgICAvLyBpbiBwbGFjZS4gV2UgaGF2ZSB0byBkbyB0aGlzIG9ubHkg
aWYgd2UncmUgcmVuZGVyaW5nIHRoZSByZXN1bHQgZG9jdW1lbnQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKaW5kZXggOWY1MWYzZjAxNWY4
OTBkYWJiOTU0ZjY1MDY4YzlmNDU0Yjk5ZTRjMy4uMjg1M2Q2MDBhMmYxNWZiZGMyNmJhZDUxMmE3
ZmU1OGMyMzg4ODQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFn
ZS90c3RfcXdlYnBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2Uv
dHN0X3F3ZWJwYWdlLmNwcApAQCAtMjkzMiwxMCArMjkzMiw4IEBAIHZvaWQgdHN0X1FXZWJQYWdl
Ojp0ZXN0U3RvcFNjaGVkdWxlZFBhZ2VSZWZyZXNoKCkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIjxtZXRhIGh0dHAtZXF1aXY9XCJyZWZyZXNoXCJjb250ZW50PVwiMDtVUkw9cXJj
Oi8vL3Jlc291cmNlcy9pbmRleC5odG1sXCI+IgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiPC9oZWFkPjxib2R5PjxoMT5QYWdlIHJlZGlyZWN0cyBpbW1lZGlhdGVseS4uLjwvaDE+
IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPC9ib2R5PjwvaHRtbD4iKTsKLSAg
ICBRRVhQRUNUX0ZBSUwoIiIsICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjMyNDUiLCBDb250aW51ZSk7CiAgICAgUVZFUklGWSg6OndhaXRGb3JTaWduYWwoJnBhZ2Ux
LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSkpOwogICAgIFFUZXN0OjpxV2FpdCg1MDApOwot
ICAgIFFFWFBFQ1RfRkFJTCgiIiwgImh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MzI0NSIsIENvbnRpbnVlKTsKICAgICBRQ09NUEFSRShwYWdlMS5tYWluRnJhbWUoKS0+
dXJsKCksIFFVcmwoUUxhdGluMVN0cmluZygicXJjOi8vL3Jlc291cmNlcy9pbmRleC5odG1sIikp
KTsKICAgICAKICAgICAvLyBXaXRoIFFXZWJQYWdlOjpTdG9wU2NoZWR1bGVkUGFnZVJlZnJlc2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176426</attachid>
            <date>2012-11-28 01:30:25 -0800</date>
            <delta_ts>2012-11-30 05:51:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68711-20121128102800.patch</filename>
            <type>text/plain</type>
            <size>50296</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM3OWQ3NjIwNDY0ZjQx
YTdjNmI4NzUzOTNiZGUyYzZhNTk3YmVhYi4uOTk4NzQzMTE2NWM0NjFjMTBjN2NiZTc0ZmQwOTQy
MDI4MTgxNGQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOSBAQAorMjAxMi0xMS0yNyAgSm9j
ZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEuY29tPgorCisgICAgICAgIERv
Y3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkgZmFpbHMgdG8gY2FsbCBzZWN1cml0eU9yaWdp
bigpLmdyYW50TG9hZExvY2FsUmVzb3VyY2VzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NzExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgdGhhdCB0aGVyZSBpcyBubyBndWFy
YW50ZWUgdGhhdCBGcmFtZUxvYWRlcjo6YWN0aXZlRG9jdW1lbnRMb2FkZXIKKyAgICAgICAgcmVm
ZXJzIHRvIHRoZSBEb2N1bWVudExvYWRlciB0aGF0IGNyZWF0ZWQgYSBEb2N1bWVudC4gSXQgY2Fu
IGN1cnJlbnRseSBiZSBhc3N1bWVkCisgICAgICAgIHRoYXQgdGhpcyBob2xkcyB0cnVlIGR1cmlu
ZyB0aGUgY29uc3RydWN0aW9uIG9mIGEgRG9jdW1lbnQsIGJ1dCByZWx5aW5nIG9uIHN1Y2gKKyAg
ICAgICAgYSBmcmFnaWxlIGFzc3VtcHRpb24gdG8gZ3JhbnQgYWNjZXNzIHRvIHRoZSB1c2VyJ3Mg
aGFyZCBkcml2ZSBpc24ndCBzYWZlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcGFzc2VzIGEgcG9p
bnRlciBvZiB0aGUgRG9jdW1lbnRMb2FkZXIgZGlyZWN0bHkgdG8gdGhlIERvY3VtZW50J3MKKyAg
ICAgICAgY29uc3RydWN0b3IgYW5kIHVzZXMgYSB3ZWFrIHJlZmVyZW5jZSB0byBwcmV2ZW50IGRh
bmdsaW5nIHBvaW50ZXJzLCB3aGljaCBoYXMKKyAgICAgICAgYmVlbiB0aGUgbW90aXZhdGlvbiBm
b3IgdGhlIGNoYW5nZSB0aGF0IHRyaWdnZXJlZCB0aGUgcmVncmVzc2lvbi4KKworICAgICAgICAt
IENoYW5nZSBEb2N1bWVudDo6bG9hZGVyIHRvIHVzZSB0aGUgd2VhayByZWZlcmVuY2UgdG8gYmUg
YWJsZSB0byByZWZlciB0bworICAgICAgICBvdXIgYXNzb2NpYXRlZCBEb2N1bWVudExvYWRlciBy
aWdodCBmcm9tIHRoZSBEb2N1bWVudCdzIGNvbnN0cnVjdGlvbgorICAgICAgICAtIENoYW5nZSBy
ZWZlcmVuY2VzIHRvIEZyYW1lTG9hZGVyOjphY3RpdmVEb2N1bWVudExvYWRlciB3aXRoaW4gRG9j
dW1lbnQKKyAgICAgICAgdG8gdXNlIHRoZSBEb2N1bWVudExvYWRlcldlYWtSZWYKKyAgICAgICAg
LSBSZW5hbWUgRG9jdW1lbnRXZWFrUmVmZXJlbmNlIHRvIERvY3VtZW50V2Vha1JlZiBmb3IgY29u
c2lzdGVuY3kgd2l0aAorICAgICAgICBEb2N1bWVudExvYWRlcldlYWtSZWYKKworICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdlYWtSZWY6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdlYWtSZWY6OkRvY3VtZW50V2Vha1Jl
Zik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
cHJvY2Vzc0h0dHBFcXVpdik6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtVGFza0NvbnRleHQ6
OlBlcmZvcm1UYXNrQ29udGV4dCk6CisgICAgICAgIChQZXJmb3JtVGFza0NvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBvc3RUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpsb2FkZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpjcmVhdGVYSFRNTCk6CisgICAgICAgIChEb2N1bWVudCk6CisKKyAg
ICAgICAgLSBNYWludGFpbiBEb2N1bWVudExvYWRlcidzIHdlYWsgcmVmZXJlbmNlIGFuZCBwYXNz
IGl0cyBwb2ludGVyIGRvd24KKyAgICAgICAgdG8gRG9jdW1lbnRXcml0dGVyIHRvIGFsbG93IGdp
dmluZyBpdCB0byBjcmVhdGVkIERvY3VtZW50cworCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExv
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6fkRvY3VtZW50TG9hZGVy
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKERvY3VtZW50
TG9hZGVyV2Vha1JlZik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcldlYWtSZWY6
OmxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcldlYWtSZWY6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcldlYWtSZWY6OkRvY3VtZW50TG9h
ZGVyV2Vha1JlZik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcldlYWtSZWY6OmNs
ZWFyUHRyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OndlYWtSZWYpOgorICAgICAgICAoRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRl
cjo6RG9jdW1lbnRXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6OmNy
ZWF0ZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjpiZWdpbik6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKERvY3VtZW50V3JpdGVyKToKKworICAgICAgICAtIE1vZGlmeSBhbGwgRG9jdW1l
bnQncyBzdWJjbGFzc2VzIHRvIHJlY2VpdmUgdGhlaXIgRG9jdW1lbnRMb2FkZXIncyBwb2ludGVy
CisgICAgICAgIHRocm91Z2ggdGhlIGNvbnN0cnVjdG9yCisKKyAgICAgICAgKiBNb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdDo6ZW1tYSk6CisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlSFRNTERv
Y3VtZW50KToKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaDoKKyAgICAgICAgKERP
TUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21NYXJrdXBXaXRoQ29udGV4dCk6CisgICAgICAg
ICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBE
aXJlY3RvcnlEb2N1bWVudDo6RlRQRGlyZWN0b3J5RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwv
RlRQRGlyZWN0b3J5RG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURv
Y3VtZW50OjpjcmVhdGUpOgorICAgICAgICAoRlRQRGlyZWN0b3J5RG9jdW1lbnQpOgorICAgICAg
ICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVu
dDo6SFRNTERvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpjcmVhdGUpOgorICAgICAgICAoSFRNTERvY3VtZW50
KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVmlld1NvdXJjZURvY3VtZW50OjpjcmVhdGUpOgorICAgICAgICAoSFRNTFZpZXdT
b3VyY2VEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OkltYWdlRG9jdW1lbnQpOgorICAgICAgICAqIGh0
bWwvSW1hZ2VEb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKEltYWdlRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvTWVkaWFEb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50OjpNZWRpYURvY3VtZW50
KToKKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhRG9jdW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChNZWRpYURvY3VtZW50KToKKyAgICAgICAg
KiBodG1sL1BsdWdpbkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRvY3Vt
ZW50OjpQbHVnaW5Eb2N1bWVudCk6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChQbHVn
aW5Eb2N1bWVudCk6CisgICAgICAgICogaHRtbC9UZXh0RG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dERvY3VtZW50OjpUZXh0RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvVGV4
dERvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RG9jdW1lbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChUZXh0RG9jdW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBv
cnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0OjpwYXRjaERvY3VtZW50
KToKKyAgICAgICAgKiBsb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhY2Vob2xkZXJEb2N1bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YWNlaG9sZGVyRG9jdW1lbnQ6OlBsYWNlaG9sZGVyRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRl
ci9TaW5rRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2lua0RvY3VtZW50OjpTaW5r
RG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9TaW5rRG9jdW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNpbmtEb2N1bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFNpbmtEb2N1bWVudCk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkRm9udDo6ZW5zdXJlU1ZHRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVu
dDo6ZGF0YSk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0RvY3VtZW50OjpTVkdEb2N1bWVudCk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFNW
R0RvY3VtZW50KToKKyAgICAgICAgKiB4bWwvRE9NUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVBhcnNlcjo6cGFyc2VGcm9tU3RyaW5nKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJl
cXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlWE1M
KToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpY
U0xUUHJvY2Vzc29yOjpjcmVhdGVEb2N1bWVudEZyb21Tb3VyY2UpOiBUcmFuc2ZlciB0aGUgb3du
ZXJEb2N1bWVudCdzIERvY3VtZW50TG9hZGVyCisgICAgICAgIGluIGNhc2Ugd2UgZW5kIHVwIG5l
ZWRpbmcgaXRzIERvY3VtZW50V3JpdGVyOjpyZXBsYWNlRG9jdW1lbnQgaW4gU2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTC4KKwogMjAxMi0xMS0yNiAgRmxvcmluIE1hbGl0
YSAgPGZtYWxpdGFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlQ29u
dGFpbmVyIGRvZXMgbm90IGNsZWFyIGNhY2hlZCBkYXRhIG9uIHJlbW92YWwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cK
aW5kZXggZjhiYTY1ZmY4NDg1MjlhY2Y4MjgxODc1MjZlZmY2MTI5OTMzM2I0Zi4uOTM0ZGJjMGM5
Zjc5OGU2YzA3NzgzZGQ1ZTlkYjMwZmQyNDBhNGI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMi0xMS0yNyAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVA
ZGlnaWEuY29tPgorCisgICAgICAgIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkgZmFp
bHMgdG8gY2FsbCBzZWN1cml0eU9yaWdpbigpLmdyYW50TG9hZExvY2FsUmVzb3VyY2VzKCkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NzExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9xd2Vi
cGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjp0ZXN0U3RvcFNj
aGVkdWxlZFBhZ2VSZWZyZXNoKTogVW5tYXJrIHRoZSBleHBlY3RlZCBmYWlsdXJlLgorCiAyMDEy
LTExLTI2ICBQaWVycmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgogCiAgICAgICAg
IFtRdF0gUkVHUkVTU0lPTihyMTM1NTc1KTogSXQgbWFkZSBhbGwgdGVzdHMgYXNzZXJ0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJl
c3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
blJlc3VsdC5jcHAKaW5kZXggZDU0ZjJiZjc0Y2YwMTY3YWIwZDVjMzhjNGExY2YxODk3M2ZlZTBj
NC4uMDc1OTZiYTk3NGUyN2U1MzdlMTk1NzVmYjNkZTU4MWUxYzE3MTNhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVz
dWx0LmNwcApAQCAtNjMsNyArNjMsNyBAQCBEb2N1bWVudCogU3BlZWNoUmVjb2duaXRpb25SZXN1
bHQ6OmVtbWEoKQogICAgIGlmIChtX2VtbWEpCiAgICAgICAgIHJldHVybiBtX2VtbWEuZ2V0KCk7
CiAKLSAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZSgwLCBL
VVJMKCkpOworICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRl
KDAsIDAsIEtVUkwoKSk7CiAKICAgICBSZWZQdHI8RWxlbWVudD4gZW1tYUVsZW1lbnQgPSBkb2N1
bWVudC0+Y3JlYXRlRWxlbWVudChlbW1hUXVhbGlmaWVkTmFtZSgiZW1tYSIpLCBmYWxzZSk7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0
aW9uLmNwcAppbmRleCAyNzY5M2IzNDA5Mzc5NzM0ODhiMTZjZTY3MjRlMjg2YTc1Y2I4ODZmLi4z
NWMxODlhY2JlMDZkYjk0N2U3NTQ4MzVhNjhlNzg3NGVmZWE4N2EzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKQEAgLTI4NywxMyArMjg3LDEzIEBAIFBhc3NSZWZQ
dHI8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJp
bmcmIG5hbWVzcGFjZVVSCiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2M7CiAjaWYgRU5BQkxFKFNW
RykKICAgICBpZiAobmFtZXNwYWNlVVJJID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCi0g
ICAgICAgIGRvYyA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAgICAgICAgZG9j
ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwLCAwLCBLVVJMKCkpOwogICAgIGVsc2UKICNlbmRpZgog
ICAgIGlmIChuYW1lc3BhY2VVUkkgPT0gSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSSkKLSAg
ICAgICAgZG9jID0gRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKDAsIEtVUkwoKSk7CisgICAgICAgIGRv
YyA9IERvY3VtZW50OjpjcmVhdGVYSFRNTCgwLCAwLCBLVVJMKCkpOwogICAgIGVsc2UKLSAgICAg
ICAgZG9jID0gRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAgICAgICBkb2MgPSBEb2N1
bWVudDo6Y3JlYXRlKDAsIDAsIEtVUkwoKSk7CiAKICAgICBkb2MtPnNldFNlY3VyaXR5T3JpZ2lu
KG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGRvYy0+c2V0Q29udGV4dEZlYXR1
cmVzKG1fZG9jdW1lbnQtPmNvbnRleHRGZWF0dXJlcygpKTsKQEAgLTM2OSw3ICszNjksNyBAQCBi
b29sIERPTUltcGxlbWVudGF0aW9uOjppc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogCiBQYXNzUmVmUHRyPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0
ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQogewotICAgIFJlZlB0cjxIVE1MRG9j
dW1lbnQ+IGQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAgIFJlZlB0cjxI
VE1MRG9jdW1lbnQ+IGQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCAwLCBLVVJMKCkpOwogICAg
IGQtPm9wZW4oKTsKICAgICBkLT53cml0ZSgiPCFkb2N0eXBlIGh0bWw+PGh0bWw+PGJvZHk+PC9i
b2R5PjwvaHRtbD4iKTsKICAgICBpZiAoIXRpdGxlLmlzTnVsbCgpKQpAQCAtMzc5LDIxICszNzks
MjEgQEAgUGFzc1JlZlB0cjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVI
VE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXQKICAgICByZXR1cm4gZC5yZWxlYXNlKCk7CiB9
CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVu
dChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29s
IGluVmlld1NvdXJjZU1vZGUpCitQYXNzUmVmUHRyPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlv
bjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUsIERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpblZpZXdTb3VyY2VNb2Rl
KQogewogICAgIGlmIChpblZpZXdTb3VyY2VNb2RlKQotICAgICAgICByZXR1cm4gSFRNTFZpZXdT
b3VyY2VEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwsIHR5cGUpOworICAgICAgICByZXR1cm4g
SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCBsb2FkZXIsIHVybCwgdHlwZSk7
CiAKICAgICAvLyBQbHVnaW5zIGNhbm5vdCB0YWtlIEhUTUwgYW5kIFhIVE1MIGZyb20gdXMsIGFu
ZCB3ZSBkb24ndCBldmVuIG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcGx1Z2luIGRhdGFiYXNlIGZv
ciB0aG9zZS4KICAgICBpZiAodHlwZSA9PSAidGV4dC9odG1sIikKLSAgICAgICAgcmV0dXJuIEhU
TUxEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gSFRNTERvY3Vt
ZW50OjpjcmVhdGUoZnJhbWUsIGxvYWRlciwgdXJsKTsKICAgICBpZiAodHlwZSA9PSAiYXBwbGlj
YXRpb24veGh0bWwreG1sIikKLSAgICAgICAgcmV0dXJuIERvY3VtZW50OjpjcmVhdGVYSFRNTChm
cmFtZSwgdXJsKTsKKyAgICAgICAgcmV0dXJuIERvY3VtZW50OjpjcmVhdGVYSFRNTChmcmFtZSwg
bG9hZGVyLCB1cmwpOwogCiAjaWYgRU5BQkxFKEZUUERJUikKICAgICAvLyBQbHVnaW5zIGNhbm5v
dCB0YWtlIEZUUCBmcm9tIHVzIGVpdGhlcgogICAgIGlmICh0eXBlID09ICJhcHBsaWNhdGlvbi94
LWZ0cC1kaXJlY3RvcnkiKQotICAgICAgICByZXR1cm4gRlRQRGlyZWN0b3J5RG9jdW1lbnQ6OmNy
ZWF0ZShmcmFtZSwgdXJsKTsKKyAgICAgICAgcmV0dXJuIEZUUERpcmVjdG9yeURvY3VtZW50Ojpj
cmVhdGUoZnJhbWUsIGxvYWRlciwgdXJsKTsKICNlbmRpZgogCiAgICAgUGx1Z2luRGF0YSogcGx1
Z2luRGF0YSA9IDA7CkBAIC00MDMsMzQgKzQwMywzNCBAQCBQYXNzUmVmUHRyPERvY3VtZW50PiBE
T01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBGcmFt
ZQogICAgIC8vIFBERiBpcyBvbmUgaW1hZ2UgdHlwZSBmb3Igd2hpY2ggYSBwbHVnaW4gY2FuIG92
ZXJyaWRlIGJ1aWx0LWluIHN1cHBvcnQuCiAgICAgLy8gV2UgZG8gbm90IHdhbnQgUXVpY2tUaW1l
IHRvIHRha2Ugb3ZlciBhbGwgaW1hZ2UgdHlwZXMsIG9idmlvdXNseS4KICAgICBpZiAoKHR5cGUg
PT0gImFwcGxpY2F0aW9uL3BkZiIgfHwgdHlwZSA9PSAidGV4dC9wZGYiKSAmJiBwbHVnaW5EYXRh
ICYmIHBsdWdpbkRhdGEtPnN1cHBvcnRzTWltZVR5cGUodHlwZSkpCi0gICAgICAgIHJldHVybiBQ
bHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gUGx1Z2lu
RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgbG9hZGVyLCB1cmwpOwogICAgIGlmIChJbWFnZTo6c3Vw
cG9ydHNUeXBlKHR5cGUpKQotICAgICAgICByZXR1cm4gSW1hZ2VEb2N1bWVudDo6Y3JlYXRlKGZy
YW1lLCB1cmwpOworICAgICAgICByZXR1cm4gSW1hZ2VEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCBs
b2FkZXIsIHVybCk7CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgIC8vIENoZWNrIHRvIHNlZSBp
ZiB0aGUgdHlwZSBjYW4gYmUgcGxheWVkIGJ5IG91ciBNZWRpYVBsYXllciwgaWYgc28gY3JlYXRl
IGEgTWVkaWFEb2N1bWVudAogICAgIC8vIEtleSBzeXN0ZW0gaXMgbm90IGFwcGxpY2FibGUgaGVy
ZS4KICAgICBET01JbXBsZW1lbnRhdGlvblN1cHBvcnRzVHlwZUNsaWVudCBjbGllbnQoZnJhbWUg
JiYgZnJhbWUtPnNldHRpbmdzKCkgJiYgZnJhbWUtPnNldHRpbmdzKCktPm5lZWRzU2l0ZVNwZWNp
ZmljUXVpcmtzKCksIHVybC5ob3N0KCkpOwogICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNU
eXBlKENvbnRlbnRUeXBlKHR5cGUpLCBTdHJpbmcoKSwgdXJsLCAmY2xpZW50KSkKLSAgICAgICAg
IHJldHVybiBNZWRpYURvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CisgICAgICAgIHJldHVy
biBNZWRpYURvY3VtZW50OjpjcmVhdGUoZnJhbWUsIGxvYWRlciwgdXJsKTsKICNlbmRpZgogCiAg
ICAgLy8gRXZlcnl0aGluZyBlbHNlIGV4Y2VwdCB0ZXh0L3BsYWluIGNhbiBiZSBvdmVycmlkZGVu
IGJ5IHBsdWdpbnMuIEluIHBhcnRpY3VsYXIsIEFkb2JlIFNWRyBWaWV3ZXIgc2hvdWxkIGJlIHVz
ZWQgZm9yIFNWRywgaWYgaW5zdGFsbGVkLgogICAgIC8vIERpc2FsbG93aW5nIHBsdWctaW5zIHRv
IHVzZSB0ZXh0L3BsYWluIHByZXZlbnRzIHBsdWctaW5zIGZyb20gaGlqYWNraW5nIGEgZnVuZGFt
ZW50YWwgdHlwZSB0aGF0IHRoZSBicm93c2VyIGlzIGV4cGVjdGVkIHRvIGhhbmRsZSwKICAgICAv
LyBhbmQgYWxzbyBzZXJ2ZXMgYXMgYW4gb3B0aW1pemF0aW9uIHRvIHByZXZlbnQgbG9hZGluZyB0
aGUgcGx1Zy1pbiBkYXRhYmFzZSBpbiB0aGUgY29tbW9uIGNhc2UuCiAgICAgaWYgKHR5cGUgIT0g
InRleHQvcGxhaW4iICYmIHBsdWdpbkRhdGEgJiYgcGx1Z2luRGF0YS0+c3VwcG9ydHNNaW1lVHlw
ZSh0eXBlKSkgCi0gICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1
cmwpOworICAgICAgICByZXR1cm4gUGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgbG9hZGVy
LCB1cmwpOwogICAgIGlmIChpc1RleHRNSU1FVHlwZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIFRl
eHREb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gVGV4dERvY3Vt
ZW50OjpjcmVhdGUoZnJhbWUsIGxvYWRlciwgdXJsKTsKIAogI2lmIEVOQUJMRShTVkcpCiAgICAg
aWYgKHR5cGUgPT0gImltYWdlL3N2Zyt4bWwiKQotICAgICAgICByZXR1cm4gU1ZHRG9jdW1lbnQ6
OmNyZWF0ZShmcmFtZSwgdXJsKTsKKyAgICAgICAgcmV0dXJuIFNWR0RvY3VtZW50OjpjcmVhdGUo
ZnJhbWUsIGxvYWRlciwgdXJsKTsKICNlbmRpZgogICAgIGlmIChpc1hNTE1JTUVUeXBlKHR5cGUp
KQotICAgICAgICByZXR1cm4gRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKKyAgICAgICAg
cmV0dXJuIERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIGxvYWRlciwgdXJsKTsKIAotICAgIHJldHVy
biBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKKyAgICByZXR1cm4gSFRNTERvY3Vt
ZW50OjpjcmVhdGUoZnJhbWUsIGxvYWRlciwgdXJsKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uaAppbmRleCBkZmZiNTQ5ZTNmYmU3ZmFhOTBjNTkxODc1YjkzNWMw
ZWVmYzUzZGIyLi5lMzc4ZDA2ZGQwMWY1ZmM4ZDY5ZDBmZDA2N2I0NTA2YzEzYWI3ZmQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaApAQCAtNjUsNyArNjUsNyBAQCBwdWJs
aWM6CiAgICAgUGFzc1JlZlB0cjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZUhUTUxEb2N1bWVudChjb25z
dCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9mIERP
TSkKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSwgRnJhbWUqLCBjb25zdCBLVVJMJiwgYm9vbCBpblZpZXdTb3VyY2VN
b2RlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSwgRnJhbWUqLCBEb2N1bWVudExvYWRlciosIGNvbnN0IEtVUkwm
LCBib29sIGluVmlld1NvdXJjZU1vZGUpOwogCiAgICAgc3RhdGljIGJvb2wgaXNYTUxNSU1FVHlw
ZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKICAgICBzdGF0aWMgYm9vbCBpc1RleHRNSU1FVHlw
ZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDM3
NTljNDQyYzk0NGJhNmJiNjg0NTYzYmI2MjFjMzk1OGMxODYwNzcuLmRlZjdjZTA5N2E4Y2E0YjFk
MGIyNGFlZDA4YjE1NzgwM2VkZGY1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDAx
LDExICs0MDEsMTEgQEAgc3RhdGljIHZvaWQgcHJpbnROYXZpZ2F0aW9uRXJyb3JNZXNzYWdlKEZy
YW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgYWN0aXZlVVJMKQogCiBzdGF0aWMgSGFzaFNldDxEb2N1
bWVudCo+KiBkb2N1bWVudHNUaGF0TmVlZFN0eWxlUmVjYWxjID0gMDsKIAotY2xhc3MgRG9jdW1l
bnRXZWFrUmVmZXJlbmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERvY3VtZW50V2Vh
a1JlZmVyZW5jZT4geworY2xhc3MgRG9jdW1lbnRXZWFrUmVmIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPERvY3VtZW50V2Vha1JlZj4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPERvY3VtZW50V2Vha1JlZmVyZW5jZT4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudFdlYWtSZWY+IGNyZWF0ZShEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3VtZW50V2Vha1Jl
ZmVyZW5jZShkb2N1bWVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3VtZW50
V2Vha1JlZihkb2N1bWVudCkpOwogICAgIH0KIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpCkBA
IC00MjEsNyArNDIxLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEb2N1bWVu
dFdlYWtSZWZlcmVuY2UoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIERvY3VtZW50V2Vha1JlZihE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC00MzIsNyArNDMyLDcgQEAgcHJp
dmF0ZToKIAogdWludDY0X3QgRG9jdW1lbnQ6OnNfZ2xvYmFsVHJlZVZlcnNpb24gPSAwOwogCi1E
b2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNY
SFRNTCwgYm9vbCBpc0hUTUwpCitEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBEb2N1
bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBp
c0hUTUwpCiAgICAgOiBDb250YWluZXJOb2RlKDAsIENyZWF0ZURvY3VtZW50KQogICAgICwgVHJl
ZVNjb3BlKHRoaXMpCiAgICAgLCBtX2d1YXJkUmVmQ291bnQoMCkKQEAgLTQ3Nyw3ICs0NzcsOCBA
QCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wg
aXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAgLCBtX2lzU3JjZG9jRG9jdW1lbnQoZmFsc2UpCiAg
ICAgLCBtX3JlbmRlcmVyKDApCiAgICAgLCBtX2V2ZW50UXVldWUoRG9jdW1lbnRFdmVudFF1ZXVl
OjpjcmVhdGUodGhpcykpCi0gICAgLCBtX3dlYWtSZWZlcmVuY2UoRG9jdW1lbnRXZWFrUmVmZXJl
bmNlOjpjcmVhdGUodGhpcykpCisgICAgLCBtX3dlYWtSZWYoRG9jdW1lbnRXZWFrUmVmOjpjcmVh
dGUodGhpcykpCisgICAgLCBtX2RvY3VtZW50TG9hZGVyV2Vha1JlZihsb2FkZXIgPyBsb2FkZXIt
PndlYWtSZWYoKSA6IDApCiAgICAgLCBtX2lkQXR0cmlidXRlTmFtZShpZEF0dHIpCiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQogICAgICwgbV9hcmVLZXlzRW5hYmxlZEluRnVsbFNjcmVlbigw
KQpAQCAtNTI1LDEwICs1MjYsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAKICAgICBtX21hcmtl
cnMgPSBhZG9wdFB0cihuZXcgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKTsKIAotICAgIGlmICht
X2ZyYW1lKQotICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyID0gbV9mcmFtZS0+bG9hZGVy
KCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAg
aWYgKCFtX2NhY2hlZFJlc291cmNlTG9hZGVyKQotICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9h
ZGVyID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSgwKTsKKyAgICBtX2NhY2hlZFJlc291
cmNlTG9hZGVyID0gbG9hZGVyID8gbG9hZGVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpIDogQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSgwKTsKICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVy
LT5zZXREb2N1bWVudCh0aGlzKTsKIAogI2lmIEVOQUJMRShMSU5LX1BSRVJFTkRFUikKQEAgLTY0
Niw3ICs2NDQsNyBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkKICAgICBpZiAobV9lbGVtU2hlZXQp
CiAgICAgICAgIG1fZWxlbVNoZWV0LT5jbGVhck93bmVyTm9kZSgpOwogCi0gICAgbV93ZWFrUmVm
ZXJlbmNlLT5jbGVhcigpOworICAgIG1fd2Vha1JlZi0+Y2xlYXIoKTsKIAogICAgIGNsZWFyU3R5
bGVSZXNvbHZlcigpOyAvLyBXZSBuZWVkIHRvIGRlc3RvcnkgQ1NTRm9udFNlbGVjdG9yIGJlZm9y
ZSBkZXN0cm95aW5nIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuCiAKQEAgLTI4NzgsOCArMjg3Niw5
IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29uc3QgU3RyaW5nJiBlcXVpdiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgICAgICBpZiAoZnJhbWUpIHsKICAgICAgICAgICAg
IEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKTsKICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwOwotICAgICAgICAgICAgaWYgKGZy
YW1lTG9hZGVyLT5hY3RpdmVEb2N1bWVudExvYWRlcigpICYmIGZyYW1lTG9hZGVyLT5hY3RpdmVE
b2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VMb2FkZXIoKSkKLSAgICAgICAgICAgICAgICBy
ZXF1ZXN0SWRlbnRpZmllciA9IGZyYW1lTG9hZGVyLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5t
YWluUmVzb3VyY2VMb2FkZXIoKS0+aWRlbnRpZmllcigpOworICAgICAgICAgICAgRG9jdW1lbnRM
b2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbG9hZGVyKCk7CisgICAgICAgICAgICBpZiAoZG9jdW1l
bnRMb2FkZXIgJiYgZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxvYWRlcigpKQorICAgICAg
ICAgICAgICAgIHJlcXVlc3RJZGVudGlmaWVyID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJj
ZUxvYWRlcigpLT5pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBpZiAoZnJhbWVMb2FkZXItPnNo
b3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnRlbnQsIHVybCgpLCByZXF1ZXN0
SWRlbnRpZmllcikpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJSZWZ1c2Vk
IHRvIGRpc3BsYXkgJyIgKyB1cmwoKS5zdHJpbmcoKSArICInIGluIGEgZnJhbWUgYmVjYXVzZSBp
dCBzZXQgJ1gtRnJhbWUtT3B0aW9ucycgdG8gJyIgKyBjb250ZW50ICsgIicuIjsKICAgICAgICAg
ICAgICAgICBmcmFtZUxvYWRlci0+c3RvcEFsbExvYWRlcnMoKTsKQEAgLTQ4MDYsMTMgKzQ4MDUs
MTMgQEAgdm9pZCBEb2N1bWVudDo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGwKIHN0cnVjdCBQZXJmb3JtVGFza0NvbnRleHQg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlcmZvcm1UYXNrQ29udGV4dCk7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFBlcmZvcm1UYXNrQ29udGV4dChQYXNzUmVm
UHRyPERvY3VtZW50V2Vha1JlZmVyZW5jZT4gZG9jdW1lbnRSZWZlcmVuY2UsIFBhc3NPd25QdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKKyAgICBQZXJmb3JtVGFza0NvbnRl
eHQoUGFzc1JlZlB0cjxEb2N1bWVudFdlYWtSZWY+IGRvY3VtZW50UmVmZXJlbmNlLCBQYXNzT3du
UHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCiAgICAgICAgIDogZG9jdW1l
bnRSZWZlcmVuY2UoZG9jdW1lbnRSZWZlcmVuY2UpCiAgICAgICAgICwgdGFzayh0YXNrKQogICAg
IHsKICAgICB9CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRXZWFrUmVmZXJlbmNlPiBkb2N1bWVudFJl
ZmVyZW5jZTsKKyAgICBSZWZQdHI8RG9jdW1lbnRXZWFrUmVmPiBkb2N1bWVudFJlZmVyZW5jZTsK
ICAgICBPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzazsKIH07CiAKQEAg
LTQ4MzgsNyArNDgzNyw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZFJlY2VpdmVUYXNrKHZvaWQqIHVu
dHlwZWRDb250ZXh0KQogCiB2b2lkIERvY3VtZW50Ojpwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+
IHRhc2spCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChkaWRSZWNlaXZlVGFzaywgbmV3IFBlcmZv
cm1UYXNrQ29udGV4dChtX3dlYWtSZWZlcmVuY2UsIHRhc2spKTsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKGRpZFJlY2VpdmVUYXNrLCBuZXcgUGVyZm9ybVRhc2tDb250ZXh0KG1fd2Vha1JlZiwgdGFz
aykpOwogfQogCiB2b2lkIERvY3VtZW50OjpwZW5kaW5nVGFza3NUaW1lckZpcmVkKFRpbWVyPERv
Y3VtZW50PiopCkBAIC01NjYxLDE3ICs1NjYwLDkgQEAgYm9vbCBEb2N1bWVudDo6c2hvdWxkRGlz
cGxheVNlYW1sZXNzbHlXaXRoUGFyZW50KCkgY29uc3QKIAogRG9jdW1lbnRMb2FkZXIqIERvY3Vt
ZW50Ojpsb2FkZXIoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgCi0gICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigp
LT5kb2N1bWVudExvYWRlcigpOwotICAgIGlmICghbG9hZGVyKQorICAgIGlmICghbV9kb2N1bWVu
dExvYWRlcldlYWtSZWYpCiAgICAgICAgIHJldHVybiAwOwotICAgIAotICAgIGlmIChtX2ZyYW1l
LT5kb2N1bWVudCgpICE9IHRoaXMpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIHJldHVy
biBsb2FkZXI7CisgICAgcmV0dXJuIG1fZG9jdW1lbnRMb2FkZXJXZWFrUmVmLT5sb2FkZXIoKTsK
IH0KIAogI2lmIEVOQUJMRShNSUNST0RBVEEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDA3NWIw
MGU5YjMwZTA5YmEyYTI5Mzg0MDI0ODgyMzZkNjBmOGNjOTMuLjljZmM5OTlkMWU2OWJiMjE3NDYx
ZWNlYTE4YmMzZGM5MGEyNTczN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03NSwxMSArNzUs
MTIgQEAgY2xhc3MgRGF0YWJhc2U7CiBjbGFzcyBEYXRhYmFzZVRocmVhZDsKIGNsYXNzIERvY3Vt
ZW50RnJhZ21lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKK2NsYXNzIERvY3VtZW50TG9hZGVy
V2Vha1JlZjsKIGNsYXNzIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjsKIGNsYXNzIERvY3VtZW50
UGFyc2VyOwogY2xhc3MgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjsKIGNsYXNzIERvY3Vt
ZW50VHlwZTsKLWNsYXNzIERvY3VtZW50V2Vha1JlZmVyZW5jZTsKK2NsYXNzIERvY3VtZW50V2Vh
a1JlZjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBFbGVtZW50QXR0cmlidXRlRGF0YTsKIGNsYXNz
IEVudGl0eVJlZmVyZW5jZTsKQEAgLTIxMSwxMyArMjEyLDEzIEBAIHR5cGVkZWYgSGFzaE1hcDx1
bnNpZ25lZCwgT3duUHRyPEltbXV0YWJsZUF0dHJpYnV0ZURhdGFDYWNoZUVudHJ5PiwgQWxyZWFk
eUhhc2hlCiAKIGNsYXNzIERvY3VtZW50IDogcHVibGljIENvbnRhaW5lck5vZGUsIHB1YmxpYyBU
cmVlU2NvcGUsIHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VS
TCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZy
YW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3VtZW50KGZyYW1lLCB1cmwsIGZhbHNlLCBmYWxz
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3VtZW50KGZyYW1lLCBsb2FkZXIs
IHVybCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3Vt
ZW50PiBjcmVhdGVYSFRNTChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlWEhUTUwoRnJhbWUqIGZyYW1lLCBEb2N1bWVu
dExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IERvY3VtZW50KGZyYW1lLCB1cmwsIHRydWUsIGZhbHNlKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRG9jdW1lbnQoZnJhbWUsIGxvYWRlciwgdXJsLCB0cnVlLCBm
YWxzZSkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5Eb2N1bWVudCgpOwogCkBAIC0xMTc0LDcgKzEx
NzUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIERvY3VtZW50KEZyYW1l
KiwgY29uc3QgS1VSTCYsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpOworICAgIERvY3VtZW50
KEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJiwgYm9vbCBpc1hIVE1MLCBib29s
IGlzSFRNTCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlU2VjdXJpdHlPcmlnaW4oKSBP
VkVSUklERTsKIApAQCAtMTQ1NCw3ICsxNDU1LDggQEAgcHJpdmF0ZToKICAgICBSZW5kZXJPYmpl
Y3QqIG1fcmVuZGVyZXI7CiAgICAgUmVmUHRyPERvY3VtZW50RXZlbnRRdWV1ZT4gbV9ldmVudFF1
ZXVlOwogCi0gICAgUmVmUHRyPERvY3VtZW50V2Vha1JlZmVyZW5jZT4gbV93ZWFrUmVmZXJlbmNl
OworICAgIFJlZlB0cjxEb2N1bWVudFdlYWtSZWY+IG1fd2Vha1JlZjsKKyAgICBSZWZQdHI8RG9j
dW1lbnRMb2FkZXJXZWFrUmVmPiBtX2RvY3VtZW50TG9hZGVyV2Vha1JlZjsKIAogICAgIEhhc2hT
ZXQ8TWVkaWFDYW5TdGFydExpc3RlbmVyKj4gbV9tZWRpYUNhblN0YXJ0TGlzdGVuZXJzOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggZjZiZjk3MDE1YWNiMWIyNTgzNjdhZWVhYzA1
MzMxOTAxNzFmNmUyNC4uMWQ0YjU0NTdjMDYzZjhhOGY0ZjRlZWU5ZDk3MDBhZjQzN2UwZTE3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNzI4LDcgKzcyOCw3IEBAIFBhc3NSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwV2l0aENvbnRleHQo
RG9jdW1lbnQqIGRvY3VtCiAgICAgdGFnZ2VkTWFya3VwLmFwcGVuZChtYXJrdXAuc3Vic3RyaW5n
KGZyYWdtZW50RW5kKSk7CiAKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gdGFnZ2VkRnJh
Z21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9jdW1lbnQsIHRhZ2dlZE1hcmt1cC50
b1N0cmluZygpLCBiYXNlVVJMLCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsKLSAgICBSZWZQdHI8RG9j
dW1lbnQ+IHRhZ2dlZERvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAg
IFJlZlB0cjxEb2N1bWVudD4gdGFnZ2VkRG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlKDAsIDAs
IEtVUkwoKSk7CiAgICAgdGFnZ2VkRG9jdW1lbnQtPnNldENvbnRleHRGZWF0dXJlcyhkb2N1bWVu
dC0+Y29udGV4dEZlYXR1cmVzKCkpOwogICAgIHRhZ2dlZERvY3VtZW50LT50YWtlQWxsQ2hpbGRy
ZW5Gcm9tKHRhZ2dlZEZyYWdtZW50LmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRleCBjMWEwMTUwZTMxMDFlYTQ1NzJiYzIzNDEwNTVk
Y2E5ODZmNGYxMDlhLi42MzZlZDNhMmU1MzMwMzdmZThiNWU5NjBmYWE4YjhhOTA1M2E2YWJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtNDI4
LDggKzQyOCw4IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpCiAg
ICAgSFRNTERvY3VtZW50UGFyc2VyOjpmaW5pc2goKTsKIH0KIAotRlRQRGlyZWN0b3J5RG9jdW1l
bnQ6OkZUUERpcmVjdG9yeURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQot
ICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCitGVFBEaXJlY3RvcnlEb2N1bWVudDo6RlRQ
RGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCBLVVJMJiB1cmwpCisgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIGxvYWRlciwgdXJsKQog
ewogI2lmICFMT0dfRElTQUJMRUQKICAgICBMb2dGVFAuc3RhdGUgPSBXVEZMb2dDaGFubmVsT247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmgKaW5kZXggZTdlNTJm
N2E3MjRiMTEzYTAyMDM4Yjc0MzJlNTY1OTdiZDQ3MWZmOS4uN2VjNWI1ZjQyOTExYmZlNTdhMDMz
NTRlM2YwM2Y5NGQ3ZjcyYjZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBE
aXJlY3RvcnlEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuaApAQCAtMzMsMTMgKzMzLDEzIEBAIGNsYXNzIERPTUltcGxlbWVudGF0aW9uOwog
ICAgIAogY2xhc3MgRlRQRGlyZWN0b3J5RG9jdW1lbnQgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGVFBEaXJlY3RvcnlEb2N1bWVudD4gY3Jl
YXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEZUUERpcmVjdG9yeURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEZUUERpcmVjdG9yeURvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBGVFBEaXJlY3RvcnlEb2N1bWVudChmcmFtZSwgbG9hZGVyLCB1cmwpKTsK
ICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRlRQRGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqLCBjb25z
dCBLVVJMJik7CisgICAgRlRQRGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqLCBEb2N1bWVudExvYWRl
ciosIGNvbnN0IEtVUkwmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+
IGNyZWF0ZVBhcnNlcigpOwogfTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNw
cAppbmRleCBiOWQ3NjdlMzA0YmM5YTVjMGQzYzY0MDc1OTg1ODczYTdjMzRjMjRkLi42MTJkZTU3
NzEzOGU3ZGJiOWYzMmI5ZjRkMDY1NDQxNjNhYjFjN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RG9jdW1lbnQuY3BwCkBAIC04MCw4ICs4MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTERvY3VtZW50OjpIVE1MRG9jdW1lbnQoRnJh
bWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCi0gICAgOiBEb2N1bWVudChmcmFtZSwgdXJsLCBm
YWxzZSwgdHJ1ZSkKK0hUTUxEb2N1bWVudDo6SFRNTERvY3VtZW50KEZyYW1lKiBmcmFtZSwgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VSTCYgdXJsKQorICAgIDogRG9jdW1lbnQoZnJh
bWUsIGxvYWRlciwgdXJsLCBmYWxzZSwgdHJ1ZSkKIHsKICAgICBjbGVhclhNTFZlcnNpb24oKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCmluZGV4IGQzOWYzOTJhYWE0MmI4MTkzNzRh
NWExYWFhYzIyNjUxM2I0NTk3NWYuLjUwNjJiYzUwZGU2MjRkNWZhYjNhN2RhYmFkYzVhNTUwNjhl
YWU3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaApAQCAtMzUsOSArMzUsOSBAQCBj
bGFzcyBIVE1MRWxlbWVudDsKIAogY2xhc3MgSFRNTERvY3VtZW50IDogcHVibGljIERvY3VtZW50
LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEhUTUxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJs
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFt
ZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VSTCYgdXJsKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxEb2N1bWVudChmcmFtZSwgbG9hZGVyLCB1cmwpKTsK
ICAgICB9CiAgICAgdmlydHVhbCB+SFRNTERvY3VtZW50KCk7CiAKQEAgLTgwLDcgKzgwLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzRXh0cmFOYW1lZEl0ZW0oQXRvbWljU3RyaW5nSW1wbCogbmFt
ZSk7CiAKIHByb3RlY3RlZDoKLSAgICBIVE1MRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJik7
CisgICAgSFRNTERvY3VtZW50KEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJik7
CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAppbmRleCBhYmYyNDM4
MzZkM2I3MzQwZWJkMTM4ZDA2MzNiYjUwMmFiYTg5OTQyLi44MGQyNzQ5ZTlmNTRjNzFmMDM5ZWM0
MTI4YzIxN2YxZjAzYjc2MWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWV3U291cmNlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdT
b3VyY2VEb2N1bWVudC5jcHAKQEAgLTQ5LDggKzQ5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1IVE1MVmlld1NvdXJjZURvY3VtZW50OjpI
VE1MVmlld1NvdXJjZURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQotICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCitIVE1M
Vmlld1NvdXJjZURvY3VtZW50OjpIVE1MVmlld1NvdXJjZURvY3VtZW50KEZyYW1lKiBmcmFtZSwg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQorICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCBsb2FkZXIsIHVybCkKICAgICAsIG1f
dHlwZShtaW1lVHlwZSkKIHsKICAgICBzdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5zZXRVc2VzQmVm
b3JlQWZ0ZXJSdWxlc092ZXJyaWRlKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWV3U291cmNlRG9jdW1lbnQuaAppbmRleCBjNWM2NjgyOGU4MzcxODI1ZDQ3MGMwYmRiYmRlMDMw
ODNlNTIxNzUzLi4yMjQ4YjM4ODFkMjE5YzU3Y2Y4MTU5NjRmNjhlYTBjODNmZTNhNmE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaApAQCAtMzUsMTUg
KzM1LDE1IEBAIGNsYXNzIEhUTUxUb2tlbjsKIAogY2xhc3MgSFRNTFZpZXdTb3VyY2VEb2N1bWVu
dCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEhUTUxWaWV3U291cmNlRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1M
Vmlld1NvdXJjZURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxWaWV3U291cmNlRG9jdW1lbnQoZnJhbWUs
IHVybCwgbWltZVR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVmlld1Nv
dXJjZURvY3VtZW50KGZyYW1lLCBsb2FkZXIsIHVybCwgbWltZVR5cGUpKTsKICAgICB9CiAKICAg
ICB2b2lkIGFkZFNvdXJjZShjb25zdCBTdHJpbmcmLCBIVE1MVG9rZW4mKTsKIAogcHJpdmF0ZToK
LSAgICBIVE1MVmlld1NvdXJjZURvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpOworICAgIEhUTUxWaWV3U291cmNlRG9jdW1lbnQoRnJhbWUqLCBEb2N1
bWVudExvYWRlciosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAg
IC8vIFJldHVybnMgSFRNTFZpZXdTb3VyY2VQYXJzZXIgb3IgVGV4dERvY3VtZW50UGFyc2VyIGJh
c2VkIG9uIG1fdHlwZS4KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNy
ZWF0ZVBhcnNlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggNTFh
MDMwNGE1ZDBjNTA0MzQ0YjQ1OGEzYzJhY2MxNjNiZWEzMDJjMS4uZjUxMzY2YWQ4NzllZGU2MWQ2
M2YyODdlNGI5ZGM2YWNlODEzYmFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQu
Y3BwCkBAIC0xNzQsOCArMTc0LDggQEAgdm9pZCBJbWFnZURvY3VtZW50UGFyc2VyOjpmaW5pc2go
KQogICAgIAogLy8gLS0tLS0tLS0KIAotSW1hZ2VEb2N1bWVudDo6SW1hZ2VEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKLSAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJs
KQorSW1hZ2VEb2N1bWVudDo6SW1hZ2VEb2N1bWVudChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHVybCkKKyAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwg
bG9hZGVyLCB1cmwpCiAgICAgLCBtX2ltYWdlRWxlbWVudCgwKQogICAgICwgbV9pbWFnZVNpemVJ
c0tub3duKGZhbHNlKQogICAgICwgbV9kaWRTaHJpbmtJbWFnZShmYWxzZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZURvY3VtZW50LmgKaW5kZXggZmFmOTIwNzBmZjQwMjU0ODk0NmU3YTY4MDE1ZWUxMjQx
NGM4MjIyMy4uNGRiZDhkODAyZDc5ODgzYmFkM2I4ZGQwNjdhMzEwN2RjMjRkNjcxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmgKQEAgLTM0LDkgKzM0LDkgQEAgY2xhc3MgSW1hZ2VE
b2N1bWVudEVsZW1lbnQ7CiAKIGNsYXNzIEltYWdlRG9jdW1lbnQgOiBwdWJsaWMgSFRNTERvY3Vt
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZURvY3VtZW50PiBjcmVh
dGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW1hZ2VEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgY29uc3QgS1VSTCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
bWFnZURvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
bWFnZURvY3VtZW50KGZyYW1lLCBsb2FkZXIsIHVybCkpOwogICAgIH0KIAogICAgIENhY2hlZElt
YWdlKiBjYWNoZWRJbWFnZSgpOwpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBp
bWFnZUNsaWNrZWQoaW50IHgsIGludCB5KTsKIAogcHJpdmF0ZToKLSAgICBJbWFnZURvY3VtZW50
KEZyYW1lKiwgY29uc3QgS1VSTCYpOworICAgIEltYWdlRG9jdW1lbnQoRnJhbWUqLCBEb2N1bWVu
dExvYWRlciosIGNvbnN0IEtVUkwmKTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVu
dFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2VEb2N1bWVu
dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQu
Y3BwCmluZGV4IGU1MTk0NTQyYTZjMDU2ZWFmZTNkMjE5OWNmYzQ5MDdjMTRkMGEwNmUuLmI0MWU1
MDg2YWViOWI1MDA0M2E3NDhjYTMzZDY0NGZjMjJjNTg4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYURvY3VtZW50LmNwcApAQCAtMTE3LDggKzExNyw4IEBAIHZvaWQgTWVkaWFEb2N1bWVudFBh
cnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqLCBjb25zdCBjaGFyKiwgc2l6ZV90KQog
ICAgIGZpbmlzaCgpOwogfQogICAgIAotTWVkaWFEb2N1bWVudDo6TWVkaWFEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKLSAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJs
KQorTWVkaWFEb2N1bWVudDo6TWVkaWFEb2N1bWVudChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHVybCkKKyAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwg
bG9hZGVyLCB1cmwpCiAgICAgLCBtX3JlcGxhY2VNZWRpYUVsZW1lbnRUaW1lcih0aGlzLCAmTWVk
aWFEb2N1bWVudDo6cmVwbGFjZU1lZGlhRWxlbWVudFRpbWVyRmlyZWQpCiB7CiAgICAgc2V0Q29t
cGF0aWJpbGl0eU1vZGUoUXVpcmtzTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5o
CmluZGV4IDJkODEyOTYzYmYxMWZiZWE2ZDFjNWM2MGVlNzYxY2MyODY0MjE4N2UuLjI4NTIxNzQ4
Mjk2ZDllMWExMTk1MjY3MTRhOTRiYjAwZjdhZDc0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFE
b2N1bWVudC5oCkBAIC0zNCwxNiArMzQsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBNZWRpYURvY3VtZW50IDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWVkaWFEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3Qg
S1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhRG9jdW1lbnQ+IGNyZWF0ZShG
cmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHVybCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFEb2N1bWVudChmcmFtZSwgdXJs
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFEb2N1bWVudChmcmFtZSwgbG9h
ZGVyLCB1cmwpKTsKICAgICB9CiAgICAgdmlydHVhbCB+TWVkaWFEb2N1bWVudCgpOwogCiAgICAg
dm9pZCBtZWRpYUVsZW1lbnRTYXdVbnN1cHBvcnRlZFRyYWNrcygpOwogCiBwcml2YXRlOgotICAg
IE1lZGlhRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJik7CisgICAgTWVkaWFEb2N1bWVudChG
cmFtZSosIERvY3VtZW50TG9hZGVyKiwgY29uc3QgS1VSTCYpOwogCiAgICAgdmlydHVhbCBib29s
IGlzTWVkaWFEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0gICAgICAgIAogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCmluZGV4IDQ5NjQ0OTI4MTUwZWIyNGE2NDQ1OGIy
ZmM0ZDI0YzE5YzI2MmI2ZDEuLjYxZjRjZmVkNzUxOWI0ZmY5MGY3MzQ4MzM0ZDJiMTc4YmIwMjU3
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCkBAIC0xMzcsOCArMTM3
LDggQEAgdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0
ZXIqLCBjb25zdCBjaGFyKiwgc2l6ZV90KQogICAgIGZpbmlzaCgpOwogfQogCi1QbHVnaW5Eb2N1
bWVudDo6UGx1Z2luRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCi0gICAg
OiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCkKK1BsdWdpbkRvY3VtZW50OjpQbHVnaW5Eb2N1bWVu
dChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHVybCkK
KyAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgbG9hZGVyLCB1cmwpCiAgICAgLCBtX3Nob3VsZExv
YWRQbHVnaW5NYW51YWxseSh0cnVlKQogewogICAgIHNldENvbXBhdGliaWxpdHlNb2RlKFF1aXJr
c01vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCmluZGV4IDZkYWE5N2NmNWQ1
OTM5ODc3YzE1MTNhMTc5ODdkODVkMDMzNWZjOTQuLjM2YTRmMmVlYzdhYzAwNjZkMDMxYTIyZGU0
MTZlZjU1ZDk5ZTUxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgKQEAgLTM0
LDkgKzM0LDkgQEAgY2xhc3MgV2lkZ2V0OwogCiBjbGFzcyBQbHVnaW5Eb2N1bWVudCA6IHB1Ymxp
YyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpbkRv
Y3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGx1Z2luRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUGx1Z2luRG9jdW1lbnQoZnJhbWUsIHVybCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFBsdWdpbkRvY3VtZW50KGZyYW1lLCBsb2FkZXIsIHVybCkpOwogICAgIH0K
IAogICAgIHZvaWQgc2V0UGx1Z2luTm9kZShOb2RlKiBwbHVnaW5Ob2RlKSB7IG1fcGx1Z2luTm9k
ZSA9IHBsdWdpbk5vZGU7IH0KQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hv
dWxkTG9hZFBsdWdpbk1hbnVhbGx5KCkgeyByZXR1cm4gbV9zaG91bGRMb2FkUGx1Z2luTWFudWFs
bHk7IH0KIAogcHJpdmF0ZToKLSAgICBQbHVnaW5Eb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwm
KTsKKyAgICBQbHVnaW5Eb2N1bWVudChGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgY29uc3QgS1VS
TCYpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJz
ZXIoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNQbHVnaW5Eb2N1bWVudCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0gICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHREb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVu
dC5jcHAKaW5kZXggOTMzNGEzOTdiZWRmMjljNzZlMjNjY2FjNTBjYzJmMWU5NzljZGE1ZC4uYmI4
MDkwMjIxNjU0ODExNTUyYmVmZjI2NWU2N2U2MThkY2MwY2I0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dERvY3VtZW50LmNwcApAQCAtMjksOCArMjksOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVRleHREb2N1bWVudDo6VGV4dERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYg
dXJsKQotICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCitUZXh0RG9jdW1lbnQ6OlRleHRE
b2N1bWVudChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwm
IHVybCkKKyAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgbG9hZGVyLCB1cmwpCiB7CiAgICAgc2V0
Q29tcGF0aWJpbGl0eU1vZGUoUXVpcmtzTW9kZSk7CiAgICAgbG9ja0NvbXBhdGliaWxpdHlNb2Rl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuaAppbmRleCAyZWE0OWY4MWE4MDhlOTY3YmY2
OTQyMGJmZjA0MGFiMGRlYjUwZTgyLi40NDkwZjdjZTlhMDI0NWY5MmE5YjljNDJkNzBiYmU0Yzhh
MWIzMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmgKQEAgLTMxLDEzICszMSwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRleHREb2N1bWVudCA6IHB1YmxpYyBIVE1M
RG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHREb2N1bWVudD4g
Y3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFRleHREb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgY29uc3QgS1VSTCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBUZXh0RG9jdW1lbnQoZnJhbWUsIHVybCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFRleHREb2N1bWVudChmcmFtZSwgbG9hZGVyLCB1cmwpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgVGV4dERvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYpOworICAgIFRleHREb2N1bWVudChG
cmFtZSosIERvY3VtZW50TG9hZGVyKiwgY29uc3QgS1VSTCYpOwogICAgIAogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCA4ZTZjMTgwMGQzNTI4
MjY0ZTUzMTM0ZWQ4ZGM2MWI4M2VmODhiOTU2Li5jYTc3MjdlY2QzZGNhOTc5NWYwMzJjY2Q4Zjgx
NDBkMDQ0YThlNTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0
Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBw
b3J0LmNwcApAQCAtODksNyArODksNyBAQCBET01QYXRjaFN1cHBvcnQ6On5ET01QYXRjaFN1cHBv
cnQoKSB7IH0KIAogdm9pZCBET01QYXRjaFN1cHBvcnQ6OnBhdGNoRG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiBtYXJrdXApCiB7Ci0gICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gbmV3RG9jdW1lbnQgPSBI
VE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAgIFJlZlB0cjxIVE1MRG9jdW1lbnQ+
IG5ld0RvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUoMCwgMCwgS1VSTCgpKTsKICAgICBu
ZXdEb2N1bWVudC0+c2V0Q29udGV4dEZlYXR1cmVzKG1fZG9jdW1lbnQtPmNvbnRleHRGZWF0dXJl
cygpKTsKICAgICBSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IHBhcnNlciA9IEhUTUxEb2N1bWVudFBh
cnNlcjo6Y3JlYXRlKG5ld0RvY3VtZW50LmdldCgpLCBmYWxzZSk7CiAgICAgcGFyc2VyLT5pbnNl
cnQobWFya3VwKTsgLy8gVXNlIGluc2VydCgpIHNvIHRoYXQgdGhlIHBhcnNlciB3aWxsIG5vdCB5
aWVsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDIxOGRi
ODIyZmYzMjNlYjk5ZWNmMThjNTgxOTZmODRmZWI4MWRjMDAuLjA3OWQwYzI5ZjU4YTM1ZDg3YTY3
ZmVhYmJlNzIyNmE0NzgxNjZmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcApAQCAtODgsNyArODgsOCBAQCBEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJgogICAgIDog
bV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKHRydWUpCiAgICAgLCBtX2ZyYW1lKDApCiAgICAg
LCBtX2NhY2hlZFJlc291cmNlTG9hZGVyKENhY2hlZFJlc291cmNlTG9hZGVyOjpjcmVhdGUodGhp
cykpCi0gICAgLCBtX3dyaXRlcihtX2ZyYW1lKQorICAgICwgbV93cml0ZXIobV9mcmFtZSwgdGhp
cykKKyAgICAsIG1fd2Vha1JlZihEb2N1bWVudExvYWRlcldlYWtSZWY6OmNyZWF0ZSh0aGlzKSkK
ICAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0KHJlcSkKICAgICAsIG1fc3Vic3RpdHV0ZURhdGEoc3Vi
c3RpdHV0ZURhdGEpCiAgICAgLCBtX29yaWdpbmFsUmVxdWVzdENvcHkocmVxKQpAQCAtMTIwLDYg
KzEyMSw3IEBAIERvY3VtZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIoKQogICAgIGlmIChtX2lj
b25EYXRhQ2FsbGJhY2spCiAgICAgICAgIG1faWNvbkRhdGFDYWxsYmFjay0+aW52YWxpZGF0ZSgp
OwogICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmNsZWFyRG9jdW1lbnRMb2FkZXIoKTsKKyAg
ICBtX3dlYWtSZWYtPmNsZWFyUHRyKCk7CiB9CiAKIFBhc3NSZWZQdHI8UmVzb3VyY2VCdWZmZXI+
IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZTVhY2Y0YzgyM2FiNjg3ZmFlMzRlOTM4ZDQ0YjA3
ZTg0ODE3M2E0OS4uMmY3MzJkN2YwNjhmMmE1MWVhMGMwM2JlZDlkYTE4YmVjNDk1Zjk2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTY2LDYgKzY2LDE5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFJlc291cmNlTG9h
ZGVyPiA+IFJlc291cmNlTG9hZGVyU2V0OwogICAgIHR5cGVkZWYgVmVjdG9yPFJlc291cmNlUmVz
cG9uc2U+IFJlc3BvbnNlVmVjdG9yOwogCisgICAgY2xhc3MgRG9jdW1lbnRMb2FkZXJXZWFrUmVm
IDogcHVibGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXJXZWFrUmVmPiB7CisgICAgcHVibGlj
OgorICAgICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyKCkgeyByZXR1cm4gbV9wdHI7IH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyV2Vh
a1JlZj4gY3JlYXRlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBEb2N1bWVudExvYWRlcldlYWtSZWYobG9hZGVyKSk7IH0KKyAgICAgICAgRG9jdW1lbnRMb2Fk
ZXJXZWFrUmVmKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpIDogbV9wdHIobG9hZGVyKSB7IH0KKyAg
ICAgICAgdm9pZCBjbGVhclB0cigpIHsgbV9wdHIgPSAwOyB9CisKKyAgICAgICAgRG9jdW1lbnRM
b2FkZXIqIG1fcHRyOworICAgICAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CisgICAg
fTsKKwogICAgIGNsYXNzIERvY3VtZW50TG9hZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8RG9jdW1l
bnRMb2FkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3Vt
ZW50TG9hZGVyPiBjcmVhdGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBT
dWJzdGl0dXRlRGF0YSYgZGF0YSkKQEAgLTg1LDYgKzk4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBQYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkg
Y29uc3Q7CiAgICAgICAgIAogICAgICAgICBEb2N1bWVudFdyaXRlciogd3JpdGVyKCkgY29uc3Qg
eyByZXR1cm4gJm1fd3JpdGVyOyB9CisgICAgICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXJX
ZWFrUmVmPiB3ZWFrUmVmKCkgeyByZXR1cm4gbV93ZWFrUmVmOyB9CiAKICAgICAgICAgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QoKSBjb25zdDsKICAgICAgICAgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3RDb3B5KCkgY29uc3Q7CkBAIC0yODEsNiAr
Mjk1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8UmVzb3VyY2VCdWZm
ZXI+IG1fbWFpblJlc291cmNlRGF0YTsKICAgICAgICAgCiAgICAgICAgIG11dGFibGUgRG9jdW1l
bnRXcml0ZXIgbV93cml0ZXI7CisgICAgICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcldlYWtSZWY+
IG1fd2Vha1JlZjsKIAogICAgICAgICAvLyBBIHJlZmVyZW5jZSB0byBhY3R1YWwgcmVxdWVzdCB1
c2VkIHRvIGNyZWF0ZSB0aGUgZGF0YSBzb3VyY2UuCiAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG9u
bHkgYmUgdXNlZCBieSB0aGUgcmVzb3VyY2VMb2FkRGVsZWdhdGUncwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFdyaXRlci5jcHAKaW5kZXggMWExNmVlYzU2YjU5YzM5YzAzNDgxYjhlZWM3
YzIyMzA0ZmY0NjlkOS4uZDY4MDI0ZTJhYWE0ZWU0YzliMWZkMjcwZmQ2ZDAzNWIzYzU4ZjBjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCkBAIC01NCw4ICs1NCw5
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5SZWZlclRvUGFyZW50RnJhbWVFbmNvZGluZyhjb25z
dCBGcmFtZSogZnJhbWUsIGNvbnN0IEZyYW1lCiAgICAgcmV0dXJuIHBhcmVudEZyYW1lICYmIHBh
cmVudEZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3MoZnJhbWUt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwogfQogICAgIAotRG9jdW1lbnRXcml0ZXI6
OkRvY3VtZW50V3JpdGVyKEZyYW1lKiBmcmFtZSkKK0RvY3VtZW50V3JpdGVyOjpEb2N1bWVudFdy
aXRlcihGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgOiBtX2ZyYW1l
KGZyYW1lKQorICAgICwgbV9kb2N1bWVudExvYWRlcihsb2FkZXIpCiAgICAgLCBtX2hhc1JlY2Vp
dmVkU29tZURhdGEoZmFsc2UpCiAgICAgLCBtX2VuY29kaW5nV2FzQ2hvc2VuQnlVc2VyKGZhbHNl
KQogICAgICwgbV9zdGF0ZShOb3RTdGFydGVkV3JpdGluZ1N0YXRlKQpAQCAtMTAxLDEwICsxMDIs
MTAgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oKQogUGFzc1JlZlB0cjxEb2N1bWVudD4g
RG9jdW1lbnRXcml0ZXI6OmNyZWF0ZURvY3VtZW50KGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBp
ZiAoIW1fZnJhbWUtPmxvYWRlcigpLT5zdGF0ZU1hY2hpbmUoKS0+aXNEaXNwbGF5aW5nSW5pdGlh
bEVtcHR5RG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnNob3VsZFVz
ZVBsdWdpbkRvY3VtZW50KG1fbWltZVR5cGUpKQotICAgICAgICByZXR1cm4gUGx1Z2luRG9jdW1l
bnQ6OmNyZWF0ZShtX2ZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gUGx1Z2luRG9jdW1lbnQ6
OmNyZWF0ZShtX2ZyYW1lLCBtX2RvY3VtZW50TG9hZGVyLCB1cmwpOwogICAgIGlmICghbV9mcmFt
ZS0+bG9hZGVyKCktPmNsaWVudCgpLT5oYXNIVE1MVmlldygpKQotICAgICAgICByZXR1cm4gUGxh
Y2Vob2xkZXJEb2N1bWVudDo6Y3JlYXRlKG1fZnJhbWUsIHVybCk7Ci0gICAgcmV0dXJuIERPTUlt
cGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChtX21pbWVUeXBlLCBtX2ZyYW1lLCB1cmwsIG1f
ZnJhbWUtPmluVmlld1NvdXJjZU1vZGUoKSk7CisgICAgICAgIHJldHVybiBQbGFjZWhvbGRlckRv
Y3VtZW50OjpjcmVhdGUobV9mcmFtZSwgbV9kb2N1bWVudExvYWRlciwgdXJsKTsKKyAgICByZXR1
cm4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KG1fbWltZVR5cGUsIG1fZnJhbWUs
IG1fZG9jdW1lbnRMb2FkZXIsIHVybCwgbV9mcmFtZS0+aW5WaWV3U291cmNlTW9kZSgpKTsKIH0K
IAogdm9pZCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oY29uc3QgS1VSTCYgdXJsUmVmZXJlbmNlLCBi
b29sIGRpc3BhdGNoLCBEb2N1bWVudCogb3duZXJEb2N1bWVudCkKQEAgLTEyMSw3ICsxMjIsNyBA
QCB2b2lkIERvY3VtZW50V3JpdGVyOjpiZWdpbihjb25zdCBLVVJMJiB1cmxSZWZlcmVuY2UsIGJv
b2wgZGlzcGF0Y2gsIERvY3VtZW50KiBvdwogICAgIC8vIElmIHRoZSBuZXcgZG9jdW1lbnQgaXMg
Zm9yIGEgUGx1Z2luIGJ1dCB3ZSdyZSBzdXBwb3NlZCB0byBiZSBzYW5kYm94ZWQgZnJvbSBQbHVn
aW5zLAogICAgIC8vIHRoZW4gcmVwbGFjZSB0aGUgZG9jdW1lbnQgd2l0aCBvbmUgd2hvc2UgcGFy
c2VyIHdpbGwgaWdub3JlIHRoZSBpbmNvbWluZyBkYXRhIChidWcgMzkzMjMpCiAgICAgaWYgKGRv
Y3VtZW50LT5pc1BsdWdpbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQtPmlzU2FuZGJveGVkKFNhbmRi
b3hQbHVnaW5zKSkKLSAgICAgICAgZG9jdW1lbnQgPSBTaW5rRG9jdW1lbnQ6OmNyZWF0ZShtX2Zy
YW1lLCB1cmwpOworICAgICAgICBkb2N1bWVudCA9IFNpbmtEb2N1bWVudDo6Y3JlYXRlKG1fZnJh
bWUsIG1fZG9jdW1lbnRMb2FkZXIsIHVybCk7CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0
byBjb25zdWx0IHRoZSBjb250ZW50IHNlY3VyaXR5IHBvbGljeSBoZXJlIGFib3V0IGJsb2NrZWQg
cGx1Zy1pbnM/CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdy
aXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggM2Q5
MGI5ZDg3M2ZlMDRiNzlkMTg2ODkxYTc4MWM3ZjdjNjM2OGE2OS4uNzg2Y2UzMjFjMThhNTVhNmRj
YWEzZTIxNTQ5YmZjYWI1Njk0OTRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3Jp
dGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9j
dW1lbnQ7CitjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIERvY3VtZW50UGFyc2VyOwogY2xh
c3MgRnJhbWU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKQEAgLTQzLDcgKzQ0LDcgQEAgY2xhc3Mg
VGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIERvY3VtZW50V3JpdGVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShEb2N1bWVudFdyaXRlcik7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRG9j
dW1lbnRXcml0ZXIoRnJhbWUqKTsKKyAgICBleHBsaWNpdCBEb2N1bWVudFdyaXRlcihGcmFtZSos
IERvY3VtZW50TG9hZGVyKik7CiAKICAgICAvLyBUaGlzIGlzIG9ubHkgY2FsbGVkIGJ5IFNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwKICAgICAvLyBhbmQgYWx3YXlzIGNv
bnRhaW5zIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyBhIGphdmFzY3JpcHQ6IHVybC4KQEAgLTcy
LDYgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBGcmFtZSogbV9m
cmFtZTsKKyAgICBEb2N1bWVudExvYWRlciogbV9kb2N1bWVudExvYWRlcjsKIAogICAgIGJvb2wg
bV9oYXNSZWNlaXZlZFNvbWVEYXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVyRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9QbGFjZWhvbGRlckRvY3VtZW50LmgKaW5kZXggM2Q0MGE2ZWEzOWY3ZjY3
NmQ2ODI2OTBjNWUzYTQ2MThjNDliOGMwNS4uYjY0MTQyMzI1ODA1MzJjNGI2NWJmM2NjYWQxNzMx
MjRhZmZlNzUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVy
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVu
dC5oCkBAIC0zMiwxNSArMzIsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQbGFj
ZWhvbGRlckRvY3VtZW50IDogcHVibGljIERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQbGFjZWhvbGRlckRvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25z
dCBLVVJMJiB1cmwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhY2Vob2xkZXJEb2N1bWVudD4g
Y3JlYXRlKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VSTCYg
dXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGFjZWhvbGRlckRvY3Vt
ZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGFjZWhvbGRl
ckRvY3VtZW50KGZyYW1lLCBsb2FkZXIsIHVybCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBhdHRhY2goKTsKIAogcHJpdmF0ZToKLSAgICBQbGFjZWhvbGRlckRvY3VtZW50KEZyYW1lKiBm
cmFtZSwgY29uc3QgS1VSTCYgdXJsKSA6IERvY3VtZW50KGZyYW1lLCB1cmwsIGZhbHNlLCBmYWxz
ZSkgeyB9CisgICAgUGxhY2Vob2xkZXJEb2N1bWVudChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHVybCkgOiBEb2N1bWVudChmcmFtZSwgbG9hZGVyLCB1
cmwsIGZhbHNlLCBmYWxzZSkgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCmluZGV4IDQ4NGQyMzg5YTU3MGEzYzZmNDlh
NjVjYWQ3MTYxNmY4MTkwMTY2NGQuLjdlZTBhOTcwZjhiNzIxNmVlMzc5ZGQwZGM2MjllNmMxN2Nm
NzkwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCkBAIC00Nyw4ICs0
Nyw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3Jp
dGVyKiwgY29uc3QgY2hhciosIHNpemVfdCkgeyB9CiB9OwogCi1TaW5rRG9jdW1lbnQ6OlNpbmtE
b2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKLSAgICA6IEhUTUxEb2N1bWVu
dChmcmFtZSwgdXJsKQorU2lua0RvY3VtZW50OjpTaW5rRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBE
b2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiB1cmwpCisgICAgOiBIVE1MRG9jdW1l
bnQoZnJhbWUsIGxvYWRlciwgdXJsKQogewogICAgIHNldENvbXBhdGliaWxpdHlNb2RlKFF1aXJr
c01vZGUpOwogICAgIGxvY2tDb21wYXRpYmlsaXR5TW9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Np
bmtEb2N1bWVudC5oCmluZGV4IDUwMTUyZmY5ZWNjYTdmNWU0ZmRhNmU4NzQxMjkxZTRiYTllMWI5
NDcuLmU1OThiNTRjNDc3ODc3OTA0NGMzZTQzMmExZTlkNTc3NjllMDExYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU2lua0RvY3VtZW50LmgKQEAgLTMyLDEzICszMiwxMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNpbmtEb2N1bWVudCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNpbmtEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBm
cmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNpbmtEb2N1bWVu
dD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VS
TCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaW5rRG9jdW1lbnQo
ZnJhbWUsIHVybCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNpbmtEb2N1bWVudChm
cmFtZSwgbG9hZGVyLCB1cmwpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU2lua0RvY3VtZW50
KEZyYW1lKiwgY29uc3QgS1VSTCYpOworICAgIFNpbmtEb2N1bWVudChGcmFtZSosIERvY3VtZW50
TG9hZGVyKiwgY29uc3QgS1VSTCYpOwogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1
bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IGYxMTliOTM2OWE2OWE1NTQ3ODVlYzE2ZjAzY2E3Njdh
ZjFkYjViYjAuLjdiYjJhYzRhNDQxY2E1ODY5NDQ2ZTQ1NGY0NDdhYzUzZmE2NTBmNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTEzMyw3ICsxMzMs
NyBAQCBGb250UGxhdGZvcm1EYXRhIENhY2hlZEZvbnQ6OnBsYXRmb3JtRGF0YUZyb21DdXN0b21E
YXRhKGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYgogYm9vbCBDYWNoZWRGb250OjplbnN1cmVTVkdG
b250RGF0YSgpCiB7CiAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRG9jdW1lbnQgJiYgIWVycm9yT2Nj
dXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgbV9kYXRhKSB7Ci0gICAgICAgIG1fZXh0ZXJuYWxT
VkdEb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAgICAgICAgbV9l
eHRlcm5hbFNWR0RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwLCAwLCBLVVJMKCkpOwog
CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiKTsKICAgICAgICAgU3RyaW5nIHN2
Z1NvdXJjZSA9IGRlY29kZXItPmRlY29kZShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5j
cHAKaW5kZXggNGVjNTRhOGUyNWI5OWI5ZTE2ODEwZGMxMWUxY2E5YjcwOTRiYWE0Zi4uY2RkNTJj
MTA3YzIwODYwOTVhNWU3ZjcwMjQ2YTRlODY0ODU1MmRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC02Myw3ICs2Myw3IEBA
IHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmRhdGEoUGFzc1JlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4g
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2CiAgICAgICAgIGRlY29kZWRUZXh0LmFwcGVuZChtX2Rl
Y29kZXItPmRlY29kZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgICAgICBkZWNv
ZGVkVGV4dC5hcHBlbmQobV9kZWNvZGVyLT5mbHVzaCgpKTsKICAgICAgICAgLy8gV2UgZG9uJ3Qg
bmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9u
Z3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgotICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9j
dW1lbnQ6OmNyZWF0ZSgwLCByZXNwb25zZSgpLnVybCgpKTsKKyAgICAgICAgbV9kb2N1bWVudCA9
IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwgMCwgcmVzcG9uc2UoKS51cmwoKSk7CiAgICAgICAgIG1f
ZG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2RlZFRleHQudG9TdHJpbmcoKSk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAppbmRleCBmZjc3NGQyZWE5ODhkZmRmMzA5ZmM0NjNi
MGI4Mzg2MDg3YjhmYzM2Li5hMThmOGQ3NjYxN2JmNjcxYzMxMzEyYWRiMzBhYjFkODg3MzM1MTVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKQEAgLTM2LDggKzM2LDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1TVkdEb2N1bWVudDo6U1ZHRG9jdW1lbnQoRnJhbWUqIGZyYW1l
LCBjb25zdCBLVVJMJiB1cmwpCi0gICAgOiBEb2N1bWVudChmcmFtZSwgdXJsLCBmYWxzZSwgZmFs
c2UpCitTVkdEb2N1bWVudDo6U1ZHRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBjb25zdCBLVVJMJiB1cmwpCisgICAgOiBEb2N1bWVudChmcmFtZSwgbG9hZGVy
LCB1cmwsIGZhbHNlLCBmYWxzZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAppbmRl
eCBhNjM3ODcyMThlNjgxZGExOTM3YTFhODIwYWY5YjFkMDNlZThiN2JiLi5lNmQ0MWVhOWVhYjJj
M2M4MzllNTc2YzQ3MjQ3NjQzMWVhNjllM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaApA
QCAtMzMsOSArMzMsOSBAQCBjbGFzcyBTVkdTVkdFbGVtZW50OwogCiBjbGFzcyBTVkdEb2N1bWVu
dCA6IHB1YmxpYyBEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZH
RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTVkdEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgY29uc3QgS1VSTCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTVkdEb2N1bWVudChmcmFtZSwgdXJsKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU1ZHRG9jdW1lbnQoZnJhbWUsIGxvYWRlciwgdXJsKSk7CiAgICAgfQogCiAgICAg
U1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQoKSBjb25zdDsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgdXBkYXRlUGFuKGNvbnN0IEZsb2F0UG9pbnQmIHBvcykgY29uc3Q7CiAK
IHByaXZhdGU6Ci0gICAgU1ZHRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJik7CisgICAgU1ZH
RG9jdW1lbnQoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIGNvbnN0IEtVUkwmKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBpc1NWR0RvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9ET01QYXJzZXIuY3BwCmluZGV4IDQ5Njc3ZWE3OTUyNGM4ZmFlMzNiYWVjNTAzM2Y4M2E5
MWUxZjBlODAuLjM1ZWI1YzVmMjZlODVlMzI4NzU1ZjgxZmNkZTg3MzEwNmFmNmNkYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9ET01QYXJzZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBAIFBhc3NSZWZQdHI8RG9jdW1l
bnQ+IERPTVBhcnNlcjo6cGFyc2VGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyLCBjb25zdCBT
dHJpbmcmCiAgICAgaWYgKCFET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZShjb250ZW50
VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPERvY3VtZW50PiBkb2MgPSBE
T01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29udGVudFR5cGUsIDAsIEtVUkwoKSwg
ZmFsc2UpOworICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jID0gRE9NSW1wbGVtZW50YXRpb246OmNy
ZWF0ZURvY3VtZW50KGNvbnRlbnRUeXBlLCAwLCAwLCBLVVJMKCksIGZhbHNlKTsKICAgICBkb2Mt
PnNldENvbnRlbnQoc3RyKTsKICAgICByZXR1cm4gZG9jLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDI5NTM2ZGE4NDJjZDkwNzAyN2VjMWM3Y2Uy
ZjM4OTExZjFmMzMzMjYuLjY1Y2YzODMxZTE3YjRmNTg1MmY0NzEwZGYwNGY0M2FiYmY0MTAzYjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMjYyLDkgKzI2Miw5IEBA
IERvY3VtZW50KiBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwoRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgICAgICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSAwOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgaWYgKGlzSFRNTCkKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlRG9jdW1l
bnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBtX3VybCk7CisgICAgICAgICAgICAgICAgbV9y
ZXNwb25zZURvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUoMCwgMCwgbV91cmwpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IERvY3Vt
ZW50OjpjcmVhdGUoMCwgbV91cmwpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVu
dCA9IERvY3VtZW50OjpjcmVhdGUoMCwgMCwgbV91cmwpOwogICAgICAgICAgICAgLy8gRklYTUU6
IFNldCBMYXN0LU1vZGlmaWVkLgogICAgICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50LT5zZXRD
b250ZW50KG1fcmVzcG9uc2VCdWlsZGVyLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpKTsKICAg
ICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudC0+c2V0U2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlP
cmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKaW5kZXggMjFlZmY4MGIw
Y2VlZWM3MzJmM2VlOTJhODBhY2E5MDZhMGM0OWQxOS4uYWQzYTk2MjQzYTIyNzk1ZjExZDVkNTAy
NDcyODRkYmRjNmU2YzI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcApAQCAt
NzEsMTUgKzcxLDE2IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IFhTTFRQcm9jZXNzb3I6OmNyZWF0
ZURvY3VtZW50RnJvbVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjCiAgICAgY29uc3QgU3RyaW5n
JiBzb3VyY2VFbmNvZGluZywgY29uc3QgU3RyaW5nJiBzb3VyY2VNSU1FVHlwZSwgTm9kZSogc291
cmNlTm9kZSwgRnJhbWUqIGZyYW1lKQogewogICAgIFJlZlB0cjxEb2N1bWVudD4gb3duZXJEb2N1
bWVudCA9IHNvdXJjZU5vZGUtPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnRMb2FkZXIqIG93bmVy
RG9jdW1lbnRMb2FkZXIgPSBvd25lckRvY3VtZW50LT5sb2FkZXIoKTsKICAgICBib29sIHNvdXJj
ZUlzRG9jdW1lbnQgPSAoc291cmNlTm9kZSA9PSBvd25lckRvY3VtZW50LmdldCgpKTsKICAgICBT
dHJpbmcgZG9jdW1lbnRTb3VyY2UgPSBzb3VyY2VTdHJpbmc7CiAKICAgICBSZWZQdHI8RG9jdW1l
bnQ+IHJlc3VsdDsKICAgICBpZiAoc291cmNlTUlNRVR5cGUgPT0gInRleHQvcGxhaW4iKSB7Ci0g
ICAgICAgIHJlc3VsdCA9IERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHNvdXJjZUlzRG9jdW1lbnQg
PyBvd25lckRvY3VtZW50LT51cmwoKSA6IEtVUkwoKSk7CisgICAgICAgIHJlc3VsdCA9IERvY3Vt
ZW50OjpjcmVhdGUoZnJhbWUsIG93bmVyRG9jdW1lbnRMb2FkZXIsIHNvdXJjZUlzRG9jdW1lbnQg
PyBvd25lckRvY3VtZW50LT51cmwoKSA6IEtVUkwoKSk7CiAgICAgICAgIHRyYW5zZm9ybVRleHRT
dHJpbmdUb1hIVE1MRG9jdW1lbnRTdHJpbmcoZG9jdW1lbnRTb3VyY2UpOwogICAgIH0gZWxzZQot
ICAgICAgICByZXN1bHQgPSBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoc291cmNl
TUlNRVR5cGUsIGZyYW1lLCBzb3VyY2VJc0RvY3VtZW50ID8gb3duZXJEb2N1bWVudC0+dXJsKCkg
OiBLVVJMKCksIGZhbHNlKTsKKyAgICAgICAgcmVzdWx0ID0gRE9NSW1wbGVtZW50YXRpb246OmNy
ZWF0ZURvY3VtZW50KHNvdXJjZU1JTUVUeXBlLCBmcmFtZSwgb3duZXJEb2N1bWVudExvYWRlciwg
c291cmNlSXNEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQtPnVybCgpIDogS1VSTCgpLCBmYWxzZSk7
CiAKICAgICAvLyBCZWZvcmUgcGFyc2luZywgd2UgbmVlZCB0byBzYXZlICYgZGV0YWNoIHRoZSBv
bGQgZG9jdW1lbnQgYW5kIGdldCB0aGUgbmV3IGRvY3VtZW50CiAgICAgLy8gaW4gcGxhY2UuIFdl
IGhhdmUgdG8gZG8gdGhpcyBvbmx5IGlmIHdlJ3JlIHJlbmRlcmluZyB0aGUgcmVzdWx0IGRvY3Vt
ZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdl
YnBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2Uu
Y3BwCmluZGV4IDlmNTFmM2YwMTVmODkwZGFiYjk1NGY2NTA2OGM5ZjQ1NGI5OWU0YzMuLjI4NTNk
NjAwYTJmMTVmYmRjMjZiYWQ1MTJhN2ZlNThjMjM4ODg0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKQEAgLTI5MzIsMTAgKzI5MzIs
OCBAQCB2b2lkIHRzdF9RV2ViUGFnZTo6dGVzdFN0b3BTY2hlZHVsZWRQYWdlUmVmcmVzaCgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bWV0YSBodHRwLWVxdWl2PVwicmVmcmVz
aFwiY29udGVudD1cIjA7VVJMPXFyYzovLy9yZXNvdXJjZXMvaW5kZXguaHRtbFwiPiIKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwvaGVhZD48Ym9keT48aDE+UGFnZSByZWRpcmVj
dHMgaW1tZWRpYXRlbHkuLi48L2gxPiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IjwvYm9keT48L2h0bWw+Iik7Ci0gICAgUUVYUEVDVF9GQUlMKCIiLCAiaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMjQ1IiwgQ29udGludWUpOwogICAgIFFWRVJJRlko
Ojp3YWl0Rm9yU2lnbmFsKCZwYWdlMSwgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpKTsKICAg
ICBRVGVzdDo6cVdhaXQoNTAwKTsKLSAgICBRRVhQRUNUX0ZBSUwoIiIsICJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMyNDUiLCBDb250aW51ZSk7CiAgICAgUUNPTVBB
UkUocGFnZTEubWFpbkZyYW1lKCktPnVybCgpLCBRVXJsKFFMYXRpbjFTdHJpbmcoInFyYzovLy9y
ZXNvdXJjZXMvaW5kZXguaHRtbCIpKSk7CiAgICAgCiAgICAgLy8gV2l0aCBRV2ViUGFnZTo6U3Rv
cFNjaGVkdWxlZFBhZ2VSZWZyZXNoCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176949</attachid>
            <date>2012-11-30 05:51:53 -0800</date>
            <delta_ts>2012-12-03 09:02:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68711-20121130144925.patch</filename>
            <type>text/plain</type>
            <size>5239</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzhiMWI2ODhiOGViYjcy
NDdlZjE4ZmVjZjA1MWUyYjVmNDVlYWNlYS4uZjkxZGJjNmFmZTk4NGY2MjEwMzQ5Yjk2ODU1Yjky
MTU3MTYxNmZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTExLTMwICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CisKKyAgICAgICAgRG9j
dW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKSBmYWlscyB0byBjYWxsIHNlY3VyaXR5T3JpZ2lu
KCkuZ3JhbnRMb2FkTG9jYWxSZXNvdXJjZXMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg3MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJdCBjdXJyZW50bHkgZmFpbHMgc2luY2UgRG9jdW1lbnQ6Omxv
YWRlcigpIHdpbGwgcmV0dXJuIDAgdW50aWwKKyAgICAgICAgRnJhbWU6OnNldERvY3VtZW50IGlz
IGNhbGxlZCBhbmQgd2UgYXJlIGRvaW5nIHRoaXMgY2hlY2sgYmVmb3JlIGl0IGhhcHBlbnMuCisK
KyAgICAgICAgRGVsYXkgdGhlIGNoZWNrIGFuZCBsZXQgdGhlIEZyYW1lTG9hZGVyIHRha2UgY2Fy
ZSBvZiBkb2luZyBncmFudExvYWRMb2NhbFJlc291cmNlcygpCisgICAgICAgIG9uIHRoZSBEb2N1
bWVudCBhbG9uZyB3aXRoIG90aGVyIGhlYWRlciBjaGVja3MgaW4gRnJhbWVMb2FkZXI6OmRpZEJl
Z2luRG9jdW1lbnQuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlkQmVnaW5E
b2N1bWVudCk6CisKIDIwMTItMTEtMjkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzYxMTEuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCmluZGV4IDdlYzhmYmMzZWJjMzhiMDcxZjE2NjdmYTU5NmMzODljZWZlYjc0MWIu
LjUwOTE3YjU2ZjJlMjYwMTM0Zjc4ZDg1ZWYzNDgyYjVhNzQ3NmQ1OGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTEtMzAgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHlu
LnR1cmNvdHRlQGRpZ2lhLmNvbT4KKworICAgICAgICBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29u
dGV4dCgpIGZhaWxzIHRvIGNhbGwgc2VjdXJpdHlPcmlnaW4oKS5ncmFudExvYWRMb2NhbFJlc291
cmNlcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
ODcxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
dGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6
dGVzdFN0b3BTY2hlZHVsZWRQYWdlUmVmcmVzaCk6IFVubWFyayB0aGUgZXhwZWN0ZWQgZmFpbHVy
ZS4KKwogMjAxMi0xMS0yOCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5l
dD4KIAogICAgICAgICBbVGV4bWFwXSBSRUdSRVNTSU9OKHIxMzU2MjApIFF0VGVzdEJyb3dzZXIg
Y3Jhc2hlcyBvbiBHb29nbGUtZ3Jhdml0eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGRi
NzRkNTVkZTVjMTBmMDZkNTUyMTYxMzMwYWNmNjcyNTdlMjE5YjIuLjlhYjA1MTQ5YzI4ZTIyZTg1
MDc4N2Y0ZjZhZDUzOTlhMGZhMWVmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDU0
MiwxNyArNDU0Miw2IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAg
IHNldFNlY3VyaXR5T3JpZ2luKGlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pID8gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZVVuaXF1ZSgpIDogU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCkpOwog
ICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShDb250ZW50U2VjdXJpdHlQb2xpY3k6OmNyZWF0
ZSh0aGlzKSk7CiAKLSAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OmFsbG93U3Vic3RpdHV0ZURhdGFB
Y2Nlc3NUb0xvY2FsKCkpIHsKLSAgICAgICAgLy8gSWYgdGhpcyBkb2N1bWVudCB3YXMgbG9hZGVk
IHdpdGggc3Vic3RpdHV0ZURhdGEsIHRoZW4gdGhlIGRvY3VtZW50IGNhbgotICAgICAgICAvLyBs
b2FkIGxvY2FsIHJlc291cmNlcy4gIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY3NTYKLSAgICAgICAgLy8gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTc2MCBmb3IgZnVydGhlcgotICAgICAgICAvLyBkaXNjdXNzaW9uLgot
ICAgICAgICAKLSAgICAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbG9hZGVy
KCk7Ci0gICAgICAgIGlmIChkb2N1bWVudExvYWRlciAmJiBkb2N1bWVudExvYWRlci0+c3Vic3Rp
dHV0ZURhdGEoKS5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBzZWN1cml0eU9yaWdpbigpLT5ncmFu
dExvYWRMb2NhbFJlc291cmNlcygpOwotICAgIH0KLQogICAgIGlmIChTZXR0aW5ncyogc2V0dGlu
Z3MgPSB0aGlzLT5zZXR0aW5ncygpKSB7CiAgICAgICAgIGlmICghc2V0dGluZ3MtPndlYlNlY3Vy
aXR5RW5hYmxlZCgpKSB7CiAgICAgICAgICAgICAvLyBXZWIgc2VjdXJpdHkgaXMgdHVybmVkIG9m
Zi4gV2Ugc2hvdWxkIGxldCB0aGlzIGRvY3VtZW50IGFjY2VzcyBldmVyeSBvdGhlciBkb2N1bWVu
dC4gVGhpcyBpcyB1c2VkIHByaW1hcnkgYnkgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKaW5kZXggMDM1MmIxZDhjYzI4OWNlMWU5NWI0YWI2MzFmZTU4ZTNhZDAyNmNk
NC4uNTcxNmUzOWQzZTg2OTQ2MTJlYzJlYmU4YTUxOTFlMDM0YWJlYjVmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC02NzYsNiArNjc2LDE0IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmRpZEJlZ2luRG9jdW1lbnQoYm9vbCBkaXNwYXRjaCkKICAgICAgICAgICAgIGlmICgh
aGVhZGVyQ29udGVudExhbmd1YWdlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBtX2ZyYW1l
LT5kb2N1bWVudCgpLT5zZXRDb250ZW50TGFuZ3VhZ2UoaGVhZGVyQ29udGVudExhbmd1YWdlKTsK
ICAgICAgICAgfQorCisgICAgICAgIGlmIChTZWN1cml0eVBvbGljeTo6YWxsb3dTdWJzdGl0dXRl
RGF0YUFjY2Vzc1RvTG9jYWwoKSAmJiBtX2RvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgp
LmlzVmFsaWQoKSkgeworICAgICAgICAgICAgLy8gSWYgdGhpcyBkb2N1bWVudCB3YXMgbG9hZGVk
IHdpdGggc3Vic3RpdHV0ZURhdGEsIHRoZW4gdGhlIGRvY3VtZW50IGNhbgorICAgICAgICAgICAg
Ly8gbG9hZCBsb2NhbCByZXNvdXJjZXMuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY3NTYKKyAgICAgICAgICAgIC8vIGFuZCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3NjAgZm9yIGZ1cnRoZXIKKyAgICAgICAgICAgIC8vIGRp
c2N1c3Npb24uCisgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLT5ncmFudExvYWRMb2NhbFJlc291cmNlcygpOworICAgICAgICB9CiAgICAgfQogCiAgICAg
aGlzdG9yeSgpLT5yZXN0b3JlRG9jdW1lbnRTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9x
dC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCmluZGV4IDlmNTFmM2YwMTVmODkwZGFi
Yjk1NGY2NTA2OGM5ZjQ1NGI5OWU0YzMuLjI4NTNkNjAwYTJmMTVmYmRjMjZiYWQ1MTJhN2ZlNThj
MjM4ODg0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0
X3F3ZWJwYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9x
d2VicGFnZS5jcHAKQEAgLTI5MzIsMTAgKzI5MzIsOCBAQCB2b2lkIHRzdF9RV2ViUGFnZTo6dGVz
dFN0b3BTY2hlZHVsZWRQYWdlUmVmcmVzaCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICI8bWV0YSBodHRwLWVxdWl2PVwicmVmcmVzaFwiY29udGVudD1cIjA7VVJMPXFyYzovLy9y
ZXNvdXJjZXMvaW5kZXguaHRtbFwiPiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IjwvaGVhZD48Ym9keT48aDE+UGFnZSByZWRpcmVjdHMgaW1tZWRpYXRlbHkuLi48L2gxPiIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwvYm9keT48L2h0bWw+Iik7Ci0gICAgUUVY
UEVDVF9GQUlMKCIiLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYz
MjQ1IiwgQ29udGludWUpOwogICAgIFFWRVJJRlkoOjp3YWl0Rm9yU2lnbmFsKCZwYWdlMSwgU0lH
TkFMKGxvYWRGaW5pc2hlZChib29sKSkpKTsKICAgICBRVGVzdDo6cVdhaXQoNTAwKTsKLSAgICBR
RVhQRUNUX0ZBSUwoIiIsICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjMyNDUiLCBDb250aW51ZSk7CiAgICAgUUNPTVBBUkUocGFnZTEubWFpbkZyYW1lKCktPnVybCgp
LCBRVXJsKFFMYXRpbjFTdHJpbmcoInFyYzovLy9yZXNvdXJjZXMvaW5kZXguaHRtbCIpKSk7CiAg
ICAgCiAgICAgLy8gV2l0aCBRV2ViUGFnZTo6U3RvcFNjaGVkdWxlZFBhZ2VSZWZyZXNoCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>