<?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>36794</bug_id>
          
          <creation_ts>2010-03-29 17:13:32 -0700</creation_ts>
          <short_desc>Teach RedirectScheduler about URLString</short_desc>
          <delta_ts>2010-06-11 12:52:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>brettw</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>jschuh</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>205752</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-29 17:13:32 -0700</bug_when>
    <thetext>Alexey told me on #webkit that we want to have URLString class instead of passing around URLs as Strings all the time.  It&apos;s not really feasible to convert the whole codebase at once, so I thought I&apos;d start with the parts that touch RedirectScheduler.

My secret agenda here is to eventually attach some security bits to JavaScript URLs so we don&apos;t get more security vulnerabilities from forgetting to check access, but that will come later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205759</commentid>
    <comment_count>1</comment_count>
      <attachid>51985</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-29 17:31:19 -0700</bug_when>
    <thetext>Created attachment 51985
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205760</commentid>
    <comment_count>2</comment_count>
      <attachid>51986</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-29 17:32:31 -0700</bug_when>
    <thetext>Created attachment 51986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205768</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-29 17:40:16 -0700</bug_when>
    <thetext>Attachment 51986 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1634026</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205782</commentid>
    <comment_count>4</comment_count>
      <attachid>51991</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-29 18:13:32 -0700</bug_when>
    <thetext>Created attachment 51991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205786</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-29 18:19:57 -0700</bug_when>
    <thetext>Attachment 51991 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1614078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205792</commentid>
    <comment_count>6</comment_count>
      <attachid>51991</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-29 18:50:01 -0700</bug_when>
    <thetext>Comment on attachment 51991
Patch

Anyway, I&apos;ll make it build before landing, obviously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205878</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-03-29 23:56:44 -0700</bug_when>
    <thetext>What is the advantage of adding another string type over simply using KURL in more places?

If we are concerned about the footprint of a KURL, then perhaps we could optimize it.  I can imagine it being nearly as cheap as a String object.  We could leverage the work that was done to allocate StringImpl with the UChar array, to allow us to store the additional indices held by a KURL object inline with the URL characters.  This way, we achieve a small footprint for a KURL object, and avoid having to re-parse and re-canonicalize URL strings.  We can have a simple rule that encourages use of KURL everywhere we reference absolute URLs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205880</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-30 00:01:53 -0700</bug_when>
    <thetext>&gt; If we are concerned about the footprint of a KURL, then perhaps we could
&gt; optimize it.

Yes, that was the concern. It would be even better, if it can be done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206066</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-03-30 10:35:28 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; If we are concerned about the footprint of a KURL, then perhaps we could
&gt; &gt; optimize it.
&gt; 
&gt; Yes, that was the concern. It would be even better, if it can be done.

It seems fairly trivial to store the indices and IsValid bit alongside the character array in memory such that a null KURL would only require sizeof(void*) memory.  We could just invent a variant of StringImpl::createUninitialized that provides for a little extra storage in the allocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208122</commentid>
    <comment_count>10</comment_count>
      <attachid>51991</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 15:58:50 -0700</bug_when>
    <thetext>Comment on attachment 51991
Patch

No love for this patch.  I can re-spin it incorporating the comments herein if folks think this is the right direction.  Otherwise, we can go more in the direction that fishd recommends.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208167</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-02 17:16:49 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Otherwise, we can go more in the
&gt; direction that fishd recommends.

We should find out how practical his idea is.

If there is already an existing String or AtomicString, the converting it to a KURL would presumably require copying it even if we do squirrel the URL bits away inside the string buffer. But generally speaking if we can make a KURL almost the same cost as a string then we could make our code more readable.

And also, someone should take the damned &quot;K&quot; out ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208172</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 17:20:24 -0700</bug_when>
    <thetext>&gt; We should find out how practical his idea is.

I can try sketching out some code for this.

&gt; If there is already an existing String or AtomicString, the converting it to a
&gt; KURL would presumably require copying it even if we do squirrel the URL bits
&gt; away inside the string buffer. But generally speaking if we can make a KURL
&gt; almost the same cost as a string then we could make our code more readable.

You can avoid the extra copy with another malloc, but that doesn&apos;t seem like a good trade off.  Is the memory concern really with empty KURLs?  I wish there was a good way to measure how much memory we&apos;re talking about here.

&gt; And also, someone should take the damned &quot;K&quot; out ;-)

:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208188</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-02 17:45:08 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; You can avoid the extra copy with another malloc, but that doesn&apos;t seem like a
&gt; good trade off.  Is the memory concern really with empty KURLs?  I wish there
&gt; was a good way to measure how much memory we&apos;re talking about here.

At least we could start by figuring out how much memory a KURL uses and how much memory the String for that KURL uses on some representative platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208206</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-04-02 21:04:21 -0700</bug_when>
    <thetext>I should add, that I also find Maciej&apos;s idea interesting.  To summarize:

1- URLString contains a canonical, absolute URL string.
2- ParsedURL is constructed when you need to access/replace components from an URLString.

Constructing an URLString from a String would require instantiating a ParsedURL so that canonicalization could be done.  Constructing a ParsedURL from an URLString would be cheap because ParsedURL could assume the input is already canonical.  In such a world, KURL disappears in favor of either URLString or ParsedURL.

This proposal might result in some hot-spots in the code that lead to us passing around ParsedURL objects, but I suspect those will be the exception to the norm.

Reducing the memory size of KURL so that it can be used in more places is probably a fairly low cost and incremental change to the code base, but it may be unnecessary work given Maciej&apos;s idea above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208334</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-03 23:10:10 -0700</bug_when>
    <thetext>Darin, I’m a little lost. Starting implementation on what you call “Maciej’s idea” is what this bug was all about. How will we decide which way to go?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208368</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-04-04 11:33:32 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Darin, I’m a little lost. Starting implementation on what you call “Maciej’s
&gt; idea” is what this bug was all about. How will we decide which way to go?

Right... when I originally commented in this bug, it was not clear to me that this was a first step toward that plan.  There&apos;s no mention of it here.  After some discussion on #webkit, it became clear to me that that was the case.

Based on some of the comments in this bug (in particular comment #8), it sounds like the idea of optimizing KURL so that it could be used everywhere (instead of having two representations for URLs) had not been fully considered.

How to best proceed is a good question.  I can see pros and cons both ways.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51985</attachid>
            <date>2010-03-29 17:31:19 -0700</date>
            <delta_ts>2010-03-29 17:32:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36794-20100329173118.patch</filename>
            <type>text/plain</type>
            <size>50502</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmFhMDU1Mi4uZWEwMTNiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NiBAQAorMjAxMC0wMy0yOSAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlYWNoIFJlZGlyZWN0U2NoZWR1bGVyIGFib3V0IFVSTFN0cmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY3OTQKKworICAg
ICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIG5vdGlvbiBvZiBhIFVSTFN0cmluZy4gIElu
c3RlYWQgb2YgcGFzc2luZworICAgICAgICBhcm91bmQgVVJMcyBhcyBTdHJpbmdzLCB3ZSB3YW50
IGEgdHlwZSB0aGF0IHJlbWVtYmVycyB0aGF0IHRoZXkncmUKKyAgICAgICAgc3VwcG9zZWQgdG8g
YmUgVVJMcy4gIEhvd2V2ZXIsIHdlIGRvbid0IHdhbnQgdG8gdXNlIEtVUkwgYWxsIHRoZSB0aW1l
CisgICAgICAgIGJlY2F1c2UgaXQgZHJhZ3MgYWxvbmcgYSBidW5jaCBvZiBleHRyYSBmaWVsZHMu
CisKKyAgICAgICAgQ29udmVydGluZyB0aGUgY29kZSBiYXNlIG92ZXIgdG8gdXNpbmcgVVJMU3Ry
aW5nIGlzIGEgc29tZXdoYXQKKyAgICAgICAgInNwaWRlcnkiIGNoYW5nZSB0aGF0IHdhbnRzIHRv
IGV4cGFuZCBhbmQgdG91Y2ggZXZlcnkgbGluZSBvZiBjb2RlLgorICAgICAgICBJbnN0ZWFkIG9m
IGRvaW5nIHRoYXQgaW4gb25lIGdpYW50IGNvbW1pdCwgSSd2ZSBsaW1pdGVkIHRoaXMgcGF0Y2gg
dG8KKyAgICAgICAgVVJMcyBoYW5kbGVkIGJ5IFJlZGlyZWN0U2NoZWR1bGVyLiAgSW4gZG9pbmcg
c28sIEkgd2FzIHZlcnkgdGVtcHRlZCB0bworICAgICAgICBzcGlkZXIgdG8gb3V0Z29pbmdSZWZl
cnJlciBiZWNhdXNlIGl0IHNvIHNvIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24KKyAgICAgICAg
d2l0aCBSZWRpcmVjdFNjaGVkdWxlci4gIFNwaWRlcmluZyB0aGVyZSBsZWFkIG1lIHRvIFNob3Vs
ZEhpZGVSZWZlcnJlciwKKyAgICAgICAgYnV0IEkgd2FzIGFibGUgdG8gZHJhdyB0aGUgbGluZSB0
aGVyZS4KKworICAgICAgICBTZWNyZXRseSwgSSB3YW50IHRoaXMgaW5mcmFzdHJ1Y3R1cmUgdG8g
aW1wcm92ZSB0aGUgc2VjdXJpdHkgb2Ygb3VyCisgICAgICAgIEphdmFTY3JpcHQgVVJMIGhhbmRs
aW5nLCB3aGljaCAoY29pbmNpZGVudGFsbHk/KSByZXZvbHZlcyBhcm91bmQKKyAgICAgICAgUmVk
aXJlY3RTY2hlZHVsZXIuCisKKyAgICAgICAgTm8gdGVzdHMgYmVjYXVzZSB0aGlzIHBhdGNoIGRv
ZXNuJ3QgY2hhbmdlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBXZWJDb3JlLmJhc2UuZXhwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9C
aW5kaW5nRE9NV2luZG93Lmg6CisgICAgICAgIChXZWJDb3JlOjo6OmNyZWF0ZVdpbmRvdyk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6OnNldExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6b3Blbik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0RvY3VtZW50OjpzZXRMb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlv
bkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuYXZpZ2F0ZUlmQWxsb3dlZCk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmF2
aWdhdGVJZkFsbG93ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRv
d0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6b3BlbkNhbGxiYWNr
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnByb2Nlc3NIdHRwRXF1aXYpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y3JlYXRlV2luZG93KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpsb2FkU3ViZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN1Ym1pdEZv
cm0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlY2VpdmVkRmlyc3REYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpiZWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6b3V0Z29pbmdSZWZlcnJlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxl
ZFJlZGlyZWN0aW9uOjpTY2hlZHVsZWRSZWRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlZGlyZWN0U2NoZWR1bGVyOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
ZGlyZWN0U2NoZWR1bGVyOjpzdGFydFRpbWVyKToKKyAgICAgICAgKiBsb2FkZXIvUmVkaXJlY3RT
Y2hlZHVsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKToKKyAgICAgICAgKiBwYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuTmV3V2luZG93
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcik6CisgICAgICAg
ICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIHBhZ2UvWFNTQXVkaXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KToKKyAgICAgICAg
KiB3bWwvV01MR29FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldNTEdvRWxlbWVudDo6
ZXhlY3V0ZVRhc2spOgorCiAyMDEwLTAzLTI5ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA5ZWUy
YTc2Li40NGJiNDA1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE1NTQsNiArMTU1NCw3IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0v
VGltZXIuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmggXAorCVdlYkNvcmUvcGxh
dGZvcm0vVVJMU3RyaW5nLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9XaWRnZXQuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9XaW5kb3dzS2V5Ym9h
cmRDb2Rlcy5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cCBiL1dlYkNv
cmUvV2ViQ29yZS5iYXNlLmV4cAppbmRleCA4YjZlYjk5Li42NDQ0MzI3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCkBA
IC0zMDksNyArMzA5LDcgQEAgX19aTjdXZWJDb3JlMTRSZXNvdXJjZUxvYWRlcjE5c2V0U2hvdWxk
QnVmZmVyRGF0YUViCiBfX1pON1dlYkNvcmUxNFNWR1NNSUxFbGVtZW50MTNpc1NNSUxFbGVtZW50
RVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xNmNyZWF0ZUZyb21TdHJp
bmdFUktOU182U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjE4c2V0TG9jYWxM
b2FkUG9saWN5RU5TMF8xNUxvY2FsTG9hZFBvbGljeUUKLV9fWk43V2ViQ29yZTE0U2VjdXJpdHlP
cmlnaW4xOHNob3VsZEhpZGVSZWZlcnJlckVSS05TXzRLVVJMRVJLTlNfNlN0cmluZ0UKK19fWk43
V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xOHNob3VsZEhpZGVSZWZlcnJlckVSS05TXzRLVVJMRVJL
TlNfOVVSTFN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4yNHJlZ2lzdGVyVVJM
U2NoZW1lQXNMb2NhbEVSS05TXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2lu
MjVyZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlRVJLTlNfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0
U2VjdXJpdHlPcmlnaW4yNXdoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW5FUktTMF9SS05TXzZTdHJp
bmdFUzVfYgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCBkZWJlMjFmLi41NjYzNDEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjkwMSw2ICsyOTAxLDcgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9UaW1lci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L1RpbWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1RyZWVTaGFyZWQuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vVVJMU3RyaW5nLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1dpZGdl
dC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1dpZGdldC5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9XaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IDk0OTY3ZDUuLjA3MjE1NDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagpAQCAtMjIxNDEsNiArMjIxNDEsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxl
Pg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cVVJMU3RyaW5nLmgi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxXaWRnZXQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTgwYTZmYi4uZGUxNGFkMCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0NzMsNiArMjQ3Myw3
IEBACiAJCTk3MDU5OTc4MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzQxMDdEOTc1
MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTcwNTk5NzkxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGlj
eUNoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICovOyB9Owog
CQk5NzA1OTk3QTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzYxMDdEOTc1MjAwQTUw
QTdDIC8qIFBvbGljeUNoZWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk5NzBCRjc5QjExNjE3NEE0MDA4NUFEMEIgLyogVVJMU3RyaW5nLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzBCRjc5QTEx
NjE3NEE0MDA4NUFEMEIgLyogVVJMU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTczRTMyNTYxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291
cmNlTG9hZE5vdGlmaWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3M0UzMjU0MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmll
ci5jcHAgKi87IH07CiAJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWRO
b3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTczRTMyNTUxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc5RjQzRDMxMDc1
RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QxMTA3NUU0NEEwMDAwRjgzQiAvKiBS
ZWRpcmVjdFNjaGVkdWxlci5jcHAgKi87IH07CkBAIC03ODkxLDYgKzc4OTIsNyBAQAogCQk5NzA1
OTk3NDEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUG9saWN5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9saWN5Q2hlY2tlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAvKiBQ
b2xpY3lDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbGljeUNo
ZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTcwQkY3OUExMTYxNzRBNDAw
ODVBRDBCIC8qIFVSTFN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
UkxTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczRTMyNTQxMDg4M0I3
QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTczRTMyNTUxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9h
ZE5vdGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9h
ZE5vdGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OUY0M0QxMTA3NUU0
NEEwMDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZWRpcmVjdFNjaGVkdWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNTQyMiw2ICsxNTQyNCw3IEBACiAJCQkJOTMzMDlFQTEwOTlFQjc4QzAw
NTZFNTgxIC8qIFRpbWVyLmNwcCAqLywKIAkJCQk5MzA1QjI0QzA5OEYxQjZCMDBDMjg4NTUgLyog
VGltZXIuaCAqLywKIAkJCQkxNDE5RDJDNDBDRUE2RjYxMDBGRjUwN0EgLyogVHJlZVNoYXJlZC5o
ICovLAorCQkJCTk3MEJGNzlBMTE2MTc0QTQwMDg1QUQwQiAvKiBVUkxTdHJpbmcuaCAqLywKIAkJ
CQk5MzgwRjQ3MTA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCAqLywKIAkJCQk5MzgwRjQ3
MjA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmggKi8sCiAJCQkJRTFFMUJFRkYxMTVGRjZGQjAw
NkY1MkNBIC8qIFdpbmRvd3NLZXlib2FyZENvZGVzLmggKi8sCkBAIC0xODc2OCw2ICsxODc3MSw3
IEBACiAJCQkJRTQ3NzhCODAxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxRTFCRjAwMTE1RkY2RkIwMDZGNTJDQSAvKiBXaW5kb3dzS2V5Ym9h
cmRDb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ5OUE1MTUxMTVGQjMzMDAwRjU2NkUzIC8q
IFJlbmRlclNWR1Jlc291cmNlTWFya2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NzBCRjc5QjEx
NjE3NEE0MDA4NUFEMEIgLyogVVJMU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5nRE9NV2luZG93LmggYi9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oCmluZGV4IGI0NmJkZjkuLjMzYjNlYzUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5nRE9NV2luZG93LmgK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdET01XaW5kb3cuaApAQCAtNzMs
OCArNzMsOCBAQCBGcmFtZSogQmluZGluZ0RPTVdpbmRvdzxCaW5kaW5nPjo6Y3JlYXRlV2luZG93
KFN0YXRlPEJpbmRpbmc+KiBzdGF0ZSwKIAogICAgIC8vIEZvciB3aGF0ZXZlciByZWFzb24sIEZp
cmVmb3ggdXNlcyB0aGUgZW50ZXJlZCBmcmFtZSB0byBkZXRlcm1pbmUKICAgICAvLyB0aGUgb3V0
Z29pbmdSZWZlcnJlci4gIFdlIHJlcGxpY2F0ZSB0aGF0IGJlaGF2aW9yIGhlcmUuCi0gICAgU3Ry
aW5nIHJlZmVycmVyID0gZW50ZXJlZEZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigp
OwotICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKKyAgICBVUkxTdHJpbmcg
cmVmZXJyZXIgPSBlbnRlcmVkRnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCk7Cisg
ICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIuc3RyaW5nKCkpOwogICAgIEZyYW1l
TG9hZGVyOjphZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgZW50ZXJlZEZyYW1lLT5sb2Fk
ZXIoKS0+b3V0Z29pbmdPcmlnaW4oKSk7CiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZVJlcXVl
c3QocmVxdWVzdCwgZnJhbWVOYW1lKTsKIApAQCAtMTA3LDkgKzEwNyw5IEBAIEZyYW1lKiBCaW5k
aW5nRE9NV2luZG93PEJpbmRpbmc+OjpjcmVhdGVXaW5kb3coU3RhdGU8QmluZGluZz4qIHN0YXRl
LAogICAgICAgICBib29sIHVzZXJHZXN0dXJlID0gcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CiAK
ICAgICAgICAgaWYgKGNyZWF0ZWQpCi0gICAgICAgICAgICBuZXdGcmFtZS0+bG9hZGVyKCktPmNo
YW5nZUxvY2F0aW9uKGNvbXBsZXRlZFVybCwgcmVmZXJyZXIsIGZhbHNlLCBmYWxzZSwgdXNlckdl
c3R1cmUpOworICAgICAgICAgICAgbmV3RnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2NhdGlvbihj
b21wbGV0ZWRVcmwsIHJlZmVycmVyLnN0cmluZygpLCBmYWxzZSwgZmFsc2UsIHVzZXJHZXN0dXJl
KTsKICAgICAgICAgZWxzZSBpZiAoIXVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBuZXdGcmFt
ZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShjb21wbGV0ZWRV
cmwuc3RyaW5nKCksIHJlZmVycmVyLCBmYWxzZSwgdXNlckdlc3R1cmUpOworICAgICAgICAgICAg
bmV3RnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoVVJM
U3RyaW5nKGNvbXBsZXRlZFVybCksIHJlZmVycmVyLCBmYWxzZSwgdXNlckdlc3R1cmUpOwogICAg
IH0KIAogICAgIHJldHVybiBuZXdGcmFtZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKaW5kZXggYmE1NmUyOC4uNjlmZWE0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTUxNSw3ICs1MTUsNyBAQCB2b2lkIEpTRE9NV2lu
ZG93OjpzZXRMb2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAKICAgICBp
ZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkgfHwgYWxsb3dzQWNjZXNzRnJvbShleGVjKSkg
ewogICAgICAgICAvLyBXZSB3YW50IGEgbmV3IGhpc3RvcnkgaXRlbSBpZiB0aGlzIEpTIHdhcyBj
YWxsZWQgdmlhIGEgdXNlciBnZXN0dXJlCi0gICAgICAgIGZyYW1lLT5yZWRpcmVjdFNjaGVkdWxl
cigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKHVybCwgbGV4aWNhbEZyYW1lLT5sb2FkZXIoKS0+
b3V0Z29pbmdSZWZlcnJlcigpLCAhbGV4aWNhbEZyYW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoZXhlYykp
OworICAgICAgICBmcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNo
YW5nZShVUkxTdHJpbmcodXJsKSwgbGV4aWNhbEZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZl
cnJlcigpLCAhbGV4aWNhbEZyYW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKCksIGZhbHNlLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoZXhlYykpOwogICAgIH0KIH0K
IApAQCAtNjcyLDggKzY3Miw4IEBAIHN0YXRpYyBGcmFtZSogY3JlYXRlV2luZG93KEV4ZWNTdGF0
ZSogZXhlYywgRnJhbWUqIGxleGljYWxGcmFtZSwgRnJhbWUqIGR5bmFtaWNGCiAKICAgICAvLyBG
b3Igd2hhdGV2ZXIgcmVhc29uLCBGaXJlZm94IHVzZXMgdGhlIGR5bmFtaWNHbG9iYWxPYmplY3Qg
dG8gZGV0ZXJtaW5lCiAgICAgLy8gdGhlIG91dGdvaW5nUmVmZXJyZXIuICBXZSByZXBsaWNhdGUg
dGhhdCBiZWhhdmlvciBoZXJlLgotICAgIFN0cmluZyByZWZlcnJlciA9IGR5bmFtaWNGcmFtZS0+
bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKTsKLSAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJl
cihyZWZlcnJlcik7CisgICAgVVJMU3RyaW5nIHJlZmVycmVyID0gZHluYW1pY0ZyYW1lLT5sb2Fk
ZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpOworICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJl
ZmVycmVyLnN0cmluZygpKTsKICAgICBGcmFtZUxvYWRlcjo6YWRkSFRUUE9yaWdpbklmTmVlZGVk
KHJlcXVlc3QsIGR5bmFtaWNGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nT3JpZ2luKCkpOwogICAg
IEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZyYW1lTmFtZSk7CiAKQEAg
LTcwNiw5ICs3MDYsOSBAQCBzdGF0aWMgRnJhbWUqIGNyZWF0ZVdpbmRvdyhFeGVjU3RhdGUqIGV4
ZWMsIEZyYW1lKiBsZXhpY2FsRnJhbWUsIEZyYW1lKiBkeW5hbWljRgogICAgICAgICBib29sIHVz
ZXJHZXN0dXJlID0gcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKGV4ZWMpOwogCiAgICAgICAgIGlmIChj
cmVhdGVkKQotICAgICAgICAgICAgbmV3RnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2NhdGlvbihj
b21wbGV0ZWRVUkwsIHJlZmVycmVyLCBmYWxzZSwgZmFsc2UsIHVzZXJHZXN0dXJlKTsKKyAgICAg
ICAgICAgIG5ld0ZyYW1lLT5sb2FkZXIoKS0+Y2hhbmdlTG9jYXRpb24oY29tcGxldGVkVVJMLCBy
ZWZlcnJlci5zdHJpbmcoKSwgZmFsc2UsIGZhbHNlLCB1c2VyR2VzdHVyZSk7CiAgICAgICAgIGVs
c2UgaWYgKCF1cmwuaXNFbXB0eSgpKQotICAgICAgICAgICAgbmV3RnJhbWUtPnJlZGlyZWN0U2No
ZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoY29tcGxldGVkVVJMLnN0cmluZygpLCBy
ZWZlcnJlciwgIWxleGljYWxGcmFtZS0+c2NyaXB0KCktPmFueVBhZ2VJc1Byb2Nlc3NpbmdVc2Vy
R2VzdHVyZSgpLCBmYWxzZSwgdXNlckdlc3R1cmUpOworICAgICAgICAgICAgbmV3RnJhbWUtPnJl
ZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoVVJMU3RyaW5nKGNvbXBs
ZXRlZFVSTCksIHJlZmVycmVyLCAhbGV4aWNhbEZyYW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlLCB1c2VyR2VzdHVyZSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIG5ld0ZyYW1lOwpAQCAtNzU3LDIxICs3NTcsMjEgQEAgSlNWYWx1ZSBKU0RPTVdpbmRv
dzo6b3BlbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiAgICAgICAgIHRv
cE9yUGFyZW50ID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgKHRvcE9yUGFyZW50KSB7Ci0gICAgICAg
IFN0cmluZyBjb21wbGV0ZWRVUkw7CisgICAgICAgIFVSTFN0cmluZyBjb21wbGV0ZWRVUkw7CiAg
ICAgICAgIGlmICghdXJsU3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNvbXBsZXRlZFVS
TCA9IGNvbXBsZXRlVVJMKGV4ZWMsIHVybFN0cmluZykuc3RyaW5nKCk7CisgICAgICAgICAgICBj
b21wbGV0ZWRVUkwgPSBVUkxTdHJpbmcoY29tcGxldGVVUkwoZXhlYywgdXJsU3RyaW5nKSk7CiAK
ICAgICAgICAgaWYgKCFzaG91bGRBbGxvd05hdmlnYXRpb24oZXhlYywgZnJhbWUpKQogICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICAgICAgY29uc3QgSlNET01XaW5kb3cq
IHRhcmdldGVkV2luZG93ID0gdG9KU0RPTVdpbmRvdyhmcmFtZSwgY3VycmVudFdvcmxkKGV4ZWMp
KTsKLSAgICAgICAgaWYgKCFjb21wbGV0ZWRVUkwuaXNFbXB0eSgpICYmICghcHJvdG9jb2xJc0ph
dmFTY3JpcHQoY29tcGxldGVkVVJMKSB8fCAodGFyZ2V0ZWRXaW5kb3cgJiYgdGFyZ2V0ZWRXaW5k
b3ctPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpKSkgeworICAgICAgICBpZiAoIWNvbXBsZXRlZFVS
TC5zdHJpbmcoKS5pc0VtcHR5KCkgJiYgKCFwcm90b2NvbElzSmF2YVNjcmlwdChjb21wbGV0ZWRV
Ukwuc3RyaW5nKCkpIHx8ICh0YXJnZXRlZFdpbmRvdyAmJiB0YXJnZXRlZFdpbmRvdy0+YWxsb3dz
QWNjZXNzRnJvbShleGVjKSkpKSB7CiAgICAgICAgICAgICBib29sIHVzZXJHZXN0dXJlID0gcHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKGV4ZWMpOwogCiAgICAgICAgICAgICAvLyBGb3Igd2hhdGV2ZXIg
cmVhc29uLCBGaXJlZm94IHVzZXMgdGhlIGR5bmFtaWNHbG9iYWxPYmplY3QgdG8KICAgICAgICAg
ICAgIC8vIGRldGVybWluZSB0aGUgb3V0Z29pbmdSZWZlcnJlci4gIFdlIHJlcGxpY2F0ZSB0aGF0
IGJlaGF2aW9yCiAgICAgICAgICAgICAvLyBoZXJlLgotICAgICAgICAgICAgU3RyaW5nIHJlZmVy
cmVyID0gZHluYW1pY0ZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpOworICAgICAg
ICAgICAgVVJMU3RyaW5nIHJlZmVycmVyID0gZHluYW1pY0ZyYW1lLT5sb2FkZXIoKS0+b3V0Z29p
bmdSZWZlcnJlcigpOwogCiAgICAgICAgICAgICBmcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+
c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShjb21wbGV0ZWRVUkwsIHJlZmVycmVyLCAhbGV4aWNhbEZy
YW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlLCB1
c2VyR2VzdHVyZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEb2N1bWVudEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0
b20uY3BwCmluZGV4IGVkYTE1M2UuLjcxMjVkZTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rv
Y3VtZW50Q3VzdG9tLmNwcApAQCAtODQsMTEgKzg0LDEwIEBAIHZvaWQgSlNEb2N1bWVudDo6c2V0
TG9jYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIC8vIElFIGFuZCBN
b3ppbGxhIGJvdGggcmVzb2x2ZSB0aGUgVVJMIHJlbGF0aXZlIHRvIHRoZSBzb3VyY2UgZnJhbWUs
CiAgICAgLy8gbm90IHRoZSB0YXJnZXQgZnJhbWUuCiAgICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0g
YXNKU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1l
KCk7Ci0gICAgaWYgKGFjdGl2ZUZyYW1lKQotICAgICAgICBzdHIgPSBhY3RpdmVGcmFtZS0+ZG9j
dW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyKS5zdHJpbmcoKTsKKyAgICBVUkxTdHJpbmcgdXJsID0g
YWN0aXZlRnJhbWUgPyBVUkxTdHJpbmcoYWN0aXZlRnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRl
VVJMKHN0cikpIDogVVJMU3RyaW5nKFBhcnNlZFVSTFN0cmluZywgc3RyKTsKIAogICAgIGJvb2wg
dXNlckdlc3R1cmUgPSBhY3RpdmVGcmFtZS0+c2NyaXB0KCktPnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZShjdXJyZW50V29ybGQoZXhlYykpOwotICAgIGZyYW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5z
Y2hlZHVsZUxvY2F0aW9uQ2hhbmdlKHN0ciwgYWN0aXZlRnJhbWUtPmxvYWRlcigpLT5vdXRnb2lu
Z1JlZmVycmVyKCksICFhY3RpdmVGcmFtZS0+c2NyaXB0KCktPmFueVBhZ2VJc1Byb2Nlc3NpbmdV
c2VyR2VzdHVyZSgpLCBmYWxzZSwgdXNlckdlc3R1cmUpOworICAgIGZyYW1lLT5yZWRpcmVjdFNj
aGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKHVybCwgYWN0aXZlRnJhbWUtPmxvYWRl
cigpLT5vdXRnb2luZ1JlZmVycmVyKCksICFhY3RpdmVGcmFtZS0+c2NyaXB0KCktPmFueVBhZ2VJ
c1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpLCBmYWxzZSwgdXNlckdlc3R1cmUpOwogfQogCiBKU1Zh
bHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBEb2N1bWVudCogZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9t
LmNwcAppbmRleCBhM2UyYmFlLi4wZDIyN2ZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2Nh
dGlvbkN1c3RvbS5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBuYXZpZ2F0ZUlm
QWxsb3dlZChFeGVjU3RhdGUqIGV4ZWMsIEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBi
bwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkg
fHwgYWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4ZWMsIGZyYW1lKSkKLSAgICAgICAgZnJhbWUtPnJl
ZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UodXJsLnN0cmluZygpLCBs
ZXhpY2FsRnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCksIGxvY2tIaXN0b3J5LCBs
b2NrQmFja0ZvcndhcmRMaXN0LCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoZXhlYykpOworICAgICAg
ICBmcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShVUkxT
dHJpbmcodXJsKSwgbGV4aWNhbEZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLCBs
b2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKGV4
ZWMpKTsKIH0KIAogdm9pZCBKU0xvY2F0aW9uOjpzZXRIcmVmKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMu
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKaW5kZXggZjg5NWE3Ni4u
MDgxYzU2MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKQEAgLTEyMiw3ICsxMjIs
NyBAQCB2b2lkIG5hdmlnYXRlSWZBbGxvd2VkKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJs
LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvYwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
IXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkgfHwgU2NyaXB0Q29udHJvbGxlcjo6aXNTYWZlU2Ny
aXB0KGZyYW1lKSkKLSAgICAgICAgZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxl
TG9jYXRpb25DaGFuZ2UodXJsLnN0cmluZygpLCBjYWxsaW5nRnJhbWUtPmxvYWRlcigpLT5vdXRn
b2luZ1JlZmVycmVyKCksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBwcm9jZXNz
aW5nVXNlckdlc3R1cmUoKSk7CisgICAgICAgIGZyYW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5z
Y2hlZHVsZUxvY2F0aW9uQ2hhbmdlKFVSTFN0cmluZyh1cmwpLCBjYWxsaW5nRnJhbWUtPmxvYWRl
cigpLT5vdXRnb2luZ1JlZmVycmVyKCksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0
LCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDYyMTVkMzguLjFkYjVlYjIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAg
LTU1OCwxOSArNTU4LDE5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6b3Bl
bkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgIGlmICghc2hvdWxk
QWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkKICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiAKLSAgICAgICAgU3RyaW5nIGNvbXBsZXRlZFVybDsKLSAgICAgICAgaWYgKCF1cmxTdHJp
bmcuaXNFbXB0eSgpKQotICAgICAgICAgICAgY29tcGxldGVkVXJsID0gY29tcGxldGVVUkwodXJs
U3RyaW5nKTsKKyAgICAgICAgVVJMU3RyaW5nIGNvbXBsZXRlZFVSTDsKKyAgICAgICAgaWYgKCFj
b21wbGV0ZWRVUkwuc3RyaW5nKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29tcGxldGVkVVJM
ID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsKIAotICAgICAgICBpZiAoIWNvbXBsZXRlZFVybC5p
c0VtcHR5KCkgJiYKLSAgICAgICAgICAgICghcHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVk
VXJsKSB8fCBTY3JpcHRDb250cm9sbGVyOjppc1NhZmVTY3JpcHQoZnJhbWUpKSkgeworICAgICAg
ICBpZiAoIWNvbXBsZXRlZFVSTC5zdHJpbmcoKS5pc0VtcHR5KCkKKyAgICAgICAgICAgICYmICgh
cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVXJsLnN0cmluZygpKSB8fCBTY3JpcHRDb250
cm9sbGVyOjppc1NhZmVTY3JpcHQoZnJhbWUpKSkgewogICAgICAgICAgICAgYm9vbCB1c2VyR2Vz
dHVyZSA9IHByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwogCiAgICAgICAgICAgICAvLyBGb3Igd2hh
dGV2ZXIgcmVhc29uLCBGaXJlZm94IHVzZXMgdGhlIGVudGVyZWQgZnJhbWUgdG8gZGV0ZXJtaW5l
CiAgICAgICAgICAgICAvLyB0aGUgb3V0Z29pbmdSZWZlcnJlci4gIFdlIHJlcGxpY2F0ZSB0aGF0
IGJlaGF2aW9yIGhlcmUuCi0gICAgICAgICAgICBTdHJpbmcgcmVmZXJyZXIgPSBlbnRlcmVkRnJh
bWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCk7CisgICAgICAgICAgICBVUkxTdHJpbmcg
cmVmZXJyZXIgPSBlbnRlcmVkRnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCk7CiAK
LSAgICAgICAgICAgIGZyYW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0aW9u
Q2hhbmdlKGNvbXBsZXRlZFVybCwgcmVmZXJyZXIsIGZhbHNlLCB1c2VyR2VzdHVyZSk7CisgICAg
ICAgICAgICBmcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5n
ZShVUkxTdHJpbmcoY29tcGxldGVkVVJMKSwgcmVmZXJyZXIsIGZhbHNlLCB1c2VyR2VzdHVyZSk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRvVjgoZnJhbWUtPmRvbVdpbmRvdygpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggYWVkYmEwZC4uYTlhZTA5YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjI1NSwx
MiArMjI1NSw5IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29uc3QgU3RyaW5n
JiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgICAgICB1cGRhdGVTdHlsZVNlbGVj
dG9yKCk7CiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwgInJlZnJlc2gi
KSkgewogICAgICAgICBkb3VibGUgZGVsYXk7Ci0gICAgICAgIFN0cmluZyB1cmw7Ci0gICAgICAg
IGlmIChmcmFtZSAmJiBwYXJzZUhUVFBSZWZyZXNoKGNvbnRlbnQsIHRydWUsIGRlbGF5LCB1cmwp
KSB7Ci0gICAgICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICB1cmwg
PSBmcmFtZS0+bG9hZGVyKCktPnVybCgpLnN0cmluZygpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHVybCA9IGNvbXBsZXRlVVJMKHVybCkuc3RyaW5nKCk7CisgICAgICAgIFN0
cmluZyB0ZXh0OworICAgICAgICBpZiAoZnJhbWUgJiYgcGFyc2VIVFRQUmVmcmVzaChjb250ZW50
LCB0cnVlLCBkZWxheSwgdGV4dCkpIHsKKyAgICAgICAgICAgIFVSTFN0cmluZyB1cmwgPSB0ZXh0
LmlzRW1wdHkoKSA/IFVSTFN0cmluZyhmcmFtZS0+bG9hZGVyKCktPnVybCgpKSA6IFVSTFN0cmlu
Zyhjb21wbGV0ZVVSTCh0ZXh0KSk7CiAgICAgICAgICAgICBmcmFtZS0+cmVkaXJlY3RTY2hlZHVs
ZXIoKS0+c2NoZWR1bGVSZWRpcmVjdChkZWxheSwgdXJsKTsKICAgICAgICAgfQogICAgIH0gZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZXF1aXYsICJzZXQtY29va2llIikpIHsKQEAgLTIyNzcs
NyArMjI3NCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29uc3QgU3RyaW5n
JiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgICAgICBGcmFtZUxvYWRlciogZnJh
bWVMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7CiAgICAgICAgIGlmIChmcmFtZUxvYWRlci0+c2hv
dWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29udGVudCwgdXJsKCkpKSB7CiAgICAg
ICAgICAgICBmcmFtZUxvYWRlci0+c3RvcEFsbExvYWRlcnMoKTsKLSAgICAgICAgICAgIGZyYW1l
LT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGJsYW5rVVJMKCks
IFN0cmluZygpKTsKKyAgICAgICAgICAgIGZyYW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hl
ZHVsZUxvY2F0aW9uQ2hhbmdlKFVSTFN0cmluZyhibGFua1VSTCgpKSwgVVJMU3RyaW5nKCkpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDk0YTNkZDkuLjAw
ZGVkNzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCBGcmFtZSog
RnJhbWVMb2FkZXI6OmNyZWF0ZVdpbmRvdyhGcmFtZUxvYWRlciogZnJhbWVMb2FkZXJGb3JGcmFt
ZUxvb2t1cCwgY29uc3QgRgogCiAgICAgLy8gRklYTUU6IFNldHRpbmcgdGhlIHJlZmVycmVyIHNo
b3VsZCBiZSB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkuCiAgICAgRnJhbWVMb2FkUmVxdWVz
dCByZXF1ZXN0V2l0aFJlZmVycmVyID0gcmVxdWVzdDsKLSAgICByZXF1ZXN0V2l0aFJlZmVycmVy
LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBSZWZlcnJlcihtX291dGdvaW5nUmVmZXJyZXIpOwor
ICAgIHJlcXVlc3RXaXRoUmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVy
KG1fb3V0Z29pbmdSZWZlcnJlci5zdHJpbmcoKSk7CiAgICAgYWRkSFRUUE9yaWdpbklmTmVlZGVk
KHJlcXVlc3RXaXRoUmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCksIG91dGdvaW5nT3JpZ2luKCkp
OwogCiAgICAgUGFnZSogb2xkUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKQEAgLTM1Myw3ICszNTMs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcGFzcwogICAgIGlmIChyZWZlcnJlclBvbGljeSA9PSBO
b1JlZmVycmVyKQogICAgICAgICBtX3N1cHByZXNzT3BlbmVySW5OZXdGcmFtZSA9IHRydWU7CiAg
ICAgZWxzZSBpZiAoZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigp
LmlzRW1wdHkoKSkKLSAgICAgICAgZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhU
VFBSZWZlcnJlcihtX291dGdvaW5nUmVmZXJyZXIpOworICAgICAgICBmcmFtZVJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVyKG1fb3V0Z29pbmdSZWZlcnJlci5zdHJpbmco
KSk7CiAgICAgYWRkSFRUUE9yaWdpbklmTmVlZGVkKGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKSwgb3V0Z29pbmdPcmlnaW4oKSk7CiAKICAgICBsb2FkRnJhbWVSZXF1ZXN0KGZyYW1lUmVx
dWVzdCwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHRyaWdnZXJpbmdFdmVudCwg
MCwgcmVmZXJyZXJQb2xpY3kpOwpAQCAtMzc0LDkgKzM3NCw5IEBAIGJvb2wgRnJhbWVMb2FkZXI6
OnJlcXVlc3RGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3Qg
U3RyaW5nCiAKICAgICBGcmFtZSogZnJhbWUgPSBvd25lckVsZW1lbnQtPmNvbnRlbnRGcmFtZSgp
OwogICAgIGlmIChmcmFtZSkKLSAgICAgICAgZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNj
aGVkdWxlTG9jYXRpb25DaGFuZ2UodXJsLnN0cmluZygpLCBtX291dGdvaW5nUmVmZXJyZXIsIGxv
Y2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBpc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgp
KTsKKyAgICAgICAgZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25D
aGFuZ2UoVVJMU3RyaW5nKHVybCksIG1fb3V0Z29pbmdSZWZlcnJlciwgbG9ja0hpc3RvcnksIGxv
Y2tCYWNrRm9yd2FyZExpc3QsIGlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpOwogICAgIGVsc2UK
LSAgICAgICAgZnJhbWUgPSBsb2FkU3ViZnJhbWUob3duZXJFbGVtZW50LCB1cmwsIGZyYW1lTmFt
ZSwgbV9vdXRnb2luZ1JlZmVycmVyKTsKKyAgICAgICAgZnJhbWUgPSBsb2FkU3ViZnJhbWUob3du
ZXJFbGVtZW50LCB1cmwsIGZyYW1lTmFtZSwgbV9vdXRnb2luZ1JlZmVycmVyLnN0cmluZygpKTsK
ICAgICAKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MDQsNyAr
NDA0LDcgQEAgRnJhbWUqIEZyYW1lTG9hZGVyOjpsb2FkU3ViZnJhbWUoSFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IEtVUkwKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgYm9vbCBoaWRlUmVmZXJyZXIgPSBTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJl
ZmVycmVyKHVybCwgcmVmZXJyZXIpOworICAgIGJvb2wgaGlkZVJlZmVycmVyID0gU2VjdXJpdHlP
cmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcih1cmwsIFVSTFN0cmluZyhQYXJzZWRVUkxTdHJpbmcs
IHJlZmVycmVyKSk7CiAgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fY2xpZW50LT5jcmVhdGVG
cmFtZSh1cmwsIG5hbWUsIG93bmVyRWxlbWVudCwgaGlkZVJlZmVycmVyID8gU3RyaW5nKCkgOiBy
ZWZlcnJlciwgYWxsb3dzU2Nyb2xsaW5nLCBtYXJnaW5XaWR0aCwgbWFyZ2luSGVpZ2h0KTsKIAog
ICAgIGlmICghZnJhbWUpICB7CkBAIC01MDIsOCArNTAyLDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6
c3VibWl0Rm9ybShjb25zdCBjaGFyKiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVm
UHRyPEYKIAogICAgIGZvcm1EYXRhLT5nZW5lcmF0ZUZpbGVzKG1fZnJhbWUtPnBhZ2UoKS0+Y2hy
b21lKCktPmNsaWVudCgpKTsKICAgICAKLSAgICBpZiAoIW1fb3V0Z29pbmdSZWZlcnJlci5pc0Vt
cHR5KCkpCi0gICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQUmVm
ZXJyZXIobV9vdXRnb2luZ1JlZmVycmVyKTsKKyAgICBpZiAoIW1fb3V0Z29pbmdSZWZlcnJlci5z
dHJpbmcoKS5pc0VtcHR5KCkpCisgICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KS5zZXRIVFRQUmVmZXJyZXIobV9vdXRnb2luZ1JlZmVycmVyLnN0cmluZygpKTsKIAogICAgIGlm
IChzdHJjbXAoYWN0aW9uLCAiR0VUIikgPT0gMCkKICAgICAgICAgdS5zZXRRdWVyeShmb3JtRGF0
YS0+ZmxhdHRlblRvU3RyaW5nKCkpOwpAQCAtNzc5LDE5ICs3NzksMTUgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogICAgIG1fd29ya2luZ1VSTCA9IEtVUkwoKTsKIAog
ICAgIGRvdWJsZSBkZWxheTsKLSAgICBTdHJpbmcgdXJsOworICAgIFN0cmluZyB0ZXh0OwogICAg
IGlmICghbV9kb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtX2ZyYW1l
LT5pblZpZXdTb3VyY2VNb2RlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoIXBhcnNlSFRU
UFJlZnJlc2gobV9kb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoIlJl
ZnJlc2giKSwgZmFsc2UsIGRlbGF5LCB1cmwpKQorICAgIGlmICghcGFyc2VIVFRQUmVmcmVzaCht
X2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZCgiUmVmcmVzaCIpLCBm
YWxzZSwgZGVsYXksIHRleHQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodXJsLmlzRW1w
dHkoKSkKLSAgICAgICAgdXJsID0gbV9VUkwuc3RyaW5nKCk7Ci0gICAgZWxzZQotICAgICAgICB1
cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpLnN0cmluZygpOwotCisg
ICAgVVJMU3RyaW5nIHVybCA9IHRleHQuaXNFbXB0eSgpID8gVVJMU3RyaW5nKG1fVVJMKSA6IFVS
TFN0cmluZyhtX2ZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh0ZXh0KSk7CiAgICAgbV9m
cmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVSZWRpcmVjdChkZWxheSwgdXJsKTsK
IH0KIApAQCAtODQxLDcgKzgzNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmJlZ2luKGNvbnN0IEtV
UkwmIHVybCwgYm9vbCBkaXNwYXRjaCwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICByZWYu
c2V0VXNlcihTdHJpbmcoKSk7CiAgICAgcmVmLnNldFBhc3MoU3RyaW5nKCkpOwogICAgIHJlZi5y
ZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICBtX291dGdvaW5nUmVmZXJyZXIgPSByZWYu
c3RyaW5nKCk7CisgICAgbV9vdXRnb2luZ1JlZmVycmVyID0gVVJMU3RyaW5nKHJlZik7CiAgICAg
bV9VUkwgPSB1cmw7CiAKICAgICBkb2N1bWVudC0+c2V0VVJMKG1fVVJMKTsKQEAgLTE0MzcsNyAr
MTQzMyw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlcjo6bG9hZE1lZGlhUGxheWVy
UHJveHlQbHVnaW4oTm9kZSogbm9kZSwgY29uc3QgS1VSCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFBM
VUdJTl9QUk9YWV9GT1JfVklERU8pCiAKLVN0cmluZyBGcmFtZUxvYWRlcjo6b3V0Z29pbmdSZWZl
cnJlcigpIGNvbnN0CitVUkxTdHJpbmcgRnJhbWVMb2FkZXI6Om91dGdvaW5nUmVmZXJyZXIoKSBj
b25zdAogewogICAgIHJldHVybiBtX291dGdvaW5nUmVmZXJyZXI7CiB9CkBAIC0xOTIzLDIzICsx
OTE5LDIzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoY29uc3QgRnJhbWVM
b2FkUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBsb2NrSGlzCiB7ICAgIAogICAgIEtVUkwgdXJsID0g
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKIAotICAgIFN0cmluZyByZWZlcnJlcjsK
KyAgICBVUkxTdHJpbmcgcmVmZXJyZXI7CiAgICAgU3RyaW5nIGFyZ3NSZWZlcnJlciA9IHJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCk7CiAgICAgaWYgKCFhcmdzUmVmZXJy
ZXIuaXNFbXB0eSgpKQotICAgICAgICByZWZlcnJlciA9IGFyZ3NSZWZlcnJlcjsKKyAgICAgICAg
cmVmZXJyZXIgPSBVUkxTdHJpbmcoUGFyc2VkVVJMU3RyaW5nLCBhcmdzUmVmZXJyZXIpOwogICAg
IGVsc2UKICAgICAgICAgcmVmZXJyZXIgPSBtX291dGdvaW5nUmVmZXJyZXI7CiAKICAgICBBU1NF
UlQoZnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgaWYgKFNlY3VyaXR5T3JpZ2luOjpzaG91bGRU
cmVhdFVSTEFzTG9jYWwodXJsLnN0cmluZygpKSAmJiAhaXNGZWVkV2l0aE5lc3RlZFByb3RvY29s
SW5IVFRQRmFtaWx5KHVybCkpIHsKLSAgICAgICAgaWYgKCFTZWN1cml0eU9yaWdpbjo6Y2FuTG9h
ZCh1cmwsIFN0cmluZygpLCBmcmFtZSgpLT5kb2N1bWVudCgpKSAmJiAhU2VjdXJpdHlPcmlnaW46
OmNhbkxvYWQodXJsLCByZWZlcnJlciwgMCkpIHsKKyAgICAgICAgaWYgKCFTZWN1cml0eU9yaWdp
bjo6Y2FuTG9hZCh1cmwsIFN0cmluZygpLCBmcmFtZSgpLT5kb2N1bWVudCgpKSAmJiAhU2VjdXJp
dHlPcmlnaW46OmNhbkxvYWQodXJsLCByZWZlcnJlci5zdHJpbmcoKSwgMCkpIHsKICAgICAgICAg
ICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZSwgdXJsLnN0cmlu
ZygpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChT
ZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVycmVyKHVybCwgcmVmZXJyZXIpIHx8IHJlZmVy
cmVyUG9saWN5ID09IE5vUmVmZXJyZXIpCi0gICAgICAgIHJlZmVycmVyID0gU3RyaW5nKCk7Cisg
ICAgICAgIHJlZmVycmVyID0gVVJMU3RyaW5nKCk7CiAgICAgCiAgICAgRnJhbWVMb2FkVHlwZSBs
b2FkVHlwZTsKICAgICBpZiAocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5jYWNoZVBvbGljeSgp
ID09IFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKQpAQCAtMTk1MCw5ICsxOTQ2LDkgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1
ZXN0LCBib29sIGxvY2tIaXMKICAgICAgICAgbG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlU3RhbmRh
cmQ7CiAKICAgICBpZiAocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkgPT0g
IlBPU1QiKQotICAgICAgICBsb2FkUG9zdFJlcXVlc3QocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KSwgcmVmZXJyZXIsIHJlcXVlc3QuZnJhbWVOYW1lKCksIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwg
ZXZlbnQsIGZvcm1TdGF0ZS5nZXQoKSk7CisgICAgICAgIGxvYWRQb3N0UmVxdWVzdChyZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLCByZWZlcnJlci5zdHJpbmcoKSwgcmVxdWVzdC5mcmFtZU5hbWUo
KSwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBldmVudCwgZm9ybVN0YXRlLmdldCgpKTsKICAgICBl
bHNlCi0gICAgICAgIGxvYWRVUkwocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgcmVm
ZXJyZXIsIHJlcXVlc3QuZnJhbWVOYW1lKCksIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwgZXZlbnQs
IGZvcm1TdGF0ZS5nZXQoKSk7CisgICAgICAgIGxvYWRVUkwocmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKS51cmwoKSwgcmVmZXJyZXIuc3RyaW5nKCksIHJlcXVlc3QuZnJhbWVOYW1lKCksIGxvY2tI
aXN0b3J5LCBsb2FkVHlwZSwgZXZlbnQsIGZvcm1TdGF0ZS5nZXQoKSk7CiAKICAgICAvLyBGSVhN
RTogSXQncyBwb3NzaWJsZSB0aGlzIHRhcmdldEZyYW1lIHdpbGwgbm90IGJlIHRoZSBzYW1lIGZy
YW1lIHRoYXQgd2FzIHRhcmdldGVkIGJ5IHRoZSBhY3R1YWwKICAgICAvLyBsb2FkIGlmIGZyYW1l
IG5hbWVzIGhhdmUgY2hhbmdlZC4KQEAgLTI3ODEsNyArMjc3Nyw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6Om9wZW4oQ2FjaGVkRnJhbWVCYXNlJiBjYWNoZWRGcmFtZSkKICAgICBtX25lZWRzQ2xlYXIg
PSB0cnVlOwogICAgIG1faXNDb21wbGV0ZSA9IGZhbHNlOwogICAgIG1fZGlkQ2FsbEltcGxpY2l0
Q2xvc2UgPSBmYWxzZTsKLSAgICBtX291dGdvaW5nUmVmZXJyZXIgPSB1cmwuc3RyaW5nKCk7Cisg
ICAgbV9vdXRnb2luZ1JlZmVycmVyID0gVVJMU3RyaW5nKHVybCk7CiAKICAgICBGcmFtZVZpZXcq
IHZpZXcgPSBjYWNoZWRGcmFtZS52aWV3KCk7CiAgICAgCkBAIC0zMzg1LDEwICszMzgxLDEwIEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IGluUmVxdWVzdCwgY29uc3QgU3RyaW5nCiAKIHVuc2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBT
dG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7Ci0gICAg
U3RyaW5nIHJlZmVycmVyID0gbV9vdXRnb2luZ1JlZmVycmVyOworICAgIFVSTFN0cmluZyByZWZl
cnJlciA9IG1fb3V0Z29pbmdSZWZlcnJlcjsKICAgICBpZiAoU2VjdXJpdHlPcmlnaW46OnNob3Vs
ZEhpZGVSZWZlcnJlcihyZXF1ZXN0LnVybCgpLCByZWZlcnJlcikpCi0gICAgICAgIHJlZmVycmVy
ID0gU3RyaW5nKCk7Ci0gICAgCisgICAgICAgIHJlZmVycmVyID0gVVJMU3RyaW5nKCk7CisKICAg
ICBSZXNvdXJjZVJlcXVlc3QgaW5pdGlhbFJlcXVlc3QgPSByZXF1ZXN0OwogICAgIGluaXRpYWxS
ZXF1ZXN0LnNldFRpbWVvdXRJbnRlcnZhbCgxMCk7CiAgICAgCkBAIC0zNDAzLDggKzMzOTksOCBA
QCB1bnNpZ25lZCBsb25nIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdQogICAgIGVsc2UKICAgICAgICAgaW5pdGlhbFJlcXVl
c3Quc2V0Q2FjaGVQb2xpY3kob3JpZ2luYWxSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKSk7CiAgICAg
Ci0gICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpCi0gICAgICAgIGluaXRpYWxSZXF1ZXN0LnNl
dEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CisgICAgaWYgKCFyZWZlcnJlci5zdHJpbmcoKS5pc0Vt
cHR5KCkpCisgICAgICAgIGluaXRpYWxSZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlci5z
dHJpbmcoKSk7CiAgICAgYWRkSFRUUE9yaWdpbklmTmVlZGVkKGluaXRpYWxSZXF1ZXN0LCBvdXRn
b2luZ09yaWdpbigpKTsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgKaW5kZXggZTIxODc0NC4uNmNmMjU0ZiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiVVJM
U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMTM4LDcgKzEzOSw3IEBAIHB1YmxpYzoKIAogICAgIGludCBudW1QZW5kaW5nT3JMb2Fk
aW5nUmVxdWVzdHMoYm9vbCByZWN1cnNlKSBjb25zdDsKICAgICBTdHJpbmcgcmVmZXJyZXIoKSBj
b25zdDsKLSAgICBTdHJpbmcgb3V0Z29pbmdSZWZlcnJlcigpIGNvbnN0OworICAgIFVSTFN0cmlu
ZyBvdXRnb2luZ1JlZmVycmVyKCkgY29uc3Q7CiAgICAgU3RyaW5nIG91dGdvaW5nT3JpZ2luKCkg
Y29uc3Q7CiAKICAgICBEb2N1bWVudExvYWRlciogYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSBjb25z
dDsKQEAgLTQ4MSw3ICs0ODIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zZW50UmVkaXJlY3RO
b3RpZmljYXRpb247CiAgICAgYm9vbCBtX2luU3RvcEFsbExvYWRlcnM7CiAKLSAgICBTdHJpbmcg
bV9vdXRnb2luZ1JlZmVycmVyOworICAgIFVSTFN0cmluZyBtX291dGdvaW5nUmVmZXJyZXI7CiAK
ICAgICBib29sIG1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbjsKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIv
UmVkaXJlY3RTY2hlZHVsZXIuY3BwCmluZGV4IDRiNDQ0MjIuLjYyOTYxZDkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRl
ci9SZWRpcmVjdFNjaGVkdWxlci5jcHAKQEAgLTUyLDggKzUyLDggQEAgc3RydWN0IFNjaGVkdWxl
ZFJlZGlyZWN0aW9uIDogTm9uY29weWFibGUgewogCiAgICAgY29uc3QgVHlwZSB0eXBlOwogICAg
IGNvbnN0IGRvdWJsZSBkZWxheTsKLSAgICBjb25zdCBTdHJpbmcgdXJsOwotICAgIGNvbnN0IFN0
cmluZyByZWZlcnJlcjsKKyAgICBjb25zdCBVUkxTdHJpbmcgdXJsOworICAgIGNvbnN0IFVSTFN0
cmluZyByZWZlcnJlcjsKICAgICBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lUmVxdWVzdDsK
ICAgICBjb25zdCBSZWZQdHI8RXZlbnQ+IGV2ZW50OwogICAgIGNvbnN0IFJlZlB0cjxGb3JtU3Rh
dGU+IGZvcm1TdGF0ZTsKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IFNjaGVkdWxlZFJlZGlyZWN0
aW9uIDogTm9uY29weWFibGUgewogICAgIGNvbnN0IGJvb2wgd2FzRHVyaW5nTG9hZDsKICAgICBi
b29sIHRvbGRDbGllbnQ7CiAKLSAgICBTY2hlZHVsZWRSZWRpcmVjdGlvbihkb3VibGUgZGVsYXks
IGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2Fy
ZExpc3QsIGJvb2wgd2FzVXNlckdlc3R1cmUsIGJvb2wgcmVmcmVzaCkKKyAgICBTY2hlZHVsZWRS
ZWRpcmVjdGlvbihkb3VibGUgZGVsYXksIGNvbnN0IFVSTFN0cmluZyYgdXJsLCBib29sIGxvY2tI
aXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzVXNlckdlc3R1cmUsIGJv
b2wgcmVmcmVzaCkKICAgICAgICAgOiB0eXBlKHJlZGlyZWN0aW9uKQogICAgICAgICAsIGRlbGF5
KGRlbGF5KQogICAgICAgICAsIHVybCh1cmwpCkBAIC03NywxMCArNzcsMTAgQEAgc3RydWN0IFNj
aGVkdWxlZFJlZGlyZWN0aW9uIDogTm9uY29weWFibGUgewogICAgICAgICAsIHdhc0R1cmluZ0xv
YWQoZmFsc2UpCiAgICAgICAgICwgdG9sZENsaWVudChmYWxzZSkKICAgICB7Ci0gICAgICAgIEFT
U0VSVCghdXJsLmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVCghdXJsLnN0cmluZygpLmlzRW1w
dHkoKSk7CiAgICAgfQogCi0gICAgU2NoZWR1bGVkUmVkaXJlY3Rpb24oY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSwgYm9vbCByZWZyZXNoLCBib29sIGR1
cmluZ0xvYWQpCisgICAgU2NoZWR1bGVkUmVkaXJlY3Rpb24oY29uc3QgVVJMU3RyaW5nJiB1cmws
IGNvbnN0IFVSTFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSwgYm9vbCByZWZyZXNoLCBib29sIGR1
cmluZ0xvYWQpCiAgICAgICAgIDogdHlwZShsb2NhdGlvbkNoYW5nZSkKICAgICAgICAgLCBkZWxh
eSgwKQogICAgICAgICAsIHVybCh1cmwpCkBAIC05Myw3ICs5Myw3IEBAIHN0cnVjdCBTY2hlZHVs
ZWRSZWRpcmVjdGlvbiA6IE5vbmNvcHlhYmxlIHsKICAgICAgICAgLCB3YXNEdXJpbmdMb2FkKGR1
cmluZ0xvYWQpCiAgICAgICAgICwgdG9sZENsaWVudChmYWxzZSkKICAgICB7Ci0gICAgICAgIEFT
U0VSVCghdXJsLmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVCghdXJsLnN0cmluZygpLmlzRW1w
dHkoKSk7CiAgICAgfQogCiAgICAgZXhwbGljaXQgU2NoZWR1bGVkUmVkaXJlY3Rpb24oaW50IGhp
c3RvcnlOYXZpZ2F0aW9uU3RlcHMpCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBSZWRpcmVjdFNj
aGVkdWxlcjo6Y2xlYXIoKQogICAgIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24uY2xlYXIoKTsKIH0K
IAotdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdChkb3VibGUgZGVsYXks
IGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWRp
cmVjdChkb3VibGUgZGVsYXksIGNvbnN0IFVSTFN0cmluZyYgdXJsKQogewogICAgIGlmIChkZWxh
eSA8IDAgfHwgZGVsYXkgPiBJTlRfTUFYIC8gMTAwMCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTU5
LDcgKzE1OSw3IEBAIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QoZG91
YmxlIGRlbGF5LCBjb25zdCBTdHJpbmcmIHVybCkKICAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHVybC5pc0VtcHR5KCkpCisgICAgaWYgKHVybC5z
dHJpbmcoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIHdhbnQgYSBu
ZXcgaGlzdG9yeSBpdGVtIGlmIHRoZSByZWZyZXNoIHRpbWVvdXQgaXMgPiAxIHNlY29uZC4KQEAg
LTE4MSwxMiArMTgxLDEyIEBAIGJvb2wgUmVkaXJlY3RTY2hlZHVsZXI6Om11c3RMb2NrQmFja0Zv
cndhcmRMaXN0KEZyYW1lKiB0YXJnZXRGcmFtZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9j
a0JhY2tGb3J3YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSkKK3ZvaWQgUmVkaXJlY3RTY2hl
ZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoY29uc3QgVVJMU3RyaW5nJiB1cmwsIGNvbnN0
IFVSTFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3
YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSkKIHsKICAgICBpZiAoIW1fZnJhbWUtPnBhZ2Uo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHVybC5pc0VtcHR5KCkpCisgICAgaWYgKHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGxvY2tCYWNrRm9y
d2FyZExpc3QgPSBsb2NrQmFja0ZvcndhcmRMaXN0IHx8IG11c3RMb2NrQmFja0ZvcndhcmRMaXN0
KG1fZnJhbWUpOwpAQCAtMTk1LDkgKzE5NSw5IEBAIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNj
aGVkdWxlTG9jYXRpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAg
ICAKICAgICAvLyBJZiB0aGUgVVJMIHdlJ3JlIGdvaW5nIHRvIG5hdmlnYXRlIHRvIGlzIHRoZSBz
YW1lIGFzIHRoZSBjdXJyZW50IG9uZSwgZXhjZXB0IGZvciB0aGUKICAgICAvLyBmcmFnbWVudCBw
YXJ0LCB3ZSBkb24ndCBuZWVkIHRvIHNjaGVkdWxlIHRoZSBsb2NhdGlvbiBjaGFuZ2UuCi0gICAg
S1VSTCBwYXJzZWRVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOworICAgIEtVUkwgcGFyc2VkVVJM
KFBhcnNlZFVSTFN0cmluZywgdXJsLnN0cmluZygpKTsKICAgICBpZiAocGFyc2VkVVJMLmhhc0Zy
YWdtZW50SWRlbnRpZmllcigpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobG9h
ZGVyLT51cmwoKSwgcGFyc2VkVVJMKSkgewotICAgICAgICBsb2FkZXItPmNoYW5nZUxvY2F0aW9u
KGxvYWRlci0+Y29tcGxldGVVUkwodXJsKSwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFj
a0ZvcndhcmRMaXN0LCB3YXNVc2VyR2VzdHVyZSk7CisgICAgICAgIGxvYWRlci0+Y2hhbmdlTG9j
YXRpb24obG9hZGVyLT5jb21wbGV0ZVVSTCh1cmwuc3RyaW5nKCkpLCByZWZlcnJlci5zdHJpbmco
KSwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHdhc1VzZXJHZXN0dXJlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgUmVkaXJlY3RT
Y2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaChib29sIHdhc1VzZXJHZXN0dXJlKQogICAgIGlmICh1
cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzY2hlZHVsZShuZXcgU2NoZWR1
bGVkUmVkaXJlY3Rpb24odXJsLnN0cmluZygpLCBtX2ZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdS
ZWZlcnJlcigpLCB0cnVlLCB0cnVlLCB3YXNVc2VyR2VzdHVyZSwgdHJ1ZSwgZmFsc2UpKTsKKyAg
ICBzY2hlZHVsZShuZXcgU2NoZWR1bGVkUmVkaXJlY3Rpb24oVVJMU3RyaW5nKHVybCksIG1fZnJh
bWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCksIHRydWUsIHRydWUsIHdhc1VzZXJHZXN0
dXJlLCB0cnVlLCBmYWxzZSkpOwogfQogCiBib29sIFJlZGlyZWN0U2NoZWR1bGVyOjpsb2NhdGlv
bkNoYW5nZVBlbmRpbmcoKQpAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgUmVkaXJlY3RTY2hlZHVs
ZXI6OnRpbWVyRmlyZWQoVGltZXI8UmVkaXJlY3RTY2hlZHVsZXI+KikKICAgICBzd2l0Y2ggKHJl
ZGlyZWN0aW9uLT50eXBlKSB7CiAgICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJlY3Rpb246OnJl
ZGlyZWN0aW9uOgogICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpsb2NhdGlvbkNo
YW5nZToKLSAgICAgICAgICAgIGxvYWRlci0+Y2hhbmdlTG9jYXRpb24oS1VSTChQYXJzZWRVUkxT
dHJpbmcsIHJlZGlyZWN0aW9uLT51cmwpLCByZWRpcmVjdGlvbi0+cmVmZXJyZXIsCisgICAgICAg
ICAgICBsb2FkZXItPmNoYW5nZUxvY2F0aW9uKHJlZGlyZWN0aW9uLT51cmwudG9LVVJMKCksIHJl
ZGlyZWN0aW9uLT5yZWZlcnJlci5zdHJpbmcoKSwKICAgICAgICAgICAgICAgICByZWRpcmVjdGlv
bi0+bG9ja0hpc3RvcnksIHJlZGlyZWN0aW9uLT5sb2NrQmFja0ZvcndhcmRMaXN0LCByZWRpcmVj
dGlvbi0+d2FzVXNlckdlc3R1cmUsIHJlZGlyZWN0aW9uLT53YXNSZWZyZXNoKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6aGlzdG9yeU5h
dmlnYXRpb246CkBAIC0zNzMsNyArMzczLDcgQEAgdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c3Rh
cnRUaW1lcigpCiAgICAgICAgICAgICBpZiAobV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+dG9sZENs
aWVudCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtX3NjaGVkdWxlZFJl
ZGlyZWN0aW9uLT50b2xkQ2xpZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgIGxvYWRlci0+Y2xpZW50
UmVkaXJlY3RlZChLVVJMKFBhcnNlZFVSTFN0cmluZywgbV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+
dXJsKSwKKyAgICAgICAgICAgIGxvYWRlci0+Y2xpZW50UmVkaXJlY3RlZChtX3NjaGVkdWxlZFJl
ZGlyZWN0aW9uLT51cmwudG9LVVJMKCksCiAgICAgICAgICAgICAgICAgbV9zY2hlZHVsZWRSZWRp
cmVjdGlvbi0+ZGVsYXksCiAgICAgICAgICAgICAgICAgY3VycmVudFRpbWUoKSArIG1fdGltZXIu
bmV4dEZpcmVJbnRlcnZhbCgpLAogICAgICAgICAgICAgICAgIG1fc2NoZWR1bGVkUmVkaXJlY3Rp
b24tPmxvY2tCYWNrRm9yd2FyZExpc3QpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUmVk
aXJlY3RTY2hlZHVsZXIuaCBiL1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmgKaW5k
ZXggMDA1YTE3My4uN2I0NGM1MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RT
Y2hlZHVsZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5oCkBAIC0z
Myw2ICszMyw3IEBACiAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisj
aW5jbHVkZSAiVVJMU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTU0LDgg
KzU1LDggQEAgcHVibGljOgogICAgIGJvb2wgcmVkaXJlY3RTY2hlZHVsZWREdXJpbmdMb2FkKCk7
CiAgICAgYm9vbCBsb2NhdGlvbkNoYW5nZVBlbmRpbmcoKTsKIAotICAgIHZvaWQgc2NoZWR1bGVS
ZWRpcmVjdChkb3VibGUgZGVsYXksIGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICB2b2lkIHNjaGVk
dWxlTG9jYXRpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGJvb2wgbG9ja0hpc3RvcnkgPSB0cnVlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QgPSB0
cnVlLCBib29sIHVzZXJHZXN0dXJlID0gZmFsc2UpOworICAgIHZvaWQgc2NoZWR1bGVSZWRpcmVj
dChkb3VibGUgZGVsYXksIGNvbnN0IFVSTFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIHNjaGVkdWxl
TG9jYXRpb25DaGFuZ2UoY29uc3QgVVJMU3RyaW5nJiB1cmwsIGNvbnN0IFVSTFN0cmluZyYgcmVm
ZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnkgPSB0cnVlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3Qg
PSB0cnVlLCBib29sIHVzZXJHZXN0dXJlID0gZmFsc2UpOwogICAgIHZvaWQgc2NoZWR1bGVGb3Jt
U3VibWlzc2lvbihjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgYm9vbCBsb2NrSGlzdG9yeSwgUGFz
c1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7CiAgICAgdm9pZCBzY2hlZHVs
ZVJlZnJlc2goYm9vbCB1c2VyR2VzdHVyZSA9IGZhbHNlKTsKICAgICB2b2lkIHNjaGVkdWxlSGlz
dG9yeU5hdmlnYXRpb24oaW50IHN0ZXBzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cAppbmRleCBmOTJhMDc0Li45MTU0Nzc4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC04Miw3ICs4Miw3IEBAIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJl
c291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBTdWJyZXNvdXJjCiAgICAgaWYgKFNl
Y3VyaXR5T3JpZ2luOjpzaG91bGRIaWRlUmVmZXJyZXIocmVxdWVzdC51cmwoKSwgZmwtPm91dGdv
aW5nUmVmZXJyZXIoKSkpCiAgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsK
ICAgICBlbHNlIGlmICghcmVxdWVzdC5odHRwUmVmZXJyZXIoKSkKLSAgICAgICAgbmV3UmVxdWVz
dC5zZXRIVFRQUmVmZXJyZXIoZmwtPm91dGdvaW5nUmVmZXJyZXIoKSk7CisgICAgICAgIG5ld1Jl
cXVlc3Quc2V0SFRUUFJlZmVycmVyKGZsLT5vdXRnb2luZ1JlZmVycmVyKCkuc3RyaW5nKCkpOwog
ICAgIEZyYW1lTG9hZGVyOjphZGRIVFRQT3JpZ2luSWZOZWVkZWQobmV3UmVxdWVzdCwgZmwtPm91
dGdvaW5nT3JpZ2luKCkpOwogCiAgICAgLy8gVXNlIHRoZSBvcmlnaW5hbCByZXF1ZXN0J3MgY2Fj
aGUgcG9saWN5IGZvciB0d28gcmVhc29uczoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDUyNjA0M2IuLmE4YTNjZDkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
KysrIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApA
QCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNo
ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHBhc3NlZE1hbmlmZXN0CiAgICAgICAgICAgICAv
LyBSZXN0YXJ0IHRoZSBjdXJyZW50IG5hdmlnYXRpb24gZnJvbSB0aGUgdG9wIG9mIHRoZSBuYXZp
Z2F0aW9uIGFsZ29yaXRobSwgdW5kb2luZyBhbnkgY2hhbmdlcyB0aGF0IHdlcmUgbWFkZQogICAg
ICAgICAgICAgLy8gYXMgcGFydCBvZiB0aGUgaW5pdGlhbCBsb2FkLgogICAgICAgICAgICAgLy8g
VGhlIG5hdmlnYXRpb24gd2lsbCBub3QgcmVzdWx0IGluIHRoZSBzYW1lIHJlc291cmNlIGJlaW5n
IGxvYWRlZCwgYmVjYXVzZSAiZm9yZWlnbiIgZW50cmllcyBhcmUgbmV2ZXIgcGlja2VkIGR1cmlu
ZyBuYXZpZ2F0aW9uLgotICAgICAgICAgICAgZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNj
aGVkdWxlTG9jYXRpb25DaGFuZ2UoZG9jdW1lbnRMb2FkZXItPnVybCgpLCBmcmFtZS0+bG9hZGVy
KCktPnJlZmVycmVyKCksIHRydWUpOworICAgICAgICAgICAgZnJhbWUtPnJlZGlyZWN0U2NoZWR1
bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoVVJMU3RyaW5nKGRvY3VtZW50TG9hZGVyLT51
cmwoKSksIFVSTFN0cmluZyhQYXJzZWRVUkxTdHJpbmcsIGZyYW1lLT5sb2FkZXIoKS0+cmVmZXJy
ZXIoKSksIHRydWUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IGQzODRiMDIuLjFiMjc0MmIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1dl
YkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAg
c3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cmxUb0xvYWQsIEZyYW1lKiBm
cmFtZSkKIHsKICAgICBpZiAoUGFnZSogb2xkUGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKICAgICAg
ICAgV2luZG93RmVhdHVyZXMgZmVhdHVyZXM7Ci0gICAgICAgIGlmIChQYWdlKiBuZXdQYWdlID0g
b2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhmcmFtZSwgRnJhbWVMb2FkUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QodXJsVG9Mb2FkLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJy
ZXIoKSkpLCBmZWF0dXJlcykpCisgICAgICAgIGlmIChQYWdlKiBuZXdQYWdlID0gb2xkUGFnZS0+
Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhmcmFtZSwgRnJhbWVMb2FkUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QodXJsVG9Mb2FkLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKS5zdHJp
bmcoKSkpLCBmZWF0dXJlcykpCiAgICAgICAgICAgICBuZXdQYWdlLT5jaHJvbWUoKS0+c2hvdygp
OwogICAgIH0KIH0KQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxl
cjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rOgogICAgICAgICBp
ZiAoRnJhbWUqIHRhcmdldEZyYW1lID0gcmVzdWx0LnRhcmdldEZyYW1lKCkpCi0gICAgICAgICAg
ICB0YXJnZXRGcmFtZS0+bG9hZGVyKCktPmxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QocmVzdWx0LmFic29sdXRlTGlua1VSTCgpLCBmcmFtZS0+bG9hZGVy
KCktPm91dGdvaW5nUmVmZXJyZXIoKSkpLCBmYWxzZSwgZmFsc2UsIDAsIDAsIFNlbmRSZWZlcnJl
cik7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCktPmxvYWRGcmFtZVJlcXVlc3Qo
RnJhbWVMb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QocmVzdWx0LmFic29sdXRlTGlua1VSTCgp
LCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKS5zdHJpbmcoKSkpLCBmYWxzZSwg
ZmFsc2UsIDAsIDAsIFNlbmRSZWZlcnJlcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG9w
ZW5OZXdXaW5kb3cocmVzdWx0LmFic29sdXRlTGlua1VSTCgpLCBmcmFtZSk7CiAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggYzBiM2UyMi4uNDJlZmFlNyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiT3JpZ2luQWNjZXNzRW50cnkuaCIKKyNp
bmNsdWRlICJVUkxTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU4MCwxMCArNTgxLDEwIEBAIGJvb2wgU2VjdXJpdHlPcmln
aW46OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiAg
ICAgcmV0dXJuIHNlY3VyZVNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCi1ib29sIFNl
Y3VyaXR5T3JpZ2luOjpzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyKQorYm9vbCBTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVycmVy
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVVJMU3RyaW5nJiByZWZlcnJlcikKIHsKLSAgICBib29s
IHJlZmVycmVySXNTZWN1cmVVUkwgPSBwcm90b2NvbElzKHJlZmVycmVyLCAiaHR0cHMiKTsKLSAg
ICBib29sIHJlZmVycmVySXNXZWJVUkwgPSByZWZlcnJlcklzU2VjdXJlVVJMIHx8IHByb3RvY29s
SXMocmVmZXJyZXIsICJodHRwIik7CisgICAgYm9vbCByZWZlcnJlcklzU2VjdXJlVVJMID0gcHJv
dG9jb2xJcyhyZWZlcnJlci5zdHJpbmcoKSwgImh0dHBzIik7CisgICAgYm9vbCByZWZlcnJlcklz
V2ViVVJMID0gcmVmZXJyZXJJc1NlY3VyZVVSTCB8fCBwcm90b2NvbElzKHJlZmVycmVyLnN0cmlu
ZygpLCAiaHR0cCIpOwogCiAgICAgaWYgKCFyZWZlcnJlcklzV2ViVVJMKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKaW5kZXggMTFjMjEzZS4uMzk5ODlmYSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKKysrIGIvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgdHlwZWRlZiBIYXNoU2V0PFN0cmluZywg
Q2FzZUZvbGRpbmdIYXNoPiBVUkxTY2hlbWVzTWFwOwogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IEtVUkw7CitjbGFzcyBVUkxTdHJpbmc7CiAKIGNsYXNzIFNlY3VyaXR5T3JpZ2luIDogcHVibGlj
IFRocmVhZFNhZmVTaGFyZWQ8U2VjdXJpdHlPcmlnaW4+IHsKIHB1YmxpYzoKQEAgLTE4MCw3ICsx
ODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3Vy
ZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdFVSTFNjaGVtZUFz
U2VjdXJlKGNvbnN0IFN0cmluZyYpOwogCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkSGlkZVJlZmVy
cmVyKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKKyAgICBzdGF0aWMgYm9v
bCBzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VSTCYsIGNvbnN0IFVSTFN0cmluZyYgcmVmZXJy
ZXIpOwogCiAgICAgZW51bSBMb2NhbExvYWRQb2xpY3kgewogICAgICAgICBBbGxvd0xvY2FsTG9h
ZHNGb3JBbGwsIC8vIE5vIHJlc3RyaWN0aW9uIG9uIGxvY2FsIGxvYWRzLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwIGIvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3Bw
CmluZGV4IDA5NGYyMDAuLmYzMWYxN2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9YU1NBdWRp
dG9yLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAKQEAgLTMyMyw3ICszMjMs
NyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbmRJblJlcXVlc3QoY29uc3QgRmluZFRhc2smIHRhc2sp
IGNvbnN0CiAgICAgY2FzZSBYU1NQcm90ZWN0aW9uQmxvY2tFbmFibGVkOgogICAgICAgICBpZiAo
YmxvY2tGcmFtZSkgewogICAgICAgICAgICAgYmxvY2tGcmFtZS0+bG9hZGVyKCktPnN0b3BBbGxM
b2FkZXJzKCk7Ci0gICAgICAgICAgICBibG9ja0ZyYW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5z
Y2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGJsYW5rVVJMKCksIFN0cmluZygpKTsKKyAgICAgICAgICAg
IGJsb2NrRnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2Uo
VVJMU3RyaW5nKGJsYW5rVVJMKCkpLCBVUkxTdHJpbmcoKSk7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd21sL1dNTEdvRWxlbWVu
dC5jcHAgYi9XZWJDb3JlL3dtbC9XTUxHb0VsZW1lbnQuY3BwCmluZGV4IDgwNzYyMDcuLmQ1ZmE2
ZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd21sL1dNTEdvRWxlbWVudC5jcHAKKysrIGIvV2ViQ29y
ZS93bWwvV01MR29FbGVtZW50LmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgV01MR29FbGVt
ZW50OjpleGVjdXRlVGFzaygpCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsKTsKIAog
ICAgIGlmIChnZXRBdHRyaWJ1dGUoc2VuZHJlZmVyZXJBdHRyKSA9PSAidHJ1ZSIpCi0gICAgICAg
IHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKGxvYWRlci0+b3V0Z29pbmdSZWZlcnJlcigpKTsKKyAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIobG9hZGVyLT5vdXRnb2luZ1JlZmVycmVyKCku
c3RyaW5nKCkpOwogCiAgICAgU3RyaW5nIGNhY2hlQ29udHJvbCA9IGdldEF0dHJpYnV0ZShjYWNo
ZV9jb250cm9sQXR0cik7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDQ1NTk5MWIuLmFlOTM0MWMgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTAzLTI5ICBBZGFtIEJhcnRoICA8YWJhcnRo
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGVhY2ggUmVkaXJlY3RTY2hlZHVsZXIgYWJvdXQgVVJMU3RyaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjc5NAorCisgICAgICAgIFNw
aWRlciBVUkxTdHJpbmcgY2hhbmdlcyB0byB0aGVzZSBsb2NhdGlvbnMuCisKKyAgICAgICAgKiBz
cmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUhvc3Q6OnNlbGVjdENhY2hlV2l0aE1hbmlmZXN0KToKKyAgICAgICAgKiBzcmMvV2Vi
RnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpzZXRSZWZlcnJl
ckZvclJlcXVlc3QpOgorICAgICAgICAqIHNyYy9XZWJTZWN1cml0eVBvbGljeS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIpOgorCiAy
MDEwLTAzLTI5ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNWZhNGE2Ni4uMTY0OWRjZSAxMDA2NDQKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBA
QCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzZWxlY3RDYWNoZVdpdGhNYW5pZmVzdChjb25z
dCBLVVJMJiBtYW5pZmVzdFVSTCkKICAgICAgICAgICAgIC8vIHNlZSBXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKCkKICAgICAgICAgICAgIGNvbnN0IEtVUkwmIGRv
Y1VSTCA9IG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpOwogICAg
ICAgICAgICAgU3RyaW5nIHJlZmVycmVyID0gbV9kb2N1bWVudExvYWRlci0+ZnJhbWVMb2FkZXIo
KS0+cmVmZXJyZXIoKTsKLSAgICAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnJl
ZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoZG9jVVJMLCByZWZlcnJl
cik7CisgICAgICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5yZWRpcmVjdFNjaGVk
dWxlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKFVSTFN0cmluZyhkb2NVUkwpLCBVUkxTdHJp
bmcoUGFyc2VkVVJMU3RyaW5nLCByZWZlcnJlcikpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDk4MmI0MzQuLmYxOWZhYmMgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTk3NSwxNCArOTc1LDE0IEBAIGJvb2wg
V2ViRnJhbWVJbXBsOjppc1ZpZXdTb3VyY2VNb2RlRW5hYmxlZCgpIGNvbnN0CiAKIHZvaWQgV2Vi
RnJhbWVJbXBsOjpzZXRSZWZlcnJlckZvclJlcXVlc3QoCiAgICAgV2ViVVJMUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgV2ViVVJMJiByZWZlcnJlclVSTCkgewotICAgIFN0cmluZyByZWZlcnJlcjsK
KyAgICBVUkxTdHJpbmcgcmVmZXJyZXI7CiAgICAgaWYgKHJlZmVycmVyVVJMLmlzRW1wdHkoKSkK
ICAgICAgICAgcmVmZXJyZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigp
OwogICAgIGVsc2UKLSAgICAgICAgcmVmZXJyZXIgPSByZWZlcnJlclVSTC5zcGVjKCkudXRmMTYo
KTsKKyAgICAgICAgcmVmZXJyZXIgPSBVUkxTdHJpbmcocmVmZXJyZXJVUkwpOwogICAgIGlmIChT
ZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVycmVyKHJlcXVlc3QudXJsKCksIHJlZmVycmVy
KSkKICAgICAgICAgcmV0dXJuOwotICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKFdlYlN0
cmluZzo6ZnJvbVVURjgoIlJlZmVyZXIiKSwgcmVmZXJyZXIpOworICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKFdlYlN0cmluZzo6ZnJvbVVURjgoIlJlZmVyZXIiKSwgcmVmZXJyZXIuc3Ry
aW5nKCkpOwogfQogCiB2b2lkIFdlYkZyYW1lSW1wbDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3Qo
V2ViVVJMUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2VjdXJpdHlQb2xpY3kuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWN1cml0eVBv
bGljeS5jcHAKaW5kZXggNWQ0Njc0ZS4uZjAwNGMxMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZWN1cml0eVBvbGljeS5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBXZWJTZWN1cml0eVBv
bGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCkKIAogYm9vbCBXZWJTZWN1cml0eVBv
bGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKGNvbnN0IFdlYlVSTCYgdXJsLCBjb25zdCBXZWJTdHJp
bmcmIHJlZmVycmVyKQogewotICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJl
ZmVycmVyKHVybCwgcmVmZXJyZXIpOworICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6c2hvdWxk
SGlkZVJlZmVycmVyKHVybCwgVVJMU3RyaW5nKFBhcnNlZFVSTFN0cmluZywgcmVmZXJyZXIpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGU3YmY1ODUuLjg1NmIzYmMgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMtMjkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZWFj
aCBSZWRpcmVjdFNjaGVkdWxlciBhYm91dCBVUkxTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2Nzk0CisKKyAgICAgICAgU3BpZGVyIFVSTFN0
cmluZyBjaGFuZ2VzIHRvIHRoZXNlIGxvY2F0aW9ucy4KKworICAgICAgICAqIFBsdWdpbnMvV2Vi
QmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViQmFzZU5ldHNjYXBlUGx1
Z2luVmlldyByZXF1ZXN0V2l0aFVSTENTdHJpbmc6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBs
b2FkU3RyZWFtXSk6CisKIDIwMTAtMDMtMjYgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8
a2VubmV0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3Rv
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZp
ZXcubW0gYi9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQpp
bmRleCBiZDNlYjM0Li4xNzY0ZjRmIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1BsdWdpbnMvV2Vi
QmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFz
ZU5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMjE3LDcgKzIxNyw3IEBAIFN0cmluZyBXZWJIYWx0
YWJsZVBsdWdpbjo6cGx1Z2luTmFtZSgpIGNvbnN0CiAgICAgRnJhbWUqIGZyYW1lID0gY29yZShb
c2VsZiB3ZWJGcmFtZV0pOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgW3JlcXVlc3QgX3dlYl9zZXRIVFRQUmVmZXJyZXI6ZnJhbWUtPmxvYWRlcigpLT5vdXRnb2lu
Z1JlZmVycmVyKCldOworICAgIFtyZXF1ZXN0IF93ZWJfc2V0SFRUUFJlZmVycmVyOmZyYW1lLT5s
b2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLnN0cmluZygpXTsKICAgICByZXR1cm4gcmVxdWVz
dDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
Vmlldy5tbSBiL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5k
ZXggOTE3ODBkMi4uN2ZiNzkxNCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5l
dHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tCkBAIC0xMTM3LDcgKzExMzcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0
TlBSZWN0KGNvbnN0IE5TUmVjdCYgbnIsIE5QUmVjdCYgbnByKQogICAgIC8vIENoZWNrIGZvciB0
aGlzIGFuZCBkb24ndCBzdGFydCBhIGxvYWQgaW4gdGhpcyBjYXNlLgogICAgIGlmIChfc291cmNl
VVJMICYmICFbX3NvdXJjZVVSTC5nZXQoKSBfd2ViX2lzRW1wdHldKSB7CiAgICAgICAgIE5TTXV0
YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpfc291cmNlVVJMLmdldCgpXTsKLSAgICAgICAgW3JlcXVlc3QgX3dlYl9zZXRIVFRQUmVm
ZXJyZXI6Y29yZShbc2VsZiB3ZWJGcmFtZV0pLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigp
XTsKKyAgICAgICAgW3JlcXVlc3QgX3dlYl9zZXRIVFRQUmVmZXJyZXI6Y29yZShbc2VsZiB3ZWJG
cmFtZV0pLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLnN0cmluZygpXTsKICAgICAgICAg
W3NlbGYgbG9hZFJlcXVlc3Q6cmVxdWVzdCBpblRhcmdldDpuaWwgd2l0aE5vdGlmeURhdGE6bmls
IHNlbmROb3RpZmljYXRpb246Tk9dOwogICAgIH0gCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQv
QXBpL3F3ZWJmcmFtZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggM2Ji
Y2ZlMi4uOGQzMDdmNyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCisr
KyBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcApAQCAtODI1LDggKzgyNSw4IEBAIFFVcmwg
UVdlYkZyYW1lOjpyZXF1ZXN0ZWRVcmwoKSBjb25zdAogICAgICAgICB8fCAhbG9hZGVyQ2xpZW50
LT5tX2xvYWRFcnJvci5pc051bGwoKSkgewogICAgICAgICBpZiAoIWxvYWRlckNsaWVudC0+bV9s
b2FkRXJyb3IuZmFpbGluZ1VSTCgpLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIFFVcmwo
bG9hZGVyQ2xpZW50LT5tX2xvYWRFcnJvci5mYWlsaW5nVVJMKCkpOwotICAgICAgICBlbHNlIGlm
ICghbG9hZGVyLT5vdXRnb2luZ1JlZmVycmVyKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0
dXJuIFFVcmwobG9hZGVyLT5vdXRnb2luZ1JlZmVycmVyKCkpOworICAgICAgICBlbHNlIGlmICgh
bG9hZGVyLT5vdXRnb2luZ1JlZmVycmVyKCkuc3RyaW5nKCkuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgcmV0dXJuIFFVcmwobG9hZGVyLT5vdXRnb2luZ1JlZmVycmVyKCkuc3RyaW5nKCkpOwogICAg
IH0KIAogICAgIHJldHVybiBsb2FkZXItPm9yaWdpbmFsUmVxdWVzdCgpLnVybCgpOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcAppbmRleCBlZGZlY2VlLi4xNWYzY2FjIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3
ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMjA0Myw3ICsy
MDQzLDcgQEAgUU9iamVjdCAqUVdlYlBhZ2U6OmNyZWF0ZVBsdWdpbihjb25zdCBRU3RyaW5nICZj
bGFzc2lkLCBjb25zdCBRVXJsICZ1cmwsIGNvbnN0IFEKIAogc3RhdGljIFdlYkNvcmU6OkZyYW1l
TG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdChjb25zdCBRVXJsICZ1cmwsIFdlYkNvcmU6OkZy
YW1lICpmcmFtZSkKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcnIodXJsLCBmcmFt
ZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSk7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJyKHVybCwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkuc3RyaW5n
KCkpOwogICAgIHJldHVybiBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0KHJyKTsKIH0KIApAQCAt
MjEwOSwxMCArMjEwOSwxMCBAQCB2b2lkIFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKFdlYkFjdGlv
biBhY3Rpb24sIGJvb2wpCiAgICAgICAgICAgICBvcGVuTmV3V2luZG93KGQtPmhpdFRlc3RSZXN1
bHQuaW1hZ2VVcmwoKSwgZnJhbWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
RG93bmxvYWRJbWFnZVRvRGlzazoKLSAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50
KCktPnN0YXJ0RG93bmxvYWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KGQtPmhpdFRlc3RSZXN1
bHQuaW1hZ2VVcmwoKSwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpKTsKKyAg
ICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnN0YXJ0RG93bmxvYWQoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0KGQtPmhpdFRlc3RSZXN1bHQuaW1hZ2VVcmwoKSwgZnJhbWUtPmxv
YWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkuc3RyaW5nKCkpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIERvd25sb2FkTGlua1RvRGlzazoKLSAgICAgICAgICAgIGZyYW1lLT5s
b2FkZXIoKS0+Y2xpZW50KCktPnN0YXJ0RG93bmxvYWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
KGQtPmhpdFRlc3RSZXN1bHQubGlua1VybCgpLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVm
ZXJyZXIoKSkpOworICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+c3RhcnRE
b3dubG9hZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QoZC0+aGl0VGVzdFJlc3VsdC5saW5rVXJs
KCksIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLnN0cmluZygpKSk7CiAgICAg
ICAgICAgICBicmVhazsKICNpZm5kZWYgUVRfTk9fQ0xJUEJPQVJECiAgICAgICAgIGNhc2UgQ29w
eUltYWdlVG9DbGlwYm9hcmQ6CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2Vi
S2l0L3F0L0NoYW5nZUxvZwppbmRleCA0YmFkZDVmLi4yOGU0OGViIDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAxMC0wMy0yOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYWNoIFJlZGlyZWN0U2No
ZWR1bGVyIGFib3V0IFVSTFN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzY3OTQKKworICAgICAgICBTcGlkZXIgVVJMU3RyaW5nIGNoYW5nZXMg
dG8gdGhlc2UgbG9jYXRpb25zLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAg
ICAgIChRV2ViRnJhbWU6OnJlcXVlc3RlZFVybCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKGZyYW1lTG9hZFJlcXVlc3QpOgorICAgICAgICAoUVdlYlBhZ2U6OnRyaWdn
ZXJBY3Rpb24pOgorCiAyMDEwLTAzLTI5ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtl
bm5ldGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51986</attachid>
            <date>2010-03-29 17:32:31 -0700</date>
            <delta_ts>2010-03-29 18:13:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36794-20100329173229.patch</filename>
            <type>text/plain</type>
            <size>52813</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmFhMDU1Mi4uZWEwMTNiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NiBAQAorMjAxMC0wMy0yOSAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlYWNoIFJlZGlyZWN0U2NoZWR1bGVyIGFib3V0IFVSTFN0cmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY3OTQKKworICAg
ICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIG5vdGlvbiBvZiBhIFVSTFN0cmluZy4gIElu
c3RlYWQgb2YgcGFzc2luZworICAgICAgICBhcm91bmQgVVJMcyBhcyBTdHJpbmdzLCB3ZSB3YW50
IGEgdHlwZSB0aGF0IHJlbWVtYmVycyB0aGF0IHRoZXkncmUKKyAgICAgICAgc3VwcG9zZWQgdG8g
YmUgVVJMcy4gIEhvd2V2ZXIsIHdlIGRvbid0IHdhbnQgdG8gdXNlIEtVUkwgYWxsIHRoZSB0aW1l
CisgICAgICAgIGJlY2F1c2UgaXQgZHJhZ3MgYWxvbmcgYSBidW5jaCBvZiBleHRyYSBmaWVsZHMu
CisKKyAgICAgICAgQ29udmVydGluZyB0aGUgY29kZSBiYXNlIG92ZXIgdG8gdXNpbmcgVVJMU3Ry
aW5nIGlzIGEgc29tZXdoYXQKKyAgICAgICAgInNwaWRlcnkiIGNoYW5nZSB0aGF0IHdhbnRzIHRv
IGV4cGFuZCBhbmQgdG91Y2ggZXZlcnkgbGluZSBvZiBjb2RlLgorICAgICAgICBJbnN0ZWFkIG9m
IGRvaW5nIHRoYXQgaW4gb25lIGdpYW50IGNvbW1pdCwgSSd2ZSBsaW1pdGVkIHRoaXMgcGF0Y2gg
dG8KKyAgICAgICAgVVJMcyBoYW5kbGVkIGJ5IFJlZGlyZWN0U2NoZWR1bGVyLiAgSW4gZG9pbmcg
c28sIEkgd2FzIHZlcnkgdGVtcHRlZCB0bworICAgICAgICBzcGlkZXIgdG8gb3V0Z29pbmdSZWZl
cnJlciBiZWNhdXNlIGl0IHNvIHNvIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24KKyAgICAgICAg
d2l0aCBSZWRpcmVjdFNjaGVkdWxlci4gIFNwaWRlcmluZyB0aGVyZSBsZWFkIG1lIHRvIFNob3Vs
ZEhpZGVSZWZlcnJlciwKKyAgICAgICAgYnV0IEkgd2FzIGFibGUgdG8gZHJhdyB0aGUgbGluZSB0
aGVyZS4KKworICAgICAgICBTZWNyZXRseSwgSSB3YW50IHRoaXMgaW5mcmFzdHJ1Y3R1cmUgdG8g
aW1wcm92ZSB0aGUgc2VjdXJpdHkgb2Ygb3VyCisgICAgICAgIEphdmFTY3JpcHQgVVJMIGhhbmRs
aW5nLCB3aGljaCAoY29pbmNpZGVudGFsbHk/KSByZXZvbHZlcyBhcm91bmQKKyAgICAgICAgUmVk
aXJlY3RTY2hlZHVsZXIuCisKKyAgICAgICAgTm8gdGVzdHMgYmVjYXVzZSB0aGlzIHBhdGNoIGRv
ZXNuJ3QgY2hhbmdlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBXZWJDb3JlLmJhc2UuZXhwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9C
aW5kaW5nRE9NV2luZG93Lmg6CisgICAgICAgIChXZWJDb3JlOjo6OmNyZWF0ZVdpbmRvdyk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6OnNldExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6b3Blbik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0RvY3VtZW50OjpzZXRMb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlv
bkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuYXZpZ2F0ZUlmQWxsb3dlZCk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmF2
aWdhdGVJZkFsbG93ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRv
d0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6b3BlbkNhbGxiYWNr
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnByb2Nlc3NIdHRwRXF1aXYpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y3JlYXRlV2luZG93KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpsb2FkU3ViZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN1Ym1pdEZv
cm0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlY2VpdmVkRmlyc3REYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpiZWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6b3V0Z29pbmdSZWZlcnJlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxl
ZFJlZGlyZWN0aW9uOjpTY2hlZHVsZWRSZWRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlZGlyZWN0U2NoZWR1bGVyOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
ZGlyZWN0U2NoZWR1bGVyOjpzdGFydFRpbWVyKToKKyAgICAgICAgKiBsb2FkZXIvUmVkaXJlY3RT
Y2hlZHVsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKToKKyAgICAgICAgKiBwYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuTmV3V2luZG93
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcik6CisgICAgICAg
ICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIHBhZ2UvWFNTQXVkaXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KToKKyAgICAgICAg
KiB3bWwvV01MR29FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldNTEdvRWxlbWVudDo6
ZXhlY3V0ZVRhc2spOgorCiAyMDEwLTAzLTI5ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA5ZWUy
YTc2Li40NGJiNDA1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE1NTQsNiArMTU1NCw3IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0v
VGltZXIuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmggXAorCVdlYkNvcmUvcGxh
dGZvcm0vVVJMU3RyaW5nLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9XaWRnZXQuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9XaW5kb3dzS2V5Ym9h
cmRDb2Rlcy5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cCBiL1dlYkNv
cmUvV2ViQ29yZS5iYXNlLmV4cAppbmRleCA4YjZlYjk5Li42NDQ0MzI3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCkBA
IC0zMDksNyArMzA5LDcgQEAgX19aTjdXZWJDb3JlMTRSZXNvdXJjZUxvYWRlcjE5c2V0U2hvdWxk
QnVmZmVyRGF0YUViCiBfX1pON1dlYkNvcmUxNFNWR1NNSUxFbGVtZW50MTNpc1NNSUxFbGVtZW50
RVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xNmNyZWF0ZUZyb21TdHJp
bmdFUktOU182U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjE4c2V0TG9jYWxM
b2FkUG9saWN5RU5TMF8xNUxvY2FsTG9hZFBvbGljeUUKLV9fWk43V2ViQ29yZTE0U2VjdXJpdHlP
cmlnaW4xOHNob3VsZEhpZGVSZWZlcnJlckVSS05TXzRLVVJMRVJLTlNfNlN0cmluZ0UKK19fWk43
V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xOHNob3VsZEhpZGVSZWZlcnJlckVSS05TXzRLVVJMRVJL
TlNfOVVSTFN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4yNHJlZ2lzdGVyVVJM
U2NoZW1lQXNMb2NhbEVSS05TXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2lu
MjVyZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlRVJLTlNfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0
U2VjdXJpdHlPcmlnaW4yNXdoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW5FUktTMF9SS05TXzZTdHJp
bmdFUzVfYgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCBkZWJlMjFmLi41NjYzNDEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjkwMSw2ICsyOTAxLDcgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9UaW1lci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L1RpbWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1RyZWVTaGFyZWQuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vVVJMU3RyaW5nLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1dpZGdl
dC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1dpZGdldC5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9XaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IDk0OTY3ZDUuLjA3MjE1NDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagpAQCAtMjIxNDEsNiArMjIxNDEsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxl
Pg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cVVJMU3RyaW5nLmgi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxXaWRnZXQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTgwYTZmYi4uZGUxNGFkMCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0NzMsNiArMjQ3Myw3
IEBACiAJCTk3MDU5OTc4MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzQxMDdEOTc1
MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTcwNTk5NzkxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGlj
eUNoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICovOyB9Owog
CQk5NzA1OTk3QTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzYxMDdEOTc1MjAwQTUw
QTdDIC8qIFBvbGljeUNoZWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk5NzBCRjc5QjExNjE3NEE0MDA4NUFEMEIgLyogVVJMU3RyaW5nLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzBCRjc5QTEx
NjE3NEE0MDA4NUFEMEIgLyogVVJMU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTczRTMyNTYxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291
cmNlTG9hZE5vdGlmaWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3M0UzMjU0MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmll
ci5jcHAgKi87IH07CiAJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWRO
b3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTczRTMyNTUxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc5RjQzRDMxMDc1
RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QxMTA3NUU0NEEwMDAwRjgzQiAvKiBS
ZWRpcmVjdFNjaGVkdWxlci5jcHAgKi87IH07CkBAIC03ODkxLDYgKzc4OTIsNyBAQAogCQk5NzA1
OTk3NDEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUG9saWN5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9saWN5Q2hlY2tlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAvKiBQ
b2xpY3lDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbGljeUNo
ZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTcwQkY3OUExMTYxNzRBNDAw
ODVBRDBCIC8qIFVSTFN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
UkxTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczRTMyNTQxMDg4M0I3
QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTczRTMyNTUxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9h
ZE5vdGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9h
ZE5vdGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OUY0M0QxMTA3NUU0
NEEwMDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZWRpcmVjdFNjaGVkdWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNTQyMiw2ICsxNTQyNCw3IEBACiAJCQkJOTMzMDlFQTEwOTlFQjc4QzAw
NTZFNTgxIC8qIFRpbWVyLmNwcCAqLywKIAkJCQk5MzA1QjI0QzA5OEYxQjZCMDBDMjg4NTUgLyog
VGltZXIuaCAqLywKIAkJCQkxNDE5RDJDNDBDRUE2RjYxMDBGRjUwN0EgLyogVHJlZVNoYXJlZC5o
ICovLAorCQkJCTk3MEJGNzlBMTE2MTc0QTQwMDg1QUQwQiAvKiBVUkxTdHJpbmcuaCAqLywKIAkJ
CQk5MzgwRjQ3MTA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCAqLywKIAkJCQk5MzgwRjQ3
MjA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmggKi8sCiAJCQkJRTFFMUJFRkYxMTVGRjZGQjAw
NkY1MkNBIC8qIFdpbmRvd3NLZXlib2FyZENvZGVzLmggKi8sCkBAIC0xODc2OCw2ICsxODc3MSw3
IEBACiAJCQkJRTQ3NzhCODAxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxRTFCRjAwMTE1RkY2RkIwMDZGNTJDQSAvKiBXaW5kb3dzS2V5Ym9h
cmRDb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ5OUE1MTUxMTVGQjMzMDAwRjU2NkUzIC8q
IFJlbmRlclNWR1Jlc291cmNlTWFya2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NzBCRjc5QjEx
NjE3NEE0MDA4NUFEMEIgLyogVVJMU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5nRE9NV2luZG93LmggYi9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oCmluZGV4IGI0NmJkZjkuLjMzYjNlYzUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5nRE9NV2luZG93LmgK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdET01XaW5kb3cuaApAQCAtNzMs
OCArNzMsOCBAQCBGcmFtZSogQmluZGluZ0RPTVdpbmRvdzxCaW5kaW5nPjo6Y3JlYXRlV2luZG93
KFN0YXRlPEJpbmRpbmc+KiBzdGF0ZSwKIAogICAgIC8vIEZvciB3aGF0ZXZlciByZWFzb24sIEZp
cmVmb3ggdXNlcyB0aGUgZW50ZXJlZCBmcmFtZSB0byBkZXRlcm1pbmUKICAgICAvLyB0aGUgb3V0
Z29pbmdSZWZlcnJlci4gIFdlIHJlcGxpY2F0ZSB0aGF0IGJlaGF2aW9yIGhlcmUuCi0gICAgU3Ry
aW5nIHJlZmVycmVyID0gZW50ZXJlZEZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigp
OwotICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKKyAgICBVUkxTdHJpbmcg
cmVmZXJyZXIgPSBlbnRlcmVkRnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCk7Cisg
ICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIuc3RyaW5nKCkpOwogICAgIEZyYW1l
TG9hZGVyOjphZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgZW50ZXJlZEZyYW1lLT5sb2Fk
ZXIoKS0+b3V0Z29pbmdPcmlnaW4oKSk7CiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZVJlcXVl
c3QocmVxdWVzdCwgZnJhbWVOYW1lKTsKIApAQCAtMTA3LDkgKzEwNyw5IEBAIEZyYW1lKiBCaW5k
aW5nRE9NV2luZG93PEJpbmRpbmc+OjpjcmVhdGVXaW5kb3coU3RhdGU8QmluZGluZz4qIHN0YXRl
LAogICAgICAgICBib29sIHVzZXJHZXN0dXJlID0gcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CiAK
ICAgICAgICAgaWYgKGNyZWF0ZWQpCi0gICAgICAgICAgICBuZXdGcmFtZS0+bG9hZGVyKCktPmNo
YW5nZUxvY2F0aW9uKGNvbXBsZXRlZFVybCwgcmVmZXJyZXIsIGZhbHNlLCBmYWxzZSwgdXNlckdl
c3R1cmUpOworICAgICAgICAgICAgbmV3RnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2NhdGlvbihj
b21wbGV0ZWRVcmwsIHJlZmVycmVyLnN0cmluZygpLCBmYWxzZSwgZmFsc2UsIHVzZXJHZXN0dXJl
KTsKICAgICAgICAgZWxzZSBpZiAoIXVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBuZXdGcmFt
ZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShjb21wbGV0ZWRV
cmwuc3RyaW5nKCksIHJlZmVycmVyLCBmYWxzZSwgdXNlckdlc3R1cmUpOworICAgICAgICAgICAg
bmV3RnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoVVJM
U3RyaW5nKGNvbXBsZXRlZFVybCksIHJlZmVycmVyLCBmYWxzZSwgdXNlckdlc3R1cmUpOwogICAg
IH0KIAogICAgIHJldHVybiBuZXdGcmFtZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKaW5kZXggYmE1NmUyOC4uNjlmZWE0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTUxNSw3ICs1MTUsNyBAQCB2b2lkIEpTRE9NV2lu
ZG93OjpzZXRMb2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAKICAgICBp
ZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkgfHwgYWxsb3dzQWNjZXNzRnJvbShleGVjKSkg
ewogICAgICAgICAvLyBXZSB3YW50IGEgbmV3IGhpc3RvcnkgaXRlbSBpZiB0aGlzIEpTIHdhcyBj
YWxsZWQgdmlhIGEgdXNlciBnZXN0dXJlCi0gICAgICAgIGZyYW1lLT5yZWRpcmVjdFNjaGVkdWxl
cigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKHVybCwgbGV4aWNhbEZyYW1lLT5sb2FkZXIoKS0+
b3V0Z29pbmdSZWZlcnJlcigpLCAhbGV4aWNhbEZyYW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoZXhlYykp
OworICAgICAgICBmcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNo
YW5nZShVUkxTdHJpbmcodXJsKSwgbGV4aWNhbEZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZl
cnJlcigpLCAhbGV4aWNhbEZyYW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKCksIGZhbHNlLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoZXhlYykpOwogICAgIH0KIH0K
IApAQCAtNjcyLDggKzY3Miw4IEBAIHN0YXRpYyBGcmFtZSogY3JlYXRlV2luZG93KEV4ZWNTdGF0
ZSogZXhlYywgRnJhbWUqIGxleGljYWxGcmFtZSwgRnJhbWUqIGR5bmFtaWNGCiAKICAgICAvLyBG
b3Igd2hhdGV2ZXIgcmVhc29uLCBGaXJlZm94IHVzZXMgdGhlIGR5bmFtaWNHbG9iYWxPYmplY3Qg
dG8gZGV0ZXJtaW5lCiAgICAgLy8gdGhlIG91dGdvaW5nUmVmZXJyZXIuICBXZSByZXBsaWNhdGUg
dGhhdCBiZWhhdmlvciBoZXJlLgotICAgIFN0cmluZyByZWZlcnJlciA9IGR5bmFtaWNGcmFtZS0+
bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKTsKLSAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJl
cihyZWZlcnJlcik7CisgICAgVVJMU3RyaW5nIHJlZmVycmVyID0gZHluYW1pY0ZyYW1lLT5sb2Fk
ZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpOworICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJl
ZmVycmVyLnN0cmluZygpKTsKICAgICBGcmFtZUxvYWRlcjo6YWRkSFRUUE9yaWdpbklmTmVlZGVk
KHJlcXVlc3QsIGR5bmFtaWNGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nT3JpZ2luKCkpOwogICAg
IEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZyYW1lTmFtZSk7CiAKQEAg
LTcwNiw5ICs3MDYsOSBAQCBzdGF0aWMgRnJhbWUqIGNyZWF0ZVdpbmRvdyhFeGVjU3RhdGUqIGV4
ZWMsIEZyYW1lKiBsZXhpY2FsRnJhbWUsIEZyYW1lKiBkeW5hbWljRgogICAgICAgICBib29sIHVz
ZXJHZXN0dXJlID0gcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKGV4ZWMpOwogCiAgICAgICAgIGlmIChj
cmVhdGVkKQotICAgICAgICAgICAgbmV3RnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2NhdGlvbihj
b21wbGV0ZWRVUkwsIHJlZmVycmVyLCBmYWxzZSwgZmFsc2UsIHVzZXJHZXN0dXJlKTsKKyAgICAg
ICAgICAgIG5ld0ZyYW1lLT5sb2FkZXIoKS0+Y2hhbmdlTG9jYXRpb24oY29tcGxldGVkVVJMLCBy
ZWZlcnJlci5zdHJpbmcoKSwgZmFsc2UsIGZhbHNlLCB1c2VyR2VzdHVyZSk7CiAgICAgICAgIGVs
c2UgaWYgKCF1cmwuaXNFbXB0eSgpKQotICAgICAgICAgICAgbmV3RnJhbWUtPnJlZGlyZWN0U2No
ZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoY29tcGxldGVkVVJMLnN0cmluZygpLCBy
ZWZlcnJlciwgIWxleGljYWxGcmFtZS0+c2NyaXB0KCktPmFueVBhZ2VJc1Byb2Nlc3NpbmdVc2Vy
R2VzdHVyZSgpLCBmYWxzZSwgdXNlckdlc3R1cmUpOworICAgICAgICAgICAgbmV3RnJhbWUtPnJl
ZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoVVJMU3RyaW5nKGNvbXBs
ZXRlZFVSTCksIHJlZmVycmVyLCAhbGV4aWNhbEZyYW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlLCB1c2VyR2VzdHVyZSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIG5ld0ZyYW1lOwpAQCAtNzU3LDIxICs3NTcsMjEgQEAgSlNWYWx1ZSBKU0RPTVdpbmRv
dzo6b3BlbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiAgICAgICAgIHRv
cE9yUGFyZW50ID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgKHRvcE9yUGFyZW50KSB7Ci0gICAgICAg
IFN0cmluZyBjb21wbGV0ZWRVUkw7CisgICAgICAgIFVSTFN0cmluZyBjb21wbGV0ZWRVUkw7CiAg
ICAgICAgIGlmICghdXJsU3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNvbXBsZXRlZFVS
TCA9IGNvbXBsZXRlVVJMKGV4ZWMsIHVybFN0cmluZykuc3RyaW5nKCk7CisgICAgICAgICAgICBj
b21wbGV0ZWRVUkwgPSBVUkxTdHJpbmcoY29tcGxldGVVUkwoZXhlYywgdXJsU3RyaW5nKSk7CiAK
ICAgICAgICAgaWYgKCFzaG91bGRBbGxvd05hdmlnYXRpb24oZXhlYywgZnJhbWUpKQogICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICAgICAgY29uc3QgSlNET01XaW5kb3cq
IHRhcmdldGVkV2luZG93ID0gdG9KU0RPTVdpbmRvdyhmcmFtZSwgY3VycmVudFdvcmxkKGV4ZWMp
KTsKLSAgICAgICAgaWYgKCFjb21wbGV0ZWRVUkwuaXNFbXB0eSgpICYmICghcHJvdG9jb2xJc0ph
dmFTY3JpcHQoY29tcGxldGVkVVJMKSB8fCAodGFyZ2V0ZWRXaW5kb3cgJiYgdGFyZ2V0ZWRXaW5k
b3ctPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpKSkgeworICAgICAgICBpZiAoIWNvbXBsZXRlZFVS
TC5zdHJpbmcoKS5pc0VtcHR5KCkgJiYgKCFwcm90b2NvbElzSmF2YVNjcmlwdChjb21wbGV0ZWRV
Ukwuc3RyaW5nKCkpIHx8ICh0YXJnZXRlZFdpbmRvdyAmJiB0YXJnZXRlZFdpbmRvdy0+YWxsb3dz
QWNjZXNzRnJvbShleGVjKSkpKSB7CiAgICAgICAgICAgICBib29sIHVzZXJHZXN0dXJlID0gcHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKGV4ZWMpOwogCiAgICAgICAgICAgICAvLyBGb3Igd2hhdGV2ZXIg
cmVhc29uLCBGaXJlZm94IHVzZXMgdGhlIGR5bmFtaWNHbG9iYWxPYmplY3QgdG8KICAgICAgICAg
ICAgIC8vIGRldGVybWluZSB0aGUgb3V0Z29pbmdSZWZlcnJlci4gIFdlIHJlcGxpY2F0ZSB0aGF0
IGJlaGF2aW9yCiAgICAgICAgICAgICAvLyBoZXJlLgotICAgICAgICAgICAgU3RyaW5nIHJlZmVy
cmVyID0gZHluYW1pY0ZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpOworICAgICAg
ICAgICAgVVJMU3RyaW5nIHJlZmVycmVyID0gZHluYW1pY0ZyYW1lLT5sb2FkZXIoKS0+b3V0Z29p
bmdSZWZlcnJlcigpOwogCiAgICAgICAgICAgICBmcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+
c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShjb21wbGV0ZWRVUkwsIHJlZmVycmVyLCAhbGV4aWNhbEZy
YW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlLCB1
c2VyR2VzdHVyZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEb2N1bWVudEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0
b20uY3BwCmluZGV4IGVkYTE1M2UuLjcxMjVkZTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rv
Y3VtZW50Q3VzdG9tLmNwcApAQCAtODQsMTEgKzg0LDEwIEBAIHZvaWQgSlNEb2N1bWVudDo6c2V0
TG9jYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIC8vIElFIGFuZCBN
b3ppbGxhIGJvdGggcmVzb2x2ZSB0aGUgVVJMIHJlbGF0aXZlIHRvIHRoZSBzb3VyY2UgZnJhbWUs
CiAgICAgLy8gbm90IHRoZSB0YXJnZXQgZnJhbWUuCiAgICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0g
YXNKU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1l
KCk7Ci0gICAgaWYgKGFjdGl2ZUZyYW1lKQotICAgICAgICBzdHIgPSBhY3RpdmVGcmFtZS0+ZG9j
dW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyKS5zdHJpbmcoKTsKKyAgICBVUkxTdHJpbmcgdXJsID0g
YWN0aXZlRnJhbWUgPyBVUkxTdHJpbmcoYWN0aXZlRnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRl
VVJMKHN0cikpIDogVVJMU3RyaW5nKFBhcnNlZFVSTFN0cmluZywgc3RyKTsKIAogICAgIGJvb2wg
dXNlckdlc3R1cmUgPSBhY3RpdmVGcmFtZS0+c2NyaXB0KCktPnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZShjdXJyZW50V29ybGQoZXhlYykpOwotICAgIGZyYW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5z
Y2hlZHVsZUxvY2F0aW9uQ2hhbmdlKHN0ciwgYWN0aXZlRnJhbWUtPmxvYWRlcigpLT5vdXRnb2lu
Z1JlZmVycmVyKCksICFhY3RpdmVGcmFtZS0+c2NyaXB0KCktPmFueVBhZ2VJc1Byb2Nlc3NpbmdV
c2VyR2VzdHVyZSgpLCBmYWxzZSwgdXNlckdlc3R1cmUpOworICAgIGZyYW1lLT5yZWRpcmVjdFNj
aGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKHVybCwgYWN0aXZlRnJhbWUtPmxvYWRl
cigpLT5vdXRnb2luZ1JlZmVycmVyKCksICFhY3RpdmVGcmFtZS0+c2NyaXB0KCktPmFueVBhZ2VJ
c1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpLCBmYWxzZSwgdXNlckdlc3R1cmUpOwogfQogCiBKU1Zh
bHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBEb2N1bWVudCogZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9t
LmNwcAppbmRleCBhM2UyYmFlLi4wZDIyN2ZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2Nh
dGlvbkN1c3RvbS5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBuYXZpZ2F0ZUlm
QWxsb3dlZChFeGVjU3RhdGUqIGV4ZWMsIEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBi
bwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkg
fHwgYWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4ZWMsIGZyYW1lKSkKLSAgICAgICAgZnJhbWUtPnJl
ZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UodXJsLnN0cmluZygpLCBs
ZXhpY2FsRnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCksIGxvY2tIaXN0b3J5LCBs
b2NrQmFja0ZvcndhcmRMaXN0LCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoZXhlYykpOworICAgICAg
ICBmcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShVUkxT
dHJpbmcodXJsKSwgbGV4aWNhbEZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLCBs
b2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKGV4
ZWMpKTsKIH0KIAogdm9pZCBKU0xvY2F0aW9uOjpzZXRIcmVmKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMu
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKaW5kZXggZjg5NWE3Ni4u
MDgxYzU2MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKQEAgLTEyMiw3ICsxMjIs
NyBAQCB2b2lkIG5hdmlnYXRlSWZBbGxvd2VkKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJs
LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvYwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
IXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkgfHwgU2NyaXB0Q29udHJvbGxlcjo6aXNTYWZlU2Ny
aXB0KGZyYW1lKSkKLSAgICAgICAgZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxl
TG9jYXRpb25DaGFuZ2UodXJsLnN0cmluZygpLCBjYWxsaW5nRnJhbWUtPmxvYWRlcigpLT5vdXRn
b2luZ1JlZmVycmVyKCksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBwcm9jZXNz
aW5nVXNlckdlc3R1cmUoKSk7CisgICAgICAgIGZyYW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5z
Y2hlZHVsZUxvY2F0aW9uQ2hhbmdlKFVSTFN0cmluZyh1cmwpLCBjYWxsaW5nRnJhbWUtPmxvYWRl
cigpLT5vdXRnb2luZ1JlZmVycmVyKCksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0
LCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDYyMTVkMzguLjFkYjVlYjIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAg
LTU1OCwxOSArNTU4LDE5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6b3Bl
bkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgIGlmICghc2hvdWxk
QWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkKICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiAKLSAgICAgICAgU3RyaW5nIGNvbXBsZXRlZFVybDsKLSAgICAgICAgaWYgKCF1cmxTdHJp
bmcuaXNFbXB0eSgpKQotICAgICAgICAgICAgY29tcGxldGVkVXJsID0gY29tcGxldGVVUkwodXJs
U3RyaW5nKTsKKyAgICAgICAgVVJMU3RyaW5nIGNvbXBsZXRlZFVSTDsKKyAgICAgICAgaWYgKCFj
b21wbGV0ZWRVUkwuc3RyaW5nKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29tcGxldGVkVVJM
ID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsKIAotICAgICAgICBpZiAoIWNvbXBsZXRlZFVybC5p
c0VtcHR5KCkgJiYKLSAgICAgICAgICAgICghcHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVk
VXJsKSB8fCBTY3JpcHRDb250cm9sbGVyOjppc1NhZmVTY3JpcHQoZnJhbWUpKSkgeworICAgICAg
ICBpZiAoIWNvbXBsZXRlZFVSTC5zdHJpbmcoKS5pc0VtcHR5KCkKKyAgICAgICAgICAgICYmICgh
cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVXJsLnN0cmluZygpKSB8fCBTY3JpcHRDb250
cm9sbGVyOjppc1NhZmVTY3JpcHQoZnJhbWUpKSkgewogICAgICAgICAgICAgYm9vbCB1c2VyR2Vz
dHVyZSA9IHByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwogCiAgICAgICAgICAgICAvLyBGb3Igd2hh
dGV2ZXIgcmVhc29uLCBGaXJlZm94IHVzZXMgdGhlIGVudGVyZWQgZnJhbWUgdG8gZGV0ZXJtaW5l
CiAgICAgICAgICAgICAvLyB0aGUgb3V0Z29pbmdSZWZlcnJlci4gIFdlIHJlcGxpY2F0ZSB0aGF0
IGJlaGF2aW9yIGhlcmUuCi0gICAgICAgICAgICBTdHJpbmcgcmVmZXJyZXIgPSBlbnRlcmVkRnJh
bWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCk7CisgICAgICAgICAgICBVUkxTdHJpbmcg
cmVmZXJyZXIgPSBlbnRlcmVkRnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCk7CiAK
LSAgICAgICAgICAgIGZyYW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0aW9u
Q2hhbmdlKGNvbXBsZXRlZFVybCwgcmVmZXJyZXIsIGZhbHNlLCB1c2VyR2VzdHVyZSk7CisgICAg
ICAgICAgICBmcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5n
ZShVUkxTdHJpbmcoY29tcGxldGVkVVJMKSwgcmVmZXJyZXIsIGZhbHNlLCB1c2VyR2VzdHVyZSk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRvVjgoZnJhbWUtPmRvbVdpbmRvdygpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggYWVkYmEwZC4uYTlhZTA5YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjI1NSwx
MiArMjI1NSw5IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29uc3QgU3RyaW5n
JiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgICAgICB1cGRhdGVTdHlsZVNlbGVj
dG9yKCk7CiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwgInJlZnJlc2gi
KSkgewogICAgICAgICBkb3VibGUgZGVsYXk7Ci0gICAgICAgIFN0cmluZyB1cmw7Ci0gICAgICAg
IGlmIChmcmFtZSAmJiBwYXJzZUhUVFBSZWZyZXNoKGNvbnRlbnQsIHRydWUsIGRlbGF5LCB1cmwp
KSB7Ci0gICAgICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICB1cmwg
PSBmcmFtZS0+bG9hZGVyKCktPnVybCgpLnN0cmluZygpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHVybCA9IGNvbXBsZXRlVVJMKHVybCkuc3RyaW5nKCk7CisgICAgICAgIFN0
cmluZyB0ZXh0OworICAgICAgICBpZiAoZnJhbWUgJiYgcGFyc2VIVFRQUmVmcmVzaChjb250ZW50
LCB0cnVlLCBkZWxheSwgdGV4dCkpIHsKKyAgICAgICAgICAgIFVSTFN0cmluZyB1cmwgPSB0ZXh0
LmlzRW1wdHkoKSA/IFVSTFN0cmluZyhmcmFtZS0+bG9hZGVyKCktPnVybCgpKSA6IFVSTFN0cmlu
Zyhjb21wbGV0ZVVSTCh0ZXh0KSk7CiAgICAgICAgICAgICBmcmFtZS0+cmVkaXJlY3RTY2hlZHVs
ZXIoKS0+c2NoZWR1bGVSZWRpcmVjdChkZWxheSwgdXJsKTsKICAgICAgICAgfQogICAgIH0gZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZXF1aXYsICJzZXQtY29va2llIikpIHsKQEAgLTIyNzcs
NyArMjI3NCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29uc3QgU3RyaW5n
JiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgICAgICBGcmFtZUxvYWRlciogZnJh
bWVMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7CiAgICAgICAgIGlmIChmcmFtZUxvYWRlci0+c2hv
dWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29udGVudCwgdXJsKCkpKSB7CiAgICAg
ICAgICAgICBmcmFtZUxvYWRlci0+c3RvcEFsbExvYWRlcnMoKTsKLSAgICAgICAgICAgIGZyYW1l
LT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGJsYW5rVVJMKCks
IFN0cmluZygpKTsKKyAgICAgICAgICAgIGZyYW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hl
ZHVsZUxvY2F0aW9uQ2hhbmdlKFVSTFN0cmluZyhibGFua1VSTCgpKSwgVVJMU3RyaW5nKCkpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDk0YTNkZDkuLjAw
ZGVkNzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCBGcmFtZSog
RnJhbWVMb2FkZXI6OmNyZWF0ZVdpbmRvdyhGcmFtZUxvYWRlciogZnJhbWVMb2FkZXJGb3JGcmFt
ZUxvb2t1cCwgY29uc3QgRgogCiAgICAgLy8gRklYTUU6IFNldHRpbmcgdGhlIHJlZmVycmVyIHNo
b3VsZCBiZSB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkuCiAgICAgRnJhbWVMb2FkUmVxdWVz
dCByZXF1ZXN0V2l0aFJlZmVycmVyID0gcmVxdWVzdDsKLSAgICByZXF1ZXN0V2l0aFJlZmVycmVy
LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBSZWZlcnJlcihtX291dGdvaW5nUmVmZXJyZXIpOwor
ICAgIHJlcXVlc3RXaXRoUmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVy
KG1fb3V0Z29pbmdSZWZlcnJlci5zdHJpbmcoKSk7CiAgICAgYWRkSFRUUE9yaWdpbklmTmVlZGVk
KHJlcXVlc3RXaXRoUmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCksIG91dGdvaW5nT3JpZ2luKCkp
OwogCiAgICAgUGFnZSogb2xkUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKQEAgLTM1Myw3ICszNTMs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcGFzcwogICAgIGlmIChyZWZlcnJlclBvbGljeSA9PSBO
b1JlZmVycmVyKQogICAgICAgICBtX3N1cHByZXNzT3BlbmVySW5OZXdGcmFtZSA9IHRydWU7CiAg
ICAgZWxzZSBpZiAoZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigp
LmlzRW1wdHkoKSkKLSAgICAgICAgZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhU
VFBSZWZlcnJlcihtX291dGdvaW5nUmVmZXJyZXIpOworICAgICAgICBmcmFtZVJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVyKG1fb3V0Z29pbmdSZWZlcnJlci5zdHJpbmco
KSk7CiAgICAgYWRkSFRUUE9yaWdpbklmTmVlZGVkKGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKSwgb3V0Z29pbmdPcmlnaW4oKSk7CiAKICAgICBsb2FkRnJhbWVSZXF1ZXN0KGZyYW1lUmVx
dWVzdCwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHRyaWdnZXJpbmdFdmVudCwg
MCwgcmVmZXJyZXJQb2xpY3kpOwpAQCAtMzc0LDkgKzM3NCw5IEBAIGJvb2wgRnJhbWVMb2FkZXI6
OnJlcXVlc3RGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3Qg
U3RyaW5nCiAKICAgICBGcmFtZSogZnJhbWUgPSBvd25lckVsZW1lbnQtPmNvbnRlbnRGcmFtZSgp
OwogICAgIGlmIChmcmFtZSkKLSAgICAgICAgZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNj
aGVkdWxlTG9jYXRpb25DaGFuZ2UodXJsLnN0cmluZygpLCBtX291dGdvaW5nUmVmZXJyZXIsIGxv
Y2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBpc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgp
KTsKKyAgICAgICAgZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25D
aGFuZ2UoVVJMU3RyaW5nKHVybCksIG1fb3V0Z29pbmdSZWZlcnJlciwgbG9ja0hpc3RvcnksIGxv
Y2tCYWNrRm9yd2FyZExpc3QsIGlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpOwogICAgIGVsc2UK
LSAgICAgICAgZnJhbWUgPSBsb2FkU3ViZnJhbWUob3duZXJFbGVtZW50LCB1cmwsIGZyYW1lTmFt
ZSwgbV9vdXRnb2luZ1JlZmVycmVyKTsKKyAgICAgICAgZnJhbWUgPSBsb2FkU3ViZnJhbWUob3du
ZXJFbGVtZW50LCB1cmwsIGZyYW1lTmFtZSwgbV9vdXRnb2luZ1JlZmVycmVyLnN0cmluZygpKTsK
ICAgICAKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MDQsNyAr
NDA0LDcgQEAgRnJhbWUqIEZyYW1lTG9hZGVyOjpsb2FkU3ViZnJhbWUoSFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IEtVUkwKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgYm9vbCBoaWRlUmVmZXJyZXIgPSBTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJl
ZmVycmVyKHVybCwgcmVmZXJyZXIpOworICAgIGJvb2wgaGlkZVJlZmVycmVyID0gU2VjdXJpdHlP
cmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcih1cmwsIFVSTFN0cmluZyhQYXJzZWRVUkxTdHJpbmcs
IHJlZmVycmVyKSk7CiAgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fY2xpZW50LT5jcmVhdGVG
cmFtZSh1cmwsIG5hbWUsIG93bmVyRWxlbWVudCwgaGlkZVJlZmVycmVyID8gU3RyaW5nKCkgOiBy
ZWZlcnJlciwgYWxsb3dzU2Nyb2xsaW5nLCBtYXJnaW5XaWR0aCwgbWFyZ2luSGVpZ2h0KTsKIAog
ICAgIGlmICghZnJhbWUpICB7CkBAIC01MDIsOCArNTAyLDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6
c3VibWl0Rm9ybShjb25zdCBjaGFyKiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVm
UHRyPEYKIAogICAgIGZvcm1EYXRhLT5nZW5lcmF0ZUZpbGVzKG1fZnJhbWUtPnBhZ2UoKS0+Y2hy
b21lKCktPmNsaWVudCgpKTsKICAgICAKLSAgICBpZiAoIW1fb3V0Z29pbmdSZWZlcnJlci5pc0Vt
cHR5KCkpCi0gICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQUmVm
ZXJyZXIobV9vdXRnb2luZ1JlZmVycmVyKTsKKyAgICBpZiAoIW1fb3V0Z29pbmdSZWZlcnJlci5z
dHJpbmcoKS5pc0VtcHR5KCkpCisgICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KS5zZXRIVFRQUmVmZXJyZXIobV9vdXRnb2luZ1JlZmVycmVyLnN0cmluZygpKTsKIAogICAgIGlm
IChzdHJjbXAoYWN0aW9uLCAiR0VUIikgPT0gMCkKICAgICAgICAgdS5zZXRRdWVyeShmb3JtRGF0
YS0+ZmxhdHRlblRvU3RyaW5nKCkpOwpAQCAtNzc5LDE5ICs3NzksMTUgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogICAgIG1fd29ya2luZ1VSTCA9IEtVUkwoKTsKIAog
ICAgIGRvdWJsZSBkZWxheTsKLSAgICBTdHJpbmcgdXJsOworICAgIFN0cmluZyB0ZXh0OwogICAg
IGlmICghbV9kb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtX2ZyYW1l
LT5pblZpZXdTb3VyY2VNb2RlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoIXBhcnNlSFRU
UFJlZnJlc2gobV9kb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoIlJl
ZnJlc2giKSwgZmFsc2UsIGRlbGF5LCB1cmwpKQorICAgIGlmICghcGFyc2VIVFRQUmVmcmVzaCht
X2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZCgiUmVmcmVzaCIpLCBm
YWxzZSwgZGVsYXksIHRleHQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodXJsLmlzRW1w
dHkoKSkKLSAgICAgICAgdXJsID0gbV9VUkwuc3RyaW5nKCk7Ci0gICAgZWxzZQotICAgICAgICB1
cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpLnN0cmluZygpOwotCisg
ICAgVVJMU3RyaW5nIHVybCA9IHRleHQuaXNFbXB0eSgpID8gVVJMU3RyaW5nKG1fVVJMKSA6IFVS
TFN0cmluZyhtX2ZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh0ZXh0KSk7CiAgICAgbV9m
cmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVSZWRpcmVjdChkZWxheSwgdXJsKTsK
IH0KIApAQCAtODQxLDcgKzgzNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmJlZ2luKGNvbnN0IEtV
UkwmIHVybCwgYm9vbCBkaXNwYXRjaCwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICByZWYu
c2V0VXNlcihTdHJpbmcoKSk7CiAgICAgcmVmLnNldFBhc3MoU3RyaW5nKCkpOwogICAgIHJlZi5y
ZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICBtX291dGdvaW5nUmVmZXJyZXIgPSByZWYu
c3RyaW5nKCk7CisgICAgbV9vdXRnb2luZ1JlZmVycmVyID0gVVJMU3RyaW5nKHJlZik7CiAgICAg
bV9VUkwgPSB1cmw7CiAKICAgICBkb2N1bWVudC0+c2V0VVJMKG1fVVJMKTsKQEAgLTE0MzcsNyAr
MTQzMyw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlcjo6bG9hZE1lZGlhUGxheWVy
UHJveHlQbHVnaW4oTm9kZSogbm9kZSwgY29uc3QgS1VSCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFBM
VUdJTl9QUk9YWV9GT1JfVklERU8pCiAKLVN0cmluZyBGcmFtZUxvYWRlcjo6b3V0Z29pbmdSZWZl
cnJlcigpIGNvbnN0CitVUkxTdHJpbmcgRnJhbWVMb2FkZXI6Om91dGdvaW5nUmVmZXJyZXIoKSBj
b25zdAogewogICAgIHJldHVybiBtX291dGdvaW5nUmVmZXJyZXI7CiB9CkBAIC0xOTIzLDIzICsx
OTE5LDIzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoY29uc3QgRnJhbWVM
b2FkUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBsb2NrSGlzCiB7ICAgIAogICAgIEtVUkwgdXJsID0g
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKIAotICAgIFN0cmluZyByZWZlcnJlcjsK
KyAgICBVUkxTdHJpbmcgcmVmZXJyZXI7CiAgICAgU3RyaW5nIGFyZ3NSZWZlcnJlciA9IHJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCk7CiAgICAgaWYgKCFhcmdzUmVmZXJy
ZXIuaXNFbXB0eSgpKQotICAgICAgICByZWZlcnJlciA9IGFyZ3NSZWZlcnJlcjsKKyAgICAgICAg
cmVmZXJyZXIgPSBVUkxTdHJpbmcoUGFyc2VkVVJMU3RyaW5nLCBhcmdzUmVmZXJyZXIpOwogICAg
IGVsc2UKICAgICAgICAgcmVmZXJyZXIgPSBtX291dGdvaW5nUmVmZXJyZXI7CiAKICAgICBBU1NF
UlQoZnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgaWYgKFNlY3VyaXR5T3JpZ2luOjpzaG91bGRU
cmVhdFVSTEFzTG9jYWwodXJsLnN0cmluZygpKSAmJiAhaXNGZWVkV2l0aE5lc3RlZFByb3RvY29s
SW5IVFRQRmFtaWx5KHVybCkpIHsKLSAgICAgICAgaWYgKCFTZWN1cml0eU9yaWdpbjo6Y2FuTG9h
ZCh1cmwsIFN0cmluZygpLCBmcmFtZSgpLT5kb2N1bWVudCgpKSAmJiAhU2VjdXJpdHlPcmlnaW46
OmNhbkxvYWQodXJsLCByZWZlcnJlciwgMCkpIHsKKyAgICAgICAgaWYgKCFTZWN1cml0eU9yaWdp
bjo6Y2FuTG9hZCh1cmwsIFN0cmluZygpLCBmcmFtZSgpLT5kb2N1bWVudCgpKSAmJiAhU2VjdXJp
dHlPcmlnaW46OmNhbkxvYWQodXJsLCByZWZlcnJlci5zdHJpbmcoKSwgMCkpIHsKICAgICAgICAg
ICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZSwgdXJsLnN0cmlu
ZygpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChT
ZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVycmVyKHVybCwgcmVmZXJyZXIpIHx8IHJlZmVy
cmVyUG9saWN5ID09IE5vUmVmZXJyZXIpCi0gICAgICAgIHJlZmVycmVyID0gU3RyaW5nKCk7Cisg
ICAgICAgIHJlZmVycmVyID0gVVJMU3RyaW5nKCk7CiAgICAgCiAgICAgRnJhbWVMb2FkVHlwZSBs
b2FkVHlwZTsKICAgICBpZiAocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5jYWNoZVBvbGljeSgp
ID09IFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKQpAQCAtMTk1MCw5ICsxOTQ2LDkgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1
ZXN0LCBib29sIGxvY2tIaXMKICAgICAgICAgbG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlU3RhbmRh
cmQ7CiAKICAgICBpZiAocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkgPT0g
IlBPU1QiKQotICAgICAgICBsb2FkUG9zdFJlcXVlc3QocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KSwgcmVmZXJyZXIsIHJlcXVlc3QuZnJhbWVOYW1lKCksIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwg
ZXZlbnQsIGZvcm1TdGF0ZS5nZXQoKSk7CisgICAgICAgIGxvYWRQb3N0UmVxdWVzdChyZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLCByZWZlcnJlci5zdHJpbmcoKSwgcmVxdWVzdC5mcmFtZU5hbWUo
KSwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBldmVudCwgZm9ybVN0YXRlLmdldCgpKTsKICAgICBl
bHNlCi0gICAgICAgIGxvYWRVUkwocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgcmVm
ZXJyZXIsIHJlcXVlc3QuZnJhbWVOYW1lKCksIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwgZXZlbnQs
IGZvcm1TdGF0ZS5nZXQoKSk7CisgICAgICAgIGxvYWRVUkwocmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKS51cmwoKSwgcmVmZXJyZXIuc3RyaW5nKCksIHJlcXVlc3QuZnJhbWVOYW1lKCksIGxvY2tI
aXN0b3J5LCBsb2FkVHlwZSwgZXZlbnQsIGZvcm1TdGF0ZS5nZXQoKSk7CiAKICAgICAvLyBGSVhN
RTogSXQncyBwb3NzaWJsZSB0aGlzIHRhcmdldEZyYW1lIHdpbGwgbm90IGJlIHRoZSBzYW1lIGZy
YW1lIHRoYXQgd2FzIHRhcmdldGVkIGJ5IHRoZSBhY3R1YWwKICAgICAvLyBsb2FkIGlmIGZyYW1l
IG5hbWVzIGhhdmUgY2hhbmdlZC4KQEAgLTI3ODEsNyArMjc3Nyw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6Om9wZW4oQ2FjaGVkRnJhbWVCYXNlJiBjYWNoZWRGcmFtZSkKICAgICBtX25lZWRzQ2xlYXIg
PSB0cnVlOwogICAgIG1faXNDb21wbGV0ZSA9IGZhbHNlOwogICAgIG1fZGlkQ2FsbEltcGxpY2l0
Q2xvc2UgPSBmYWxzZTsKLSAgICBtX291dGdvaW5nUmVmZXJyZXIgPSB1cmwuc3RyaW5nKCk7Cisg
ICAgbV9vdXRnb2luZ1JlZmVycmVyID0gVVJMU3RyaW5nKHVybCk7CiAKICAgICBGcmFtZVZpZXcq
IHZpZXcgPSBjYWNoZWRGcmFtZS52aWV3KCk7CiAgICAgCkBAIC0zMzg1LDEwICszMzgxLDEwIEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IGluUmVxdWVzdCwgY29uc3QgU3RyaW5nCiAKIHVuc2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBT
dG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7Ci0gICAg
U3RyaW5nIHJlZmVycmVyID0gbV9vdXRnb2luZ1JlZmVycmVyOworICAgIFVSTFN0cmluZyByZWZl
cnJlciA9IG1fb3V0Z29pbmdSZWZlcnJlcjsKICAgICBpZiAoU2VjdXJpdHlPcmlnaW46OnNob3Vs
ZEhpZGVSZWZlcnJlcihyZXF1ZXN0LnVybCgpLCByZWZlcnJlcikpCi0gICAgICAgIHJlZmVycmVy
ID0gU3RyaW5nKCk7Ci0gICAgCisgICAgICAgIHJlZmVycmVyID0gVVJMU3RyaW5nKCk7CisKICAg
ICBSZXNvdXJjZVJlcXVlc3QgaW5pdGlhbFJlcXVlc3QgPSByZXF1ZXN0OwogICAgIGluaXRpYWxS
ZXF1ZXN0LnNldFRpbWVvdXRJbnRlcnZhbCgxMCk7CiAgICAgCkBAIC0zNDAzLDggKzMzOTksOCBA
QCB1bnNpZ25lZCBsb25nIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdQogICAgIGVsc2UKICAgICAgICAgaW5pdGlhbFJlcXVl
c3Quc2V0Q2FjaGVQb2xpY3kob3JpZ2luYWxSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKSk7CiAgICAg
Ci0gICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpCi0gICAgICAgIGluaXRpYWxSZXF1ZXN0LnNl
dEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CisgICAgaWYgKCFyZWZlcnJlci5zdHJpbmcoKS5pc0Vt
cHR5KCkpCisgICAgICAgIGluaXRpYWxSZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlci5z
dHJpbmcoKSk7CiAgICAgYWRkSFRUUE9yaWdpbklmTmVlZGVkKGluaXRpYWxSZXF1ZXN0LCBvdXRn
b2luZ09yaWdpbigpKTsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgKaW5kZXggZTIxODc0NC4uNmNmMjU0ZiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiVVJM
U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMTM4LDcgKzEzOSw3IEBAIHB1YmxpYzoKIAogICAgIGludCBudW1QZW5kaW5nT3JMb2Fk
aW5nUmVxdWVzdHMoYm9vbCByZWN1cnNlKSBjb25zdDsKICAgICBTdHJpbmcgcmVmZXJyZXIoKSBj
b25zdDsKLSAgICBTdHJpbmcgb3V0Z29pbmdSZWZlcnJlcigpIGNvbnN0OworICAgIFVSTFN0cmlu
ZyBvdXRnb2luZ1JlZmVycmVyKCkgY29uc3Q7CiAgICAgU3RyaW5nIG91dGdvaW5nT3JpZ2luKCkg
Y29uc3Q7CiAKICAgICBEb2N1bWVudExvYWRlciogYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSBjb25z
dDsKQEAgLTQ4MSw3ICs0ODIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zZW50UmVkaXJlY3RO
b3RpZmljYXRpb247CiAgICAgYm9vbCBtX2luU3RvcEFsbExvYWRlcnM7CiAKLSAgICBTdHJpbmcg
bV9vdXRnb2luZ1JlZmVycmVyOworICAgIFVSTFN0cmluZyBtX291dGdvaW5nUmVmZXJyZXI7CiAK
ICAgICBib29sIG1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbjsKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIv
UmVkaXJlY3RTY2hlZHVsZXIuY3BwCmluZGV4IDRiNDQ0MjIuLjYyOTYxZDkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRl
ci9SZWRpcmVjdFNjaGVkdWxlci5jcHAKQEAgLTUyLDggKzUyLDggQEAgc3RydWN0IFNjaGVkdWxl
ZFJlZGlyZWN0aW9uIDogTm9uY29weWFibGUgewogCiAgICAgY29uc3QgVHlwZSB0eXBlOwogICAg
IGNvbnN0IGRvdWJsZSBkZWxheTsKLSAgICBjb25zdCBTdHJpbmcgdXJsOwotICAgIGNvbnN0IFN0
cmluZyByZWZlcnJlcjsKKyAgICBjb25zdCBVUkxTdHJpbmcgdXJsOworICAgIGNvbnN0IFVSTFN0
cmluZyByZWZlcnJlcjsKICAgICBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lUmVxdWVzdDsK
ICAgICBjb25zdCBSZWZQdHI8RXZlbnQ+IGV2ZW50OwogICAgIGNvbnN0IFJlZlB0cjxGb3JtU3Rh
dGU+IGZvcm1TdGF0ZTsKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IFNjaGVkdWxlZFJlZGlyZWN0
aW9uIDogTm9uY29weWFibGUgewogICAgIGNvbnN0IGJvb2wgd2FzRHVyaW5nTG9hZDsKICAgICBi
b29sIHRvbGRDbGllbnQ7CiAKLSAgICBTY2hlZHVsZWRSZWRpcmVjdGlvbihkb3VibGUgZGVsYXks
IGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2Fy
ZExpc3QsIGJvb2wgd2FzVXNlckdlc3R1cmUsIGJvb2wgcmVmcmVzaCkKKyAgICBTY2hlZHVsZWRS
ZWRpcmVjdGlvbihkb3VibGUgZGVsYXksIGNvbnN0IFVSTFN0cmluZyYgdXJsLCBib29sIGxvY2tI
aXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzVXNlckdlc3R1cmUsIGJv
b2wgcmVmcmVzaCkKICAgICAgICAgOiB0eXBlKHJlZGlyZWN0aW9uKQogICAgICAgICAsIGRlbGF5
KGRlbGF5KQogICAgICAgICAsIHVybCh1cmwpCkBAIC03NywxMCArNzcsMTAgQEAgc3RydWN0IFNj
aGVkdWxlZFJlZGlyZWN0aW9uIDogTm9uY29weWFibGUgewogICAgICAgICAsIHdhc0R1cmluZ0xv
YWQoZmFsc2UpCiAgICAgICAgICwgdG9sZENsaWVudChmYWxzZSkKICAgICB7Ci0gICAgICAgIEFT
U0VSVCghdXJsLmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVCghdXJsLnN0cmluZygpLmlzRW1w
dHkoKSk7CiAgICAgfQogCi0gICAgU2NoZWR1bGVkUmVkaXJlY3Rpb24oY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSwgYm9vbCByZWZyZXNoLCBib29sIGR1
cmluZ0xvYWQpCisgICAgU2NoZWR1bGVkUmVkaXJlY3Rpb24oY29uc3QgVVJMU3RyaW5nJiB1cmws
IGNvbnN0IFVSTFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSwgYm9vbCByZWZyZXNoLCBib29sIGR1
cmluZ0xvYWQpCiAgICAgICAgIDogdHlwZShsb2NhdGlvbkNoYW5nZSkKICAgICAgICAgLCBkZWxh
eSgwKQogICAgICAgICAsIHVybCh1cmwpCkBAIC05Myw3ICs5Myw3IEBAIHN0cnVjdCBTY2hlZHVs
ZWRSZWRpcmVjdGlvbiA6IE5vbmNvcHlhYmxlIHsKICAgICAgICAgLCB3YXNEdXJpbmdMb2FkKGR1
cmluZ0xvYWQpCiAgICAgICAgICwgdG9sZENsaWVudChmYWxzZSkKICAgICB7Ci0gICAgICAgIEFT
U0VSVCghdXJsLmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVCghdXJsLnN0cmluZygpLmlzRW1w
dHkoKSk7CiAgICAgfQogCiAgICAgZXhwbGljaXQgU2NoZWR1bGVkUmVkaXJlY3Rpb24oaW50IGhp
c3RvcnlOYXZpZ2F0aW9uU3RlcHMpCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBSZWRpcmVjdFNj
aGVkdWxlcjo6Y2xlYXIoKQogICAgIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24uY2xlYXIoKTsKIH0K
IAotdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdChkb3VibGUgZGVsYXks
IGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWRp
cmVjdChkb3VibGUgZGVsYXksIGNvbnN0IFVSTFN0cmluZyYgdXJsKQogewogICAgIGlmIChkZWxh
eSA8IDAgfHwgZGVsYXkgPiBJTlRfTUFYIC8gMTAwMCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTU5
LDcgKzE1OSw3IEBAIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QoZG91
YmxlIGRlbGF5LCBjb25zdCBTdHJpbmcmIHVybCkKICAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHVybC5pc0VtcHR5KCkpCisgICAgaWYgKHVybC5z
dHJpbmcoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIHdhbnQgYSBu
ZXcgaGlzdG9yeSBpdGVtIGlmIHRoZSByZWZyZXNoIHRpbWVvdXQgaXMgPiAxIHNlY29uZC4KQEAg
LTE4MSwxMiArMTgxLDEyIEBAIGJvb2wgUmVkaXJlY3RTY2hlZHVsZXI6Om11c3RMb2NrQmFja0Zv
cndhcmRMaXN0KEZyYW1lKiB0YXJnZXRGcmFtZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9j
a0JhY2tGb3J3YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSkKK3ZvaWQgUmVkaXJlY3RTY2hl
ZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoY29uc3QgVVJMU3RyaW5nJiB1cmwsIGNvbnN0
IFVSTFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3
YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSkKIHsKICAgICBpZiAoIW1fZnJhbWUtPnBhZ2Uo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHVybC5pc0VtcHR5KCkpCisgICAgaWYgKHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGxvY2tCYWNrRm9y
d2FyZExpc3QgPSBsb2NrQmFja0ZvcndhcmRMaXN0IHx8IG11c3RMb2NrQmFja0ZvcndhcmRMaXN0
KG1fZnJhbWUpOwpAQCAtMTk1LDkgKzE5NSw5IEBAIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNj
aGVkdWxlTG9jYXRpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAg
ICAKICAgICAvLyBJZiB0aGUgVVJMIHdlJ3JlIGdvaW5nIHRvIG5hdmlnYXRlIHRvIGlzIHRoZSBz
YW1lIGFzIHRoZSBjdXJyZW50IG9uZSwgZXhjZXB0IGZvciB0aGUKICAgICAvLyBmcmFnbWVudCBw
YXJ0LCB3ZSBkb24ndCBuZWVkIHRvIHNjaGVkdWxlIHRoZSBsb2NhdGlvbiBjaGFuZ2UuCi0gICAg
S1VSTCBwYXJzZWRVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOworICAgIEtVUkwgcGFyc2VkVVJM
KFBhcnNlZFVSTFN0cmluZywgdXJsLnN0cmluZygpKTsKICAgICBpZiAocGFyc2VkVVJMLmhhc0Zy
YWdtZW50SWRlbnRpZmllcigpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobG9h
ZGVyLT51cmwoKSwgcGFyc2VkVVJMKSkgewotICAgICAgICBsb2FkZXItPmNoYW5nZUxvY2F0aW9u
KGxvYWRlci0+Y29tcGxldGVVUkwodXJsKSwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFj
a0ZvcndhcmRMaXN0LCB3YXNVc2VyR2VzdHVyZSk7CisgICAgICAgIGxvYWRlci0+Y2hhbmdlTG9j
YXRpb24obG9hZGVyLT5jb21wbGV0ZVVSTCh1cmwuc3RyaW5nKCkpLCByZWZlcnJlci5zdHJpbmco
KSwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHdhc1VzZXJHZXN0dXJlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgUmVkaXJlY3RT
Y2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaChib29sIHdhc1VzZXJHZXN0dXJlKQogICAgIGlmICh1
cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzY2hlZHVsZShuZXcgU2NoZWR1
bGVkUmVkaXJlY3Rpb24odXJsLnN0cmluZygpLCBtX2ZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdS
ZWZlcnJlcigpLCB0cnVlLCB0cnVlLCB3YXNVc2VyR2VzdHVyZSwgdHJ1ZSwgZmFsc2UpKTsKKyAg
ICBzY2hlZHVsZShuZXcgU2NoZWR1bGVkUmVkaXJlY3Rpb24oVVJMU3RyaW5nKHVybCksIG1fZnJh
bWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCksIHRydWUsIHRydWUsIHdhc1VzZXJHZXN0
dXJlLCB0cnVlLCBmYWxzZSkpOwogfQogCiBib29sIFJlZGlyZWN0U2NoZWR1bGVyOjpsb2NhdGlv
bkNoYW5nZVBlbmRpbmcoKQpAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgUmVkaXJlY3RTY2hlZHVs
ZXI6OnRpbWVyRmlyZWQoVGltZXI8UmVkaXJlY3RTY2hlZHVsZXI+KikKICAgICBzd2l0Y2ggKHJl
ZGlyZWN0aW9uLT50eXBlKSB7CiAgICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJlY3Rpb246OnJl
ZGlyZWN0aW9uOgogICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpsb2NhdGlvbkNo
YW5nZToKLSAgICAgICAgICAgIGxvYWRlci0+Y2hhbmdlTG9jYXRpb24oS1VSTChQYXJzZWRVUkxT
dHJpbmcsIHJlZGlyZWN0aW9uLT51cmwpLCByZWRpcmVjdGlvbi0+cmVmZXJyZXIsCisgICAgICAg
ICAgICBsb2FkZXItPmNoYW5nZUxvY2F0aW9uKHJlZGlyZWN0aW9uLT51cmwudG9LVVJMKCksIHJl
ZGlyZWN0aW9uLT5yZWZlcnJlci5zdHJpbmcoKSwKICAgICAgICAgICAgICAgICByZWRpcmVjdGlv
bi0+bG9ja0hpc3RvcnksIHJlZGlyZWN0aW9uLT5sb2NrQmFja0ZvcndhcmRMaXN0LCByZWRpcmVj
dGlvbi0+d2FzVXNlckdlc3R1cmUsIHJlZGlyZWN0aW9uLT53YXNSZWZyZXNoKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6aGlzdG9yeU5h
dmlnYXRpb246CkBAIC0zNzMsNyArMzczLDcgQEAgdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c3Rh
cnRUaW1lcigpCiAgICAgICAgICAgICBpZiAobV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+dG9sZENs
aWVudCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtX3NjaGVkdWxlZFJl
ZGlyZWN0aW9uLT50b2xkQ2xpZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgIGxvYWRlci0+Y2xpZW50
UmVkaXJlY3RlZChLVVJMKFBhcnNlZFVSTFN0cmluZywgbV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+
dXJsKSwKKyAgICAgICAgICAgIGxvYWRlci0+Y2xpZW50UmVkaXJlY3RlZChtX3NjaGVkdWxlZFJl
ZGlyZWN0aW9uLT51cmwudG9LVVJMKCksCiAgICAgICAgICAgICAgICAgbV9zY2hlZHVsZWRSZWRp
cmVjdGlvbi0+ZGVsYXksCiAgICAgICAgICAgICAgICAgY3VycmVudFRpbWUoKSArIG1fdGltZXIu
bmV4dEZpcmVJbnRlcnZhbCgpLAogICAgICAgICAgICAgICAgIG1fc2NoZWR1bGVkUmVkaXJlY3Rp
b24tPmxvY2tCYWNrRm9yd2FyZExpc3QpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUmVk
aXJlY3RTY2hlZHVsZXIuaCBiL1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmgKaW5k
ZXggMDA1YTE3My4uN2I0NGM1MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RT
Y2hlZHVsZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5oCkBAIC0z
Myw2ICszMyw3IEBACiAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisj
aW5jbHVkZSAiVVJMU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTU0LDgg
KzU1LDggQEAgcHVibGljOgogICAgIGJvb2wgcmVkaXJlY3RTY2hlZHVsZWREdXJpbmdMb2FkKCk7
CiAgICAgYm9vbCBsb2NhdGlvbkNoYW5nZVBlbmRpbmcoKTsKIAotICAgIHZvaWQgc2NoZWR1bGVS
ZWRpcmVjdChkb3VibGUgZGVsYXksIGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICB2b2lkIHNjaGVk
dWxlTG9jYXRpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGJvb2wgbG9ja0hpc3RvcnkgPSB0cnVlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QgPSB0
cnVlLCBib29sIHVzZXJHZXN0dXJlID0gZmFsc2UpOworICAgIHZvaWQgc2NoZWR1bGVSZWRpcmVj
dChkb3VibGUgZGVsYXksIGNvbnN0IFVSTFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIHNjaGVkdWxl
TG9jYXRpb25DaGFuZ2UoY29uc3QgVVJMU3RyaW5nJiB1cmwsIGNvbnN0IFVSTFN0cmluZyYgcmVm
ZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnkgPSB0cnVlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3Qg
PSB0cnVlLCBib29sIHVzZXJHZXN0dXJlID0gZmFsc2UpOwogICAgIHZvaWQgc2NoZWR1bGVGb3Jt
U3VibWlzc2lvbihjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgYm9vbCBsb2NrSGlzdG9yeSwgUGFz
c1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7CiAgICAgdm9pZCBzY2hlZHVs
ZVJlZnJlc2goYm9vbCB1c2VyR2VzdHVyZSA9IGZhbHNlKTsKICAgICB2b2lkIHNjaGVkdWxlSGlz
dG9yeU5hdmlnYXRpb24oaW50IHN0ZXBzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cAppbmRleCBmOTJhMDc0Li45MTU0Nzc4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC04Miw3ICs4Miw3IEBAIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJl
c291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBTdWJyZXNvdXJjCiAgICAgaWYgKFNl
Y3VyaXR5T3JpZ2luOjpzaG91bGRIaWRlUmVmZXJyZXIocmVxdWVzdC51cmwoKSwgZmwtPm91dGdv
aW5nUmVmZXJyZXIoKSkpCiAgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsK
ICAgICBlbHNlIGlmICghcmVxdWVzdC5odHRwUmVmZXJyZXIoKSkKLSAgICAgICAgbmV3UmVxdWVz
dC5zZXRIVFRQUmVmZXJyZXIoZmwtPm91dGdvaW5nUmVmZXJyZXIoKSk7CisgICAgICAgIG5ld1Jl
cXVlc3Quc2V0SFRUUFJlZmVycmVyKGZsLT5vdXRnb2luZ1JlZmVycmVyKCkuc3RyaW5nKCkpOwog
ICAgIEZyYW1lTG9hZGVyOjphZGRIVFRQT3JpZ2luSWZOZWVkZWQobmV3UmVxdWVzdCwgZmwtPm91
dGdvaW5nT3JpZ2luKCkpOwogCiAgICAgLy8gVXNlIHRoZSBvcmlnaW5hbCByZXF1ZXN0J3MgY2Fj
aGUgcG9saWN5IGZvciB0d28gcmVhc29uczoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDUyNjA0M2IuLmE4YTNjZDkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
KysrIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApA
QCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNo
ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHBhc3NlZE1hbmlmZXN0CiAgICAgICAgICAgICAv
LyBSZXN0YXJ0IHRoZSBjdXJyZW50IG5hdmlnYXRpb24gZnJvbSB0aGUgdG9wIG9mIHRoZSBuYXZp
Z2F0aW9uIGFsZ29yaXRobSwgdW5kb2luZyBhbnkgY2hhbmdlcyB0aGF0IHdlcmUgbWFkZQogICAg
ICAgICAgICAgLy8gYXMgcGFydCBvZiB0aGUgaW5pdGlhbCBsb2FkLgogICAgICAgICAgICAgLy8g
VGhlIG5hdmlnYXRpb24gd2lsbCBub3QgcmVzdWx0IGluIHRoZSBzYW1lIHJlc291cmNlIGJlaW5n
IGxvYWRlZCwgYmVjYXVzZSAiZm9yZWlnbiIgZW50cmllcyBhcmUgbmV2ZXIgcGlja2VkIGR1cmlu
ZyBuYXZpZ2F0aW9uLgotICAgICAgICAgICAgZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNj
aGVkdWxlTG9jYXRpb25DaGFuZ2UoZG9jdW1lbnRMb2FkZXItPnVybCgpLCBmcmFtZS0+bG9hZGVy
KCktPnJlZmVycmVyKCksIHRydWUpOworICAgICAgICAgICAgZnJhbWUtPnJlZGlyZWN0U2NoZWR1
bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoVVJMU3RyaW5nKGRvY3VtZW50TG9hZGVyLT51
cmwoKSksIFVSTFN0cmluZyhQYXJzZWRVUkxTdHJpbmcsIGZyYW1lLT5sb2FkZXIoKS0+cmVmZXJy
ZXIoKSksIHRydWUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IGQzODRiMDIuLjFiMjc0MmIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1dl
YkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAg
c3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cmxUb0xvYWQsIEZyYW1lKiBm
cmFtZSkKIHsKICAgICBpZiAoUGFnZSogb2xkUGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKICAgICAg
ICAgV2luZG93RmVhdHVyZXMgZmVhdHVyZXM7Ci0gICAgICAgIGlmIChQYWdlKiBuZXdQYWdlID0g
b2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhmcmFtZSwgRnJhbWVMb2FkUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QodXJsVG9Mb2FkLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJy
ZXIoKSkpLCBmZWF0dXJlcykpCisgICAgICAgIGlmIChQYWdlKiBuZXdQYWdlID0gb2xkUGFnZS0+
Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhmcmFtZSwgRnJhbWVMb2FkUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QodXJsVG9Mb2FkLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKS5zdHJp
bmcoKSkpLCBmZWF0dXJlcykpCiAgICAgICAgICAgICBuZXdQYWdlLT5jaHJvbWUoKS0+c2hvdygp
OwogICAgIH0KIH0KQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxl
cjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rOgogICAgICAgICBp
ZiAoRnJhbWUqIHRhcmdldEZyYW1lID0gcmVzdWx0LnRhcmdldEZyYW1lKCkpCi0gICAgICAgICAg
ICB0YXJnZXRGcmFtZS0+bG9hZGVyKCktPmxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QocmVzdWx0LmFic29sdXRlTGlua1VSTCgpLCBmcmFtZS0+bG9hZGVy
KCktPm91dGdvaW5nUmVmZXJyZXIoKSkpLCBmYWxzZSwgZmFsc2UsIDAsIDAsIFNlbmRSZWZlcnJl
cik7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCktPmxvYWRGcmFtZVJlcXVlc3Qo
RnJhbWVMb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QocmVzdWx0LmFic29sdXRlTGlua1VSTCgp
LCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKS5zdHJpbmcoKSkpLCBmYWxzZSwg
ZmFsc2UsIDAsIDAsIFNlbmRSZWZlcnJlcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG9w
ZW5OZXdXaW5kb3cocmVzdWx0LmFic29sdXRlTGlua1VSTCgpLCBmcmFtZSk7CiAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggYzBiM2UyMi4uNDJlZmFlNyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiT3JpZ2luQWNjZXNzRW50cnkuaCIKKyNp
bmNsdWRlICJVUkxTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU4MCwxMCArNTgxLDEwIEBAIGJvb2wgU2VjdXJpdHlPcmln
aW46OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiAg
ICAgcmV0dXJuIHNlY3VyZVNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCi1ib29sIFNl
Y3VyaXR5T3JpZ2luOjpzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyKQorYm9vbCBTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVycmVy
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVVJMU3RyaW5nJiByZWZlcnJlcikKIHsKLSAgICBib29s
IHJlZmVycmVySXNTZWN1cmVVUkwgPSBwcm90b2NvbElzKHJlZmVycmVyLCAiaHR0cHMiKTsKLSAg
ICBib29sIHJlZmVycmVySXNXZWJVUkwgPSByZWZlcnJlcklzU2VjdXJlVVJMIHx8IHByb3RvY29s
SXMocmVmZXJyZXIsICJodHRwIik7CisgICAgYm9vbCByZWZlcnJlcklzU2VjdXJlVVJMID0gcHJv
dG9jb2xJcyhyZWZlcnJlci5zdHJpbmcoKSwgImh0dHBzIik7CisgICAgYm9vbCByZWZlcnJlcklz
V2ViVVJMID0gcmVmZXJyZXJJc1NlY3VyZVVSTCB8fCBwcm90b2NvbElzKHJlZmVycmVyLnN0cmlu
ZygpLCAiaHR0cCIpOwogCiAgICAgaWYgKCFyZWZlcnJlcklzV2ViVVJMKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKaW5kZXggMTFjMjEzZS4uMzk5ODlmYSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKKysrIGIvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgdHlwZWRlZiBIYXNoU2V0PFN0cmluZywg
Q2FzZUZvbGRpbmdIYXNoPiBVUkxTY2hlbWVzTWFwOwogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IEtVUkw7CitjbGFzcyBVUkxTdHJpbmc7CiAKIGNsYXNzIFNlY3VyaXR5T3JpZ2luIDogcHVibGlj
IFRocmVhZFNhZmVTaGFyZWQ8U2VjdXJpdHlPcmlnaW4+IHsKIHB1YmxpYzoKQEAgLTE4MCw3ICsx
ODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3Vy
ZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdFVSTFNjaGVtZUFz
U2VjdXJlKGNvbnN0IFN0cmluZyYpOwogCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkSGlkZVJlZmVy
cmVyKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKKyAgICBzdGF0aWMgYm9v
bCBzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VSTCYsIGNvbnN0IFVSTFN0cmluZyYgcmVmZXJy
ZXIpOwogCiAgICAgZW51bSBMb2NhbExvYWRQb2xpY3kgewogICAgICAgICBBbGxvd0xvY2FsTG9h
ZHNGb3JBbGwsIC8vIE5vIHJlc3RyaWN0aW9uIG9uIGxvY2FsIGxvYWRzLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwIGIvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3Bw
CmluZGV4IDA5NGYyMDAuLmYzMWYxN2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9YU1NBdWRp
dG9yLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAKQEAgLTMyMyw3ICszMjMs
NyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbmRJblJlcXVlc3QoY29uc3QgRmluZFRhc2smIHRhc2sp
IGNvbnN0CiAgICAgY2FzZSBYU1NQcm90ZWN0aW9uQmxvY2tFbmFibGVkOgogICAgICAgICBpZiAo
YmxvY2tGcmFtZSkgewogICAgICAgICAgICAgYmxvY2tGcmFtZS0+bG9hZGVyKCktPnN0b3BBbGxM
b2FkZXJzKCk7Ci0gICAgICAgICAgICBibG9ja0ZyYW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5z
Y2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGJsYW5rVVJMKCksIFN0cmluZygpKTsKKyAgICAgICAgICAg
IGJsb2NrRnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2Uo
VVJMU3RyaW5nKGJsYW5rVVJMKCkpLCBVUkxTdHJpbmcoKSk7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vVVJMU3Ry
aW5nLmggYi9XZWJDb3JlL3BsYXRmb3JtL1VSTFN0cmluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjhhMTEwZjcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL1VSTFN0cmluZy5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQWRhbSBCYXJ0aC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBVUkxT
dHJpbmdfaAorI2RlZmluZSBVUkxTdHJpbmdfaAorCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVVJM
U3RyaW5nIHsKK3B1YmxpYzoKKyAgICBVUkxTdHJpbmcoKSA6IG1faXNWYWxpZChmYWxzZSkgeyB9
CisgICAgZXhwbGljaXQgVVJMU3RyaW5nKGNvbnN0IEtVUkwmIHVybCkgeyBpbml0KHVybCk7IH0K
KworICAgIFVSTFN0cmluZyhQYXJzZWRVUkxTdHJpbmdUYWcsIGNvbnN0IFN0cmluZyYgc3RyaW5n
KSB7IGluaXQoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHN0cmluZykpOyB9CisKKyAgICBjb25zdCBT
dHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZhbGlkOyB9CisKKyAgICBLVVJMIHRvS1VSTCgpIGNv
bnN0IHsgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3N0cmluZyk7IH0KKworcHJpdmF0
ZToKKyAgICB2b2lkIGluaXQoY29uc3QgS1VSTCYgdXJsKQorICAgIHsKKyAgICAgICAgbV9zdHJp
bmcgPSB1cmwuc3RyaW5nKCk7CisgICAgICAgIG1faXNWYWxpZCA9IHVybC5pc1ZhbGlkKCk7Cisg
ICAgfQorCisgICAgU3RyaW5nIG1fc3RyaW5nOworICAgIGJvb2wgbV9pc1ZhbGlkIDogMTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVSTFN0cmluZ19oCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3dtbC9XTUxHb0VsZW1lbnQuY3BwIGIvV2ViQ29yZS93bWwvV01MR29F
bGVtZW50LmNwcAppbmRleCA4MDc2MjA3Li5kNWZhNmZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dt
bC9XTUxHb0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvd21sL1dNTEdvRWxlbWVudC5jcHAKQEAg
LTEyMiw3ICsxMjIsNyBAQCB2b2lkIFdNTEdvRWxlbWVudDo6ZXhlY3V0ZVRhc2soKQogICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAKICAgICBpZiAoZ2V0QXR0cmlidXRlKHNlbmRy
ZWZlcmVyQXR0cikgPT0gInRydWUiKQotICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihs
b2FkZXItPm91dGdvaW5nUmVmZXJyZXIoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVy
cmVyKGxvYWRlci0+b3V0Z29pbmdSZWZlcnJlcigpLnN0cmluZygpKTsKIAogICAgIFN0cmluZyBj
YWNoZUNvbnRyb2wgPSBnZXRBdHRyaWJ1dGUoY2FjaGVfY29udHJvbEF0dHIpOwogCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCA0NTU5OTFiLi5hZTkzNDFjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAxMC0wMy0yOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYWNoIFJlZGlyZWN0U2NoZWR1
bGVyIGFib3V0IFVSTFN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzY3OTQKKworICAgICAgICBTcGlkZXIgVVJMU3RyaW5nIGNoYW5nZXMgdG8g
dGhlc2UgbG9jYXRpb25zLgorCisgICAgICAgICogc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzZWxlY3RDYWNoZVdp
dGhNYW5pZmVzdCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lSW1wbDo6c2V0UmVmZXJyZXJGb3JSZXF1ZXN0KToKKyAgICAgICAgKiBz
cmMvV2ViU2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZWN1cml0eVBv
bGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKToKKwogMjAxMC0wMy0yOSAgSm9jaGVuIEVpc2luZ2Vy
ICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNo
ZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4
IDVmYTRhNjYuLjE2NDlkY2UgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6c2VsZWN0Q2FjaGVXaXRoTWFuaWZlc3QoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpCiAgICAg
ICAgICAgICAvLyBzZWUgV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNo
ZSgpCiAgICAgICAgICAgICBjb25zdCBLVVJMJiBkb2NVUkwgPSBtX2RvY3VtZW50TG9hZGVyLT5m
cmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICAgICAgICAgIFN0cmluZyByZWZlcnJlciA9
IG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lTG9hZGVyKCktPnJlZmVycmVyKCk7Ci0gICAgICAgICAg
ICBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hlZHVs
ZUxvY2F0aW9uQ2hhbmdlKGRvY1VSTCwgcmVmZXJyZXIpOworICAgICAgICAgICAgbV9kb2N1bWVu
dExvYWRlci0+ZnJhbWUoKS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNo
YW5nZShVUkxTdHJpbmcoZG9jVVJMKSwgVVJMU3RyaW5nKFBhcnNlZFVSTFN0cmluZywgcmVmZXJy
ZXIpKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNw
cAppbmRleCA5ODJiNDM0Li5mMTlmYWJjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
Y3BwCkBAIC05NzUsMTQgKzk3NSwxNCBAQCBib29sIFdlYkZyYW1lSW1wbDo6aXNWaWV3U291cmNl
TW9kZUVuYWJsZWQoKSBjb25zdAogCiB2b2lkIFdlYkZyYW1lSW1wbDo6c2V0UmVmZXJyZXJGb3JS
ZXF1ZXN0KAogICAgIFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYlVSTCYgcmVmZXJy
ZXJVUkwpIHsKLSAgICBTdHJpbmcgcmVmZXJyZXI7CisgICAgVVJMU3RyaW5nIHJlZmVycmVyOwog
ICAgIGlmIChyZWZlcnJlclVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJlZmVycmVyID0gbV9mcmFt
ZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKTsKICAgICBlbHNlCi0gICAgICAgIHJlZmVy
cmVyID0gcmVmZXJyZXJVUkwuc3BlYygpLnV0ZjE2KCk7CisgICAgICAgIHJlZmVycmVyID0gVVJM
U3RyaW5nKHJlZmVycmVyVVJMKTsKICAgICBpZiAoU2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVS
ZWZlcnJlcihyZXF1ZXN0LnVybCgpLCByZWZlcnJlcikpCiAgICAgICAgIHJldHVybjsKLSAgICBy
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChXZWJTdHJpbmc6OmZyb21VVEY4KCJSZWZlcmVyIiks
IHJlZmVycmVyKTsKKyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChXZWJTdHJpbmc6OmZy
b21VVEY4KCJSZWZlcmVyIiksIHJlZmVycmVyLnN0cmluZygpKTsKIH0KIAogdm9pZCBXZWJGcmFt
ZUltcGw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QpCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlY3VyaXR5UG9saWN5LmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDVkNDY3NGUuLmYw
MDRjMTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VjdXJpdHlQb2xpY3ku
Y3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC03
Myw3ICs3Myw3IEBAIHZvaWQgV2ViU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hp
dGVMaXN0cygpCiAKIGJvb2wgV2ViU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihj
b25zdCBXZWJVUkwmIHVybCwgY29uc3QgV2ViU3RyaW5nJiByZWZlcnJlcikKIHsKLSAgICByZXR1
cm4gU2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcih1cmwsIHJlZmVycmVyKTsKKyAg
ICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcih1cmwsIFVSTFN0cmlu
ZyhQYXJzZWRVUkxTdHJpbmcsIHJlZmVycmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwppbmRleCBlN2JmNTg1Li44NTZiM2JjIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEwLTAzLTI5
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVhY2ggUmVkaXJlY3RTY2hlZHVsZXIgYWJvdXQg
VVJMU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNjc5NAorCisgICAgICAgIFNwaWRlciBVUkxTdHJpbmcgY2hhbmdlcyB0byB0aGVzZSBsb2Nh
dGlvbnMuCisKKyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW06
CisgICAgICAgICgtW1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgcmVxdWVzdFdpdGhVUkxDU3Ry
aW5nOl0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAg
ICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgbG9hZFN0cmVhbV0pOgorCiAyMDEwLTAzLTI2
ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMv
UGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvV2ViS2l0L21hYy9QbHVnaW5z
L1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggYmQzZWIzNC4uMTc2NGY0ZiAxMDA2
NDQKLS0tIGEvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0K
KysrIGIvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAg
LTIxNyw3ICsyMTcsNyBAQCBTdHJpbmcgV2ViSGFsdGFibGVQbHVnaW46OnBsdWdpbk5hbWUoKSBj
b25zdAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUoW3NlbGYgd2ViRnJhbWVdKTsKICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIFtyZXF1ZXN0IF93ZWJfc2V0SFRUUFJl
ZmVycmVyOmZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpXTsKKyAgICBbcmVxdWVz
dCBfd2ViX3NldEhUVFBSZWZlcnJlcjpmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIo
KS5zdHJpbmcoKV07CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9XZWJLaXQvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDkxNzgwZDIuLjdmYjc5MTQgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIv
V2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTEzNyw3ICsx
MTM3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldE5QUmVjdChjb25zdCBOU1JlY3QmIG5yLCBO
UFJlY3QmIG5wcikKICAgICAvLyBDaGVjayBmb3IgdGhpcyBhbmQgZG9uJ3Qgc3RhcnQgYSBsb2Fk
IGluIHRoaXMgY2FzZS4KICAgICBpZiAoX3NvdXJjZVVSTCAmJiAhW19zb3VyY2VVUkwuZ2V0KCkg
X3dlYl9pc0VtcHR5XSkgewogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0g
W05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6X3NvdXJjZVVSTC5nZXQoKV07Ci0g
ICAgICAgIFtyZXF1ZXN0IF93ZWJfc2V0SFRUUFJlZmVycmVyOmNvcmUoW3NlbGYgd2ViRnJhbWVd
KS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKV07CisgICAgICAgIFtyZXF1ZXN0IF93ZWJf
c2V0SFRUUFJlZmVycmVyOmNvcmUoW3NlbGYgd2ViRnJhbWVdKS0+bG9hZGVyKCktPm91dGdvaW5n
UmVmZXJyZXIoKS5zdHJpbmcoKV07CiAgICAgICAgIFtzZWxmIGxvYWRSZXF1ZXN0OnJlcXVlc3Qg
aW5UYXJnZXQ6bmlsIHdpdGhOb3RpZnlEYXRhOm5pbCBzZW5kTm90aWZpY2F0aW9uOk5PXTsKICAg
ICB9IAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwIGIvV2ViS2l0
L3F0L0FwaS9xd2ViZnJhbWUuY3BwCmluZGV4IDNiYmNmZTIuLjhkMzA3ZjcgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFt
ZS5jcHAKQEAgLTgyNSw4ICs4MjUsOCBAQCBRVXJsIFFXZWJGcmFtZTo6cmVxdWVzdGVkVXJsKCkg
Y29uc3QKICAgICAgICAgfHwgIWxvYWRlckNsaWVudC0+bV9sb2FkRXJyb3IuaXNOdWxsKCkpIHsK
ICAgICAgICAgaWYgKCFsb2FkZXJDbGllbnQtPm1fbG9hZEVycm9yLmZhaWxpbmdVUkwoKS5pc051
bGwoKSkKICAgICAgICAgICAgIHJldHVybiBRVXJsKGxvYWRlckNsaWVudC0+bV9sb2FkRXJyb3Iu
ZmFpbGluZ1VSTCgpKTsKLSAgICAgICAgZWxzZSBpZiAoIWxvYWRlci0+b3V0Z29pbmdSZWZlcnJl
cigpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBRVXJsKGxvYWRlci0+b3V0Z29pbmdS
ZWZlcnJlcigpKTsKKyAgICAgICAgZWxzZSBpZiAoIWxvYWRlci0+b3V0Z29pbmdSZWZlcnJlcigp
LnN0cmluZygpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBRVXJsKGxvYWRlci0+b3V0
Z29pbmdSZWZlcnJlcigpLnN0cmluZygpKTsKICAgICB9CiAKICAgICByZXR1cm4gbG9hZGVyLT5v
cmlnaW5hbFJlcXVlc3QoKS51cmwoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKaW5kZXggZWRmZWNlZS4uMTVmM2Nh
YyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5jcHAKQEAgLTIwNDMsNyArMjA0Myw3IEBAIFFPYmplY3QgKlFXZWJQYWdl
OjpjcmVhdGVQbHVnaW4oY29uc3QgUVN0cmluZyAmY2xhc3NpZCwgY29uc3QgUVVybCAmdXJsLCBj
b25zdCBRCiAKIHN0YXRpYyBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVl
c3QoY29uc3QgUVVybCAmdXJsLCBXZWJDb3JlOjpGcmFtZSAqZnJhbWUpCiB7Ci0gICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJyKHVybCwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVy
cmVyKCkpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBycih1cmwsIGZyYW1lLT5sb2Fk
ZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLnN0cmluZygpKTsKICAgICByZXR1cm4gV2ViQ29yZTo6
RnJhbWVMb2FkUmVxdWVzdChycik7CiB9CiAKQEAgLTIxMDksMTAgKzIxMDksMTAgQEAgdm9pZCBR
V2ViUGFnZTo6dHJpZ2dlckFjdGlvbihXZWJBY3Rpb24gYWN0aW9uLCBib29sKQogICAgICAgICAg
ICAgb3Blbk5ld1dpbmRvdyhkLT5oaXRUZXN0UmVzdWx0LmltYWdlVXJsKCksIGZyYW1lKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERvd25sb2FkSW1hZ2VUb0Rpc2s6Ci0gICAg
ICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5zdGFydERvd25sb2FkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdChkLT5oaXRUZXN0UmVzdWx0LmltYWdlVXJsKCksIGZyYW1lLT5sb2Fk
ZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSk7CisgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkt
PmNsaWVudCgpLT5zdGFydERvd25sb2FkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdChkLT5oaXRU
ZXN0UmVzdWx0LmltYWdlVXJsKCksIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigp
LnN0cmluZygpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEb3dubG9hZExp
bmtUb0Rpc2s6Ci0gICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5zdGFydERv
d25sb2FkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdChkLT5oaXRUZXN0UmVzdWx0LmxpbmtVcmwo
KSwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpKTsKKyAgICAgICAgICAgIGZy
YW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnN0YXJ0RG93bmxvYWQoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0KGQtPmhpdFRlc3RSZXN1bHQubGlua1VybCgpLCBmcmFtZS0+bG9hZGVyKCktPm91dGdv
aW5nUmVmZXJyZXIoKS5zdHJpbmcoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAjaWZuZGVmIFFU
X05PX0NMSVBCT0FSRAogICAgICAgICBjYXNlIENvcHlJbWFnZVRvQ2xpcGJvYXJkOgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggNGJh
ZGQ1Zi4uMjhlNDhlYiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJL
aXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDMtMjkgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZWFjaCBSZWRpcmVjdFNjaGVkdWxlciBhYm91dCBVUkxTdHJpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2Nzk0CisKKyAg
ICAgICAgU3BpZGVyIFVSTFN0cmluZyBjaGFuZ2VzIHRvIHRoZXNlIGxvY2F0aW9ucy4KKworICAg
ICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpyZXF1ZXN0ZWRV
cmwpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChmcmFtZUxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKToKKwogMjAxMC0wMy0yOSAg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51991</attachid>
            <date>2010-03-29 18:13:32 -0700</date>
            <delta_ts>2010-06-11 12:52:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36794-20100329181330.patch</filename>
            <type>text/plain</type>
            <size>52813</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmFhMDU1Mi4uZWEwMTNiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NiBAQAorMjAxMC0wMy0yOSAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlYWNoIFJlZGlyZWN0U2NoZWR1bGVyIGFib3V0IFVSTFN0cmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY3OTQKKworICAg
ICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIG5vdGlvbiBvZiBhIFVSTFN0cmluZy4gIElu
c3RlYWQgb2YgcGFzc2luZworICAgICAgICBhcm91bmQgVVJMcyBhcyBTdHJpbmdzLCB3ZSB3YW50
IGEgdHlwZSB0aGF0IHJlbWVtYmVycyB0aGF0IHRoZXkncmUKKyAgICAgICAgc3VwcG9zZWQgdG8g
YmUgVVJMcy4gIEhvd2V2ZXIsIHdlIGRvbid0IHdhbnQgdG8gdXNlIEtVUkwgYWxsIHRoZSB0aW1l
CisgICAgICAgIGJlY2F1c2UgaXQgZHJhZ3MgYWxvbmcgYSBidW5jaCBvZiBleHRyYSBmaWVsZHMu
CisKKyAgICAgICAgQ29udmVydGluZyB0aGUgY29kZSBiYXNlIG92ZXIgdG8gdXNpbmcgVVJMU3Ry
aW5nIGlzIGEgc29tZXdoYXQKKyAgICAgICAgInNwaWRlcnkiIGNoYW5nZSB0aGF0IHdhbnRzIHRv
IGV4cGFuZCBhbmQgdG91Y2ggZXZlcnkgbGluZSBvZiBjb2RlLgorICAgICAgICBJbnN0ZWFkIG9m
IGRvaW5nIHRoYXQgaW4gb25lIGdpYW50IGNvbW1pdCwgSSd2ZSBsaW1pdGVkIHRoaXMgcGF0Y2gg
dG8KKyAgICAgICAgVVJMcyBoYW5kbGVkIGJ5IFJlZGlyZWN0U2NoZWR1bGVyLiAgSW4gZG9pbmcg
c28sIEkgd2FzIHZlcnkgdGVtcHRlZCB0bworICAgICAgICBzcGlkZXIgdG8gb3V0Z29pbmdSZWZl
cnJlciBiZWNhdXNlIGl0IHNvIHNvIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24KKyAgICAgICAg
d2l0aCBSZWRpcmVjdFNjaGVkdWxlci4gIFNwaWRlcmluZyB0aGVyZSBsZWFkIG1lIHRvIFNob3Vs
ZEhpZGVSZWZlcnJlciwKKyAgICAgICAgYnV0IEkgd2FzIGFibGUgdG8gZHJhdyB0aGUgbGluZSB0
aGVyZS4KKworICAgICAgICBTZWNyZXRseSwgSSB3YW50IHRoaXMgaW5mcmFzdHJ1Y3R1cmUgdG8g
aW1wcm92ZSB0aGUgc2VjdXJpdHkgb2Ygb3VyCisgICAgICAgIEphdmFTY3JpcHQgVVJMIGhhbmRs
aW5nLCB3aGljaCAoY29pbmNpZGVudGFsbHk/KSByZXZvbHZlcyBhcm91bmQKKyAgICAgICAgUmVk
aXJlY3RTY2hlZHVsZXIuCisKKyAgICAgICAgTm8gdGVzdHMgYmVjYXVzZSB0aGlzIHBhdGNoIGRv
ZXNuJ3QgY2hhbmdlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBXZWJDb3JlLmJhc2UuZXhwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9C
aW5kaW5nRE9NV2luZG93Lmg6CisgICAgICAgIChXZWJDb3JlOjo6OmNyZWF0ZVdpbmRvdyk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6OnNldExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6b3Blbik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0RvY3VtZW50OjpzZXRMb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlv
bkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuYXZpZ2F0ZUlmQWxsb3dlZCk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmF2
aWdhdGVJZkFsbG93ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRv
d0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6b3BlbkNhbGxiYWNr
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnByb2Nlc3NIdHRwRXF1aXYpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y3JlYXRlV2luZG93KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpsb2FkU3ViZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN1Ym1pdEZv
cm0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlY2VpdmVkRmlyc3REYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpiZWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6b3V0Z29pbmdSZWZlcnJlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxl
ZFJlZGlyZWN0aW9uOjpTY2hlZHVsZWRSZWRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlZGlyZWN0U2NoZWR1bGVyOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
ZGlyZWN0U2NoZWR1bGVyOjpzdGFydFRpbWVyKToKKyAgICAgICAgKiBsb2FkZXIvUmVkaXJlY3RT
Y2hlZHVsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKToKKyAgICAgICAgKiBwYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuTmV3V2luZG93
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcik6CisgICAgICAg
ICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIHBhZ2UvWFNTQXVkaXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KToKKyAgICAgICAg
KiB3bWwvV01MR29FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldNTEdvRWxlbWVudDo6
ZXhlY3V0ZVRhc2spOgorCiAyMDEwLTAzLTI5ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA5ZWUy
YTc2Li40NGJiNDA1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE1NTQsNiArMTU1NCw3IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0v
VGltZXIuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmggXAorCVdlYkNvcmUvcGxh
dGZvcm0vVVJMU3RyaW5nLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9XaWRnZXQuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9XaW5kb3dzS2V5Ym9h
cmRDb2Rlcy5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cCBiL1dlYkNv
cmUvV2ViQ29yZS5iYXNlLmV4cAppbmRleCA4YjZlYjk5Li42NDQ0MzI3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCkBA
IC0zMDksNyArMzA5LDcgQEAgX19aTjdXZWJDb3JlMTRSZXNvdXJjZUxvYWRlcjE5c2V0U2hvdWxk
QnVmZmVyRGF0YUViCiBfX1pON1dlYkNvcmUxNFNWR1NNSUxFbGVtZW50MTNpc1NNSUxFbGVtZW50
RVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xNmNyZWF0ZUZyb21TdHJp
bmdFUktOU182U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjE4c2V0TG9jYWxM
b2FkUG9saWN5RU5TMF8xNUxvY2FsTG9hZFBvbGljeUUKLV9fWk43V2ViQ29yZTE0U2VjdXJpdHlP
cmlnaW4xOHNob3VsZEhpZGVSZWZlcnJlckVSS05TXzRLVVJMRVJLTlNfNlN0cmluZ0UKK19fWk43
V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xOHNob3VsZEhpZGVSZWZlcnJlckVSS05TXzRLVVJMRVJL
TlNfOVVSTFN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4yNHJlZ2lzdGVyVVJM
U2NoZW1lQXNMb2NhbEVSS05TXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2lu
MjVyZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlRVJLTlNfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0
U2VjdXJpdHlPcmlnaW4yNXdoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW5FUktTMF9SS05TXzZTdHJp
bmdFUzVfYgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCBkZWJlMjFmLi41NjYzNDEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjkwMSw2ICsyOTAxLDcgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9UaW1lci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L1RpbWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1RyZWVTaGFyZWQuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vVVJMU3RyaW5nLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1dpZGdl
dC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1dpZGdldC5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9XaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IDk0OTY3ZDUuLjA3MjE1NDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagpAQCAtMjIxNDEsNiArMjIxNDEsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxl
Pg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cVVJMU3RyaW5nLmgi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxXaWRnZXQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTgwYTZmYi4uZGUxNGFkMCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0NzMsNiArMjQ3Myw3
IEBACiAJCTk3MDU5OTc4MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzQxMDdEOTc1
MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTcwNTk5NzkxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGlj
eUNoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICovOyB9Owog
CQk5NzA1OTk3QTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzYxMDdEOTc1MjAwQTUw
QTdDIC8qIFBvbGljeUNoZWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk5NzBCRjc5QjExNjE3NEE0MDA4NUFEMEIgLyogVVJMU3RyaW5nLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzBCRjc5QTEx
NjE3NEE0MDA4NUFEMEIgLyogVVJMU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTczRTMyNTYxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291
cmNlTG9hZE5vdGlmaWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3M0UzMjU0MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmll
ci5jcHAgKi87IH07CiAJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWRO
b3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTczRTMyNTUxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc5RjQzRDMxMDc1
RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QxMTA3NUU0NEEwMDAwRjgzQiAvKiBS
ZWRpcmVjdFNjaGVkdWxlci5jcHAgKi87IH07CkBAIC03ODkxLDYgKzc4OTIsNyBAQAogCQk5NzA1
OTk3NDEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUG9saWN5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9saWN5Q2hlY2tlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAvKiBQ
b2xpY3lDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbGljeUNo
ZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTcwQkY3OUExMTYxNzRBNDAw
ODVBRDBCIC8qIFVSTFN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
UkxTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczRTMyNTQxMDg4M0I3
QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTczRTMyNTUxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9h
ZE5vdGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9h
ZE5vdGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OUY0M0QxMTA3NUU0
NEEwMDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZWRpcmVjdFNjaGVkdWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNTQyMiw2ICsxNTQyNCw3IEBACiAJCQkJOTMzMDlFQTEwOTlFQjc4QzAw
NTZFNTgxIC8qIFRpbWVyLmNwcCAqLywKIAkJCQk5MzA1QjI0QzA5OEYxQjZCMDBDMjg4NTUgLyog
VGltZXIuaCAqLywKIAkJCQkxNDE5RDJDNDBDRUE2RjYxMDBGRjUwN0EgLyogVHJlZVNoYXJlZC5o
ICovLAorCQkJCTk3MEJGNzlBMTE2MTc0QTQwMDg1QUQwQiAvKiBVUkxTdHJpbmcuaCAqLywKIAkJ
CQk5MzgwRjQ3MTA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCAqLywKIAkJCQk5MzgwRjQ3
MjA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmggKi8sCiAJCQkJRTFFMUJFRkYxMTVGRjZGQjAw
NkY1MkNBIC8qIFdpbmRvd3NLZXlib2FyZENvZGVzLmggKi8sCkBAIC0xODc2OCw2ICsxODc3MSw3
IEBACiAJCQkJRTQ3NzhCODAxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxRTFCRjAwMTE1RkY2RkIwMDZGNTJDQSAvKiBXaW5kb3dzS2V5Ym9h
cmRDb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ5OUE1MTUxMTVGQjMzMDAwRjU2NkUzIC8q
IFJlbmRlclNWR1Jlc291cmNlTWFya2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NzBCRjc5QjEx
NjE3NEE0MDA4NUFEMEIgLyogVVJMU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5nRE9NV2luZG93LmggYi9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oCmluZGV4IGI0NmJkZjkuLjMzYjNlYzUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5nRE9NV2luZG93LmgK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdET01XaW5kb3cuaApAQCAtNzMs
OCArNzMsOCBAQCBGcmFtZSogQmluZGluZ0RPTVdpbmRvdzxCaW5kaW5nPjo6Y3JlYXRlV2luZG93
KFN0YXRlPEJpbmRpbmc+KiBzdGF0ZSwKIAogICAgIC8vIEZvciB3aGF0ZXZlciByZWFzb24sIEZp
cmVmb3ggdXNlcyB0aGUgZW50ZXJlZCBmcmFtZSB0byBkZXRlcm1pbmUKICAgICAvLyB0aGUgb3V0
Z29pbmdSZWZlcnJlci4gIFdlIHJlcGxpY2F0ZSB0aGF0IGJlaGF2aW9yIGhlcmUuCi0gICAgU3Ry
aW5nIHJlZmVycmVyID0gZW50ZXJlZEZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigp
OwotICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKKyAgICBVUkxTdHJpbmcg
cmVmZXJyZXIgPSBlbnRlcmVkRnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCk7Cisg
ICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIuc3RyaW5nKCkpOwogICAgIEZyYW1l
TG9hZGVyOjphZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgZW50ZXJlZEZyYW1lLT5sb2Fk
ZXIoKS0+b3V0Z29pbmdPcmlnaW4oKSk7CiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZVJlcXVl
c3QocmVxdWVzdCwgZnJhbWVOYW1lKTsKIApAQCAtMTA3LDkgKzEwNyw5IEBAIEZyYW1lKiBCaW5k
aW5nRE9NV2luZG93PEJpbmRpbmc+OjpjcmVhdGVXaW5kb3coU3RhdGU8QmluZGluZz4qIHN0YXRl
LAogICAgICAgICBib29sIHVzZXJHZXN0dXJlID0gcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CiAK
ICAgICAgICAgaWYgKGNyZWF0ZWQpCi0gICAgICAgICAgICBuZXdGcmFtZS0+bG9hZGVyKCktPmNo
YW5nZUxvY2F0aW9uKGNvbXBsZXRlZFVybCwgcmVmZXJyZXIsIGZhbHNlLCBmYWxzZSwgdXNlckdl
c3R1cmUpOworICAgICAgICAgICAgbmV3RnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2NhdGlvbihj
b21wbGV0ZWRVcmwsIHJlZmVycmVyLnN0cmluZygpLCBmYWxzZSwgZmFsc2UsIHVzZXJHZXN0dXJl
KTsKICAgICAgICAgZWxzZSBpZiAoIXVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBuZXdGcmFt
ZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShjb21wbGV0ZWRV
cmwuc3RyaW5nKCksIHJlZmVycmVyLCBmYWxzZSwgdXNlckdlc3R1cmUpOworICAgICAgICAgICAg
bmV3RnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoVVJM
U3RyaW5nKGNvbXBsZXRlZFVybCksIHJlZmVycmVyLCBmYWxzZSwgdXNlckdlc3R1cmUpOwogICAg
IH0KIAogICAgIHJldHVybiBuZXdGcmFtZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKaW5kZXggYmE1NmUyOC4uNjlmZWE0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTUxNSw3ICs1MTUsNyBAQCB2b2lkIEpTRE9NV2lu
ZG93OjpzZXRMb2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAKICAgICBp
ZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkgfHwgYWxsb3dzQWNjZXNzRnJvbShleGVjKSkg
ewogICAgICAgICAvLyBXZSB3YW50IGEgbmV3IGhpc3RvcnkgaXRlbSBpZiB0aGlzIEpTIHdhcyBj
YWxsZWQgdmlhIGEgdXNlciBnZXN0dXJlCi0gICAgICAgIGZyYW1lLT5yZWRpcmVjdFNjaGVkdWxl
cigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKHVybCwgbGV4aWNhbEZyYW1lLT5sb2FkZXIoKS0+
b3V0Z29pbmdSZWZlcnJlcigpLCAhbGV4aWNhbEZyYW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoZXhlYykp
OworICAgICAgICBmcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNo
YW5nZShVUkxTdHJpbmcodXJsKSwgbGV4aWNhbEZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZl
cnJlcigpLCAhbGV4aWNhbEZyYW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKCksIGZhbHNlLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoZXhlYykpOwogICAgIH0KIH0K
IApAQCAtNjcyLDggKzY3Miw4IEBAIHN0YXRpYyBGcmFtZSogY3JlYXRlV2luZG93KEV4ZWNTdGF0
ZSogZXhlYywgRnJhbWUqIGxleGljYWxGcmFtZSwgRnJhbWUqIGR5bmFtaWNGCiAKICAgICAvLyBG
b3Igd2hhdGV2ZXIgcmVhc29uLCBGaXJlZm94IHVzZXMgdGhlIGR5bmFtaWNHbG9iYWxPYmplY3Qg
dG8gZGV0ZXJtaW5lCiAgICAgLy8gdGhlIG91dGdvaW5nUmVmZXJyZXIuICBXZSByZXBsaWNhdGUg
dGhhdCBiZWhhdmlvciBoZXJlLgotICAgIFN0cmluZyByZWZlcnJlciA9IGR5bmFtaWNGcmFtZS0+
bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKTsKLSAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJl
cihyZWZlcnJlcik7CisgICAgVVJMU3RyaW5nIHJlZmVycmVyID0gZHluYW1pY0ZyYW1lLT5sb2Fk
ZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpOworICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJl
ZmVycmVyLnN0cmluZygpKTsKICAgICBGcmFtZUxvYWRlcjo6YWRkSFRUUE9yaWdpbklmTmVlZGVk
KHJlcXVlc3QsIGR5bmFtaWNGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nT3JpZ2luKCkpOwogICAg
IEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZyYW1lTmFtZSk7CiAKQEAg
LTcwNiw5ICs3MDYsOSBAQCBzdGF0aWMgRnJhbWUqIGNyZWF0ZVdpbmRvdyhFeGVjU3RhdGUqIGV4
ZWMsIEZyYW1lKiBsZXhpY2FsRnJhbWUsIEZyYW1lKiBkeW5hbWljRgogICAgICAgICBib29sIHVz
ZXJHZXN0dXJlID0gcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKGV4ZWMpOwogCiAgICAgICAgIGlmIChj
cmVhdGVkKQotICAgICAgICAgICAgbmV3RnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2NhdGlvbihj
b21wbGV0ZWRVUkwsIHJlZmVycmVyLCBmYWxzZSwgZmFsc2UsIHVzZXJHZXN0dXJlKTsKKyAgICAg
ICAgICAgIG5ld0ZyYW1lLT5sb2FkZXIoKS0+Y2hhbmdlTG9jYXRpb24oY29tcGxldGVkVVJMLCBy
ZWZlcnJlci5zdHJpbmcoKSwgZmFsc2UsIGZhbHNlLCB1c2VyR2VzdHVyZSk7CiAgICAgICAgIGVs
c2UgaWYgKCF1cmwuaXNFbXB0eSgpKQotICAgICAgICAgICAgbmV3RnJhbWUtPnJlZGlyZWN0U2No
ZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoY29tcGxldGVkVVJMLnN0cmluZygpLCBy
ZWZlcnJlciwgIWxleGljYWxGcmFtZS0+c2NyaXB0KCktPmFueVBhZ2VJc1Byb2Nlc3NpbmdVc2Vy
R2VzdHVyZSgpLCBmYWxzZSwgdXNlckdlc3R1cmUpOworICAgICAgICAgICAgbmV3RnJhbWUtPnJl
ZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoVVJMU3RyaW5nKGNvbXBs
ZXRlZFVSTCksIHJlZmVycmVyLCAhbGV4aWNhbEZyYW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlLCB1c2VyR2VzdHVyZSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIG5ld0ZyYW1lOwpAQCAtNzU3LDIxICs3NTcsMjEgQEAgSlNWYWx1ZSBKU0RPTVdpbmRv
dzo6b3BlbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiAgICAgICAgIHRv
cE9yUGFyZW50ID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgKHRvcE9yUGFyZW50KSB7Ci0gICAgICAg
IFN0cmluZyBjb21wbGV0ZWRVUkw7CisgICAgICAgIFVSTFN0cmluZyBjb21wbGV0ZWRVUkw7CiAg
ICAgICAgIGlmICghdXJsU3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNvbXBsZXRlZFVS
TCA9IGNvbXBsZXRlVVJMKGV4ZWMsIHVybFN0cmluZykuc3RyaW5nKCk7CisgICAgICAgICAgICBj
b21wbGV0ZWRVUkwgPSBVUkxTdHJpbmcoY29tcGxldGVVUkwoZXhlYywgdXJsU3RyaW5nKSk7CiAK
ICAgICAgICAgaWYgKCFzaG91bGRBbGxvd05hdmlnYXRpb24oZXhlYywgZnJhbWUpKQogICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICAgICAgY29uc3QgSlNET01XaW5kb3cq
IHRhcmdldGVkV2luZG93ID0gdG9KU0RPTVdpbmRvdyhmcmFtZSwgY3VycmVudFdvcmxkKGV4ZWMp
KTsKLSAgICAgICAgaWYgKCFjb21wbGV0ZWRVUkwuaXNFbXB0eSgpICYmICghcHJvdG9jb2xJc0ph
dmFTY3JpcHQoY29tcGxldGVkVVJMKSB8fCAodGFyZ2V0ZWRXaW5kb3cgJiYgdGFyZ2V0ZWRXaW5k
b3ctPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpKSkgeworICAgICAgICBpZiAoIWNvbXBsZXRlZFVS
TC5zdHJpbmcoKS5pc0VtcHR5KCkgJiYgKCFwcm90b2NvbElzSmF2YVNjcmlwdChjb21wbGV0ZWRV
Ukwuc3RyaW5nKCkpIHx8ICh0YXJnZXRlZFdpbmRvdyAmJiB0YXJnZXRlZFdpbmRvdy0+YWxsb3dz
QWNjZXNzRnJvbShleGVjKSkpKSB7CiAgICAgICAgICAgICBib29sIHVzZXJHZXN0dXJlID0gcHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKGV4ZWMpOwogCiAgICAgICAgICAgICAvLyBGb3Igd2hhdGV2ZXIg
cmVhc29uLCBGaXJlZm94IHVzZXMgdGhlIGR5bmFtaWNHbG9iYWxPYmplY3QgdG8KICAgICAgICAg
ICAgIC8vIGRldGVybWluZSB0aGUgb3V0Z29pbmdSZWZlcnJlci4gIFdlIHJlcGxpY2F0ZSB0aGF0
IGJlaGF2aW9yCiAgICAgICAgICAgICAvLyBoZXJlLgotICAgICAgICAgICAgU3RyaW5nIHJlZmVy
cmVyID0gZHluYW1pY0ZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpOworICAgICAg
ICAgICAgVVJMU3RyaW5nIHJlZmVycmVyID0gZHluYW1pY0ZyYW1lLT5sb2FkZXIoKS0+b3V0Z29p
bmdSZWZlcnJlcigpOwogCiAgICAgICAgICAgICBmcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+
c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShjb21wbGV0ZWRVUkwsIHJlZmVycmVyLCAhbGV4aWNhbEZy
YW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlLCB1
c2VyR2VzdHVyZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEb2N1bWVudEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0
b20uY3BwCmluZGV4IGVkYTE1M2UuLjcxMjVkZTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rv
Y3VtZW50Q3VzdG9tLmNwcApAQCAtODQsMTEgKzg0LDEwIEBAIHZvaWQgSlNEb2N1bWVudDo6c2V0
TG9jYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIC8vIElFIGFuZCBN
b3ppbGxhIGJvdGggcmVzb2x2ZSB0aGUgVVJMIHJlbGF0aXZlIHRvIHRoZSBzb3VyY2UgZnJhbWUs
CiAgICAgLy8gbm90IHRoZSB0YXJnZXQgZnJhbWUuCiAgICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0g
YXNKU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1l
KCk7Ci0gICAgaWYgKGFjdGl2ZUZyYW1lKQotICAgICAgICBzdHIgPSBhY3RpdmVGcmFtZS0+ZG9j
dW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyKS5zdHJpbmcoKTsKKyAgICBVUkxTdHJpbmcgdXJsID0g
YWN0aXZlRnJhbWUgPyBVUkxTdHJpbmcoYWN0aXZlRnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRl
VVJMKHN0cikpIDogVVJMU3RyaW5nKFBhcnNlZFVSTFN0cmluZywgc3RyKTsKIAogICAgIGJvb2wg
dXNlckdlc3R1cmUgPSBhY3RpdmVGcmFtZS0+c2NyaXB0KCktPnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZShjdXJyZW50V29ybGQoZXhlYykpOwotICAgIGZyYW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5z
Y2hlZHVsZUxvY2F0aW9uQ2hhbmdlKHN0ciwgYWN0aXZlRnJhbWUtPmxvYWRlcigpLT5vdXRnb2lu
Z1JlZmVycmVyKCksICFhY3RpdmVGcmFtZS0+c2NyaXB0KCktPmFueVBhZ2VJc1Byb2Nlc3NpbmdV
c2VyR2VzdHVyZSgpLCBmYWxzZSwgdXNlckdlc3R1cmUpOworICAgIGZyYW1lLT5yZWRpcmVjdFNj
aGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKHVybCwgYWN0aXZlRnJhbWUtPmxvYWRl
cigpLT5vdXRnb2luZ1JlZmVycmVyKCksICFhY3RpdmVGcmFtZS0+c2NyaXB0KCktPmFueVBhZ2VJ
c1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpLCBmYWxzZSwgdXNlckdlc3R1cmUpOwogfQogCiBKU1Zh
bHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBEb2N1bWVudCogZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9t
LmNwcAppbmRleCBhM2UyYmFlLi4wZDIyN2ZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2Nh
dGlvbkN1c3RvbS5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBuYXZpZ2F0ZUlm
QWxsb3dlZChFeGVjU3RhdGUqIGV4ZWMsIEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBi
bwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkg
fHwgYWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4ZWMsIGZyYW1lKSkKLSAgICAgICAgZnJhbWUtPnJl
ZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UodXJsLnN0cmluZygpLCBs
ZXhpY2FsRnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCksIGxvY2tIaXN0b3J5LCBs
b2NrQmFja0ZvcndhcmRMaXN0LCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoZXhlYykpOworICAgICAg
ICBmcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShVUkxT
dHJpbmcodXJsKSwgbGV4aWNhbEZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLCBs
b2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKGV4
ZWMpKTsKIH0KIAogdm9pZCBKU0xvY2F0aW9uOjpzZXRIcmVmKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMu
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKaW5kZXggZjg5NWE3Ni4u
MDgxYzU2MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKQEAgLTEyMiw3ICsxMjIs
NyBAQCB2b2lkIG5hdmlnYXRlSWZBbGxvd2VkKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJs
LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvYwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
IXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkgfHwgU2NyaXB0Q29udHJvbGxlcjo6aXNTYWZlU2Ny
aXB0KGZyYW1lKSkKLSAgICAgICAgZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxl
TG9jYXRpb25DaGFuZ2UodXJsLnN0cmluZygpLCBjYWxsaW5nRnJhbWUtPmxvYWRlcigpLT5vdXRn
b2luZ1JlZmVycmVyKCksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBwcm9jZXNz
aW5nVXNlckdlc3R1cmUoKSk7CisgICAgICAgIGZyYW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5z
Y2hlZHVsZUxvY2F0aW9uQ2hhbmdlKFVSTFN0cmluZyh1cmwpLCBjYWxsaW5nRnJhbWUtPmxvYWRl
cigpLT5vdXRnb2luZ1JlZmVycmVyKCksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0
LCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDYyMTVkMzguLjk0YWU4MDAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAg
LTU1OCwxOSArNTU4LDE5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6b3Bl
bkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgIGlmICghc2hvdWxk
QWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkKICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiAKLSAgICAgICAgU3RyaW5nIGNvbXBsZXRlZFVybDsKLSAgICAgICAgaWYgKCF1cmxTdHJp
bmcuaXNFbXB0eSgpKQotICAgICAgICAgICAgY29tcGxldGVkVXJsID0gY29tcGxldGVVUkwodXJs
U3RyaW5nKTsKKyAgICAgICAgVVJMU3RyaW5nIGNvbXBsZXRlZFVSTDsKKyAgICAgICAgaWYgKCFj
b21wbGV0ZWRVUkwuc3RyaW5nKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29tcGxldGVkVVJM
ID0gVVJMU3RyaW5nKGNvbXBsZXRlVVJMKHVybFN0cmluZykpOwogCi0gICAgICAgIGlmICghY29t
cGxldGVkVXJsLmlzRW1wdHkoKSAmJgotICAgICAgICAgICAgKCFwcm90b2NvbElzSmF2YVNjcmlw
dChjb21wbGV0ZWRVcmwpIHx8IFNjcmlwdENvbnRyb2xsZXI6OmlzU2FmZVNjcmlwdChmcmFtZSkp
KSB7CisgICAgICAgIGlmICghY29tcGxldGVkVVJMLnN0cmluZygpLmlzRW1wdHkoKQorICAgICAg
ICAgICAgJiYgKCFwcm90b2NvbElzSmF2YVNjcmlwdChjb21wbGV0ZWRVcmwuc3RyaW5nKCkpIHx8
IFNjcmlwdENvbnRyb2xsZXI6OmlzU2FmZVNjcmlwdChmcmFtZSkpKSB7CiAgICAgICAgICAgICBi
b29sIHVzZXJHZXN0dXJlID0gcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CiAKICAgICAgICAgICAg
IC8vIEZvciB3aGF0ZXZlciByZWFzb24sIEZpcmVmb3ggdXNlcyB0aGUgZW50ZXJlZCBmcmFtZSB0
byBkZXRlcm1pbmUKICAgICAgICAgICAgIC8vIHRoZSBvdXRnb2luZ1JlZmVycmVyLiAgV2UgcmVw
bGljYXRlIHRoYXQgYmVoYXZpb3IgaGVyZS4KLSAgICAgICAgICAgIFN0cmluZyByZWZlcnJlciA9
IGVudGVyZWRGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKTsKKyAgICAgICAgICAg
IFVSTFN0cmluZyByZWZlcnJlciA9IGVudGVyZWRGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVm
ZXJyZXIoKTsKIAotICAgICAgICAgICAgZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVk
dWxlTG9jYXRpb25DaGFuZ2UoY29tcGxldGVkVXJsLCByZWZlcnJlciwgZmFsc2UsIHVzZXJHZXN0
dXJlKTsKKyAgICAgICAgICAgIGZyYW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hlZHVsZUxv
Y2F0aW9uQ2hhbmdlKGNvbXBsZXRlZFVSTCwgcmVmZXJyZXIsIGZhbHNlLCB1c2VyR2VzdHVyZSk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRvVjgoZnJhbWUtPmRvbVdpbmRvdygpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggYWVkYmEwZC4uYTlhZTA5YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjI1NSwx
MiArMjI1NSw5IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29uc3QgU3RyaW5n
JiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgICAgICB1cGRhdGVTdHlsZVNlbGVj
dG9yKCk7CiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwgInJlZnJlc2gi
KSkgewogICAgICAgICBkb3VibGUgZGVsYXk7Ci0gICAgICAgIFN0cmluZyB1cmw7Ci0gICAgICAg
IGlmIChmcmFtZSAmJiBwYXJzZUhUVFBSZWZyZXNoKGNvbnRlbnQsIHRydWUsIGRlbGF5LCB1cmwp
KSB7Ci0gICAgICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICB1cmwg
PSBmcmFtZS0+bG9hZGVyKCktPnVybCgpLnN0cmluZygpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHVybCA9IGNvbXBsZXRlVVJMKHVybCkuc3RyaW5nKCk7CisgICAgICAgIFN0
cmluZyB0ZXh0OworICAgICAgICBpZiAoZnJhbWUgJiYgcGFyc2VIVFRQUmVmcmVzaChjb250ZW50
LCB0cnVlLCBkZWxheSwgdGV4dCkpIHsKKyAgICAgICAgICAgIFVSTFN0cmluZyB1cmwgPSB0ZXh0
LmlzRW1wdHkoKSA/IFVSTFN0cmluZyhmcmFtZS0+bG9hZGVyKCktPnVybCgpKSA6IFVSTFN0cmlu
Zyhjb21wbGV0ZVVSTCh0ZXh0KSk7CiAgICAgICAgICAgICBmcmFtZS0+cmVkaXJlY3RTY2hlZHVs
ZXIoKS0+c2NoZWR1bGVSZWRpcmVjdChkZWxheSwgdXJsKTsKICAgICAgICAgfQogICAgIH0gZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZXF1aXYsICJzZXQtY29va2llIikpIHsKQEAgLTIyNzcs
NyArMjI3NCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29uc3QgU3RyaW5n
JiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgICAgICBGcmFtZUxvYWRlciogZnJh
bWVMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7CiAgICAgICAgIGlmIChmcmFtZUxvYWRlci0+c2hv
dWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29udGVudCwgdXJsKCkpKSB7CiAgICAg
ICAgICAgICBmcmFtZUxvYWRlci0+c3RvcEFsbExvYWRlcnMoKTsKLSAgICAgICAgICAgIGZyYW1l
LT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGJsYW5rVVJMKCks
IFN0cmluZygpKTsKKyAgICAgICAgICAgIGZyYW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hl
ZHVsZUxvY2F0aW9uQ2hhbmdlKFVSTFN0cmluZyhibGFua1VSTCgpKSwgVVJMU3RyaW5nKCkpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDk0YTNkZDkuLjAw
ZGVkNzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCBGcmFtZSog
RnJhbWVMb2FkZXI6OmNyZWF0ZVdpbmRvdyhGcmFtZUxvYWRlciogZnJhbWVMb2FkZXJGb3JGcmFt
ZUxvb2t1cCwgY29uc3QgRgogCiAgICAgLy8gRklYTUU6IFNldHRpbmcgdGhlIHJlZmVycmVyIHNo
b3VsZCBiZSB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkuCiAgICAgRnJhbWVMb2FkUmVxdWVz
dCByZXF1ZXN0V2l0aFJlZmVycmVyID0gcmVxdWVzdDsKLSAgICByZXF1ZXN0V2l0aFJlZmVycmVy
LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBSZWZlcnJlcihtX291dGdvaW5nUmVmZXJyZXIpOwor
ICAgIHJlcXVlc3RXaXRoUmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVy
KG1fb3V0Z29pbmdSZWZlcnJlci5zdHJpbmcoKSk7CiAgICAgYWRkSFRUUE9yaWdpbklmTmVlZGVk
KHJlcXVlc3RXaXRoUmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCksIG91dGdvaW5nT3JpZ2luKCkp
OwogCiAgICAgUGFnZSogb2xkUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKQEAgLTM1Myw3ICszNTMs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcGFzcwogICAgIGlmIChyZWZlcnJlclBvbGljeSA9PSBO
b1JlZmVycmVyKQogICAgICAgICBtX3N1cHByZXNzT3BlbmVySW5OZXdGcmFtZSA9IHRydWU7CiAg
ICAgZWxzZSBpZiAoZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigp
LmlzRW1wdHkoKSkKLSAgICAgICAgZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhU
VFBSZWZlcnJlcihtX291dGdvaW5nUmVmZXJyZXIpOworICAgICAgICBmcmFtZVJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVyKG1fb3V0Z29pbmdSZWZlcnJlci5zdHJpbmco
KSk7CiAgICAgYWRkSFRUUE9yaWdpbklmTmVlZGVkKGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKSwgb3V0Z29pbmdPcmlnaW4oKSk7CiAKICAgICBsb2FkRnJhbWVSZXF1ZXN0KGZyYW1lUmVx
dWVzdCwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHRyaWdnZXJpbmdFdmVudCwg
MCwgcmVmZXJyZXJQb2xpY3kpOwpAQCAtMzc0LDkgKzM3NCw5IEBAIGJvb2wgRnJhbWVMb2FkZXI6
OnJlcXVlc3RGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3Qg
U3RyaW5nCiAKICAgICBGcmFtZSogZnJhbWUgPSBvd25lckVsZW1lbnQtPmNvbnRlbnRGcmFtZSgp
OwogICAgIGlmIChmcmFtZSkKLSAgICAgICAgZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNj
aGVkdWxlTG9jYXRpb25DaGFuZ2UodXJsLnN0cmluZygpLCBtX291dGdvaW5nUmVmZXJyZXIsIGxv
Y2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBpc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgp
KTsKKyAgICAgICAgZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25D
aGFuZ2UoVVJMU3RyaW5nKHVybCksIG1fb3V0Z29pbmdSZWZlcnJlciwgbG9ja0hpc3RvcnksIGxv
Y2tCYWNrRm9yd2FyZExpc3QsIGlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpOwogICAgIGVsc2UK
LSAgICAgICAgZnJhbWUgPSBsb2FkU3ViZnJhbWUob3duZXJFbGVtZW50LCB1cmwsIGZyYW1lTmFt
ZSwgbV9vdXRnb2luZ1JlZmVycmVyKTsKKyAgICAgICAgZnJhbWUgPSBsb2FkU3ViZnJhbWUob3du
ZXJFbGVtZW50LCB1cmwsIGZyYW1lTmFtZSwgbV9vdXRnb2luZ1JlZmVycmVyLnN0cmluZygpKTsK
ICAgICAKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MDQsNyAr
NDA0LDcgQEAgRnJhbWUqIEZyYW1lTG9hZGVyOjpsb2FkU3ViZnJhbWUoSFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IEtVUkwKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgYm9vbCBoaWRlUmVmZXJyZXIgPSBTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJl
ZmVycmVyKHVybCwgcmVmZXJyZXIpOworICAgIGJvb2wgaGlkZVJlZmVycmVyID0gU2VjdXJpdHlP
cmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcih1cmwsIFVSTFN0cmluZyhQYXJzZWRVUkxTdHJpbmcs
IHJlZmVycmVyKSk7CiAgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fY2xpZW50LT5jcmVhdGVG
cmFtZSh1cmwsIG5hbWUsIG93bmVyRWxlbWVudCwgaGlkZVJlZmVycmVyID8gU3RyaW5nKCkgOiBy
ZWZlcnJlciwgYWxsb3dzU2Nyb2xsaW5nLCBtYXJnaW5XaWR0aCwgbWFyZ2luSGVpZ2h0KTsKIAog
ICAgIGlmICghZnJhbWUpICB7CkBAIC01MDIsOCArNTAyLDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6
c3VibWl0Rm9ybShjb25zdCBjaGFyKiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVm
UHRyPEYKIAogICAgIGZvcm1EYXRhLT5nZW5lcmF0ZUZpbGVzKG1fZnJhbWUtPnBhZ2UoKS0+Y2hy
b21lKCktPmNsaWVudCgpKTsKICAgICAKLSAgICBpZiAoIW1fb3V0Z29pbmdSZWZlcnJlci5pc0Vt
cHR5KCkpCi0gICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQUmVm
ZXJyZXIobV9vdXRnb2luZ1JlZmVycmVyKTsKKyAgICBpZiAoIW1fb3V0Z29pbmdSZWZlcnJlci5z
dHJpbmcoKS5pc0VtcHR5KCkpCisgICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KS5zZXRIVFRQUmVmZXJyZXIobV9vdXRnb2luZ1JlZmVycmVyLnN0cmluZygpKTsKIAogICAgIGlm
IChzdHJjbXAoYWN0aW9uLCAiR0VUIikgPT0gMCkKICAgICAgICAgdS5zZXRRdWVyeShmb3JtRGF0
YS0+ZmxhdHRlblRvU3RyaW5nKCkpOwpAQCAtNzc5LDE5ICs3NzksMTUgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogICAgIG1fd29ya2luZ1VSTCA9IEtVUkwoKTsKIAog
ICAgIGRvdWJsZSBkZWxheTsKLSAgICBTdHJpbmcgdXJsOworICAgIFN0cmluZyB0ZXh0OwogICAg
IGlmICghbV9kb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtX2ZyYW1l
LT5pblZpZXdTb3VyY2VNb2RlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoIXBhcnNlSFRU
UFJlZnJlc2gobV9kb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoIlJl
ZnJlc2giKSwgZmFsc2UsIGRlbGF5LCB1cmwpKQorICAgIGlmICghcGFyc2VIVFRQUmVmcmVzaCht
X2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZCgiUmVmcmVzaCIpLCBm
YWxzZSwgZGVsYXksIHRleHQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodXJsLmlzRW1w
dHkoKSkKLSAgICAgICAgdXJsID0gbV9VUkwuc3RyaW5nKCk7Ci0gICAgZWxzZQotICAgICAgICB1
cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpLnN0cmluZygpOwotCisg
ICAgVVJMU3RyaW5nIHVybCA9IHRleHQuaXNFbXB0eSgpID8gVVJMU3RyaW5nKG1fVVJMKSA6IFVS
TFN0cmluZyhtX2ZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh0ZXh0KSk7CiAgICAgbV9m
cmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVSZWRpcmVjdChkZWxheSwgdXJsKTsK
IH0KIApAQCAtODQxLDcgKzgzNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmJlZ2luKGNvbnN0IEtV
UkwmIHVybCwgYm9vbCBkaXNwYXRjaCwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICByZWYu
c2V0VXNlcihTdHJpbmcoKSk7CiAgICAgcmVmLnNldFBhc3MoU3RyaW5nKCkpOwogICAgIHJlZi5y
ZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICBtX291dGdvaW5nUmVmZXJyZXIgPSByZWYu
c3RyaW5nKCk7CisgICAgbV9vdXRnb2luZ1JlZmVycmVyID0gVVJMU3RyaW5nKHJlZik7CiAgICAg
bV9VUkwgPSB1cmw7CiAKICAgICBkb2N1bWVudC0+c2V0VVJMKG1fVVJMKTsKQEAgLTE0MzcsNyAr
MTQzMyw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlcjo6bG9hZE1lZGlhUGxheWVy
UHJveHlQbHVnaW4oTm9kZSogbm9kZSwgY29uc3QgS1VSCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFBM
VUdJTl9QUk9YWV9GT1JfVklERU8pCiAKLVN0cmluZyBGcmFtZUxvYWRlcjo6b3V0Z29pbmdSZWZl
cnJlcigpIGNvbnN0CitVUkxTdHJpbmcgRnJhbWVMb2FkZXI6Om91dGdvaW5nUmVmZXJyZXIoKSBj
b25zdAogewogICAgIHJldHVybiBtX291dGdvaW5nUmVmZXJyZXI7CiB9CkBAIC0xOTIzLDIzICsx
OTE5LDIzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoY29uc3QgRnJhbWVM
b2FkUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBsb2NrSGlzCiB7ICAgIAogICAgIEtVUkwgdXJsID0g
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKIAotICAgIFN0cmluZyByZWZlcnJlcjsK
KyAgICBVUkxTdHJpbmcgcmVmZXJyZXI7CiAgICAgU3RyaW5nIGFyZ3NSZWZlcnJlciA9IHJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCk7CiAgICAgaWYgKCFhcmdzUmVmZXJy
ZXIuaXNFbXB0eSgpKQotICAgICAgICByZWZlcnJlciA9IGFyZ3NSZWZlcnJlcjsKKyAgICAgICAg
cmVmZXJyZXIgPSBVUkxTdHJpbmcoUGFyc2VkVVJMU3RyaW5nLCBhcmdzUmVmZXJyZXIpOwogICAg
IGVsc2UKICAgICAgICAgcmVmZXJyZXIgPSBtX291dGdvaW5nUmVmZXJyZXI7CiAKICAgICBBU1NF
UlQoZnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgaWYgKFNlY3VyaXR5T3JpZ2luOjpzaG91bGRU
cmVhdFVSTEFzTG9jYWwodXJsLnN0cmluZygpKSAmJiAhaXNGZWVkV2l0aE5lc3RlZFByb3RvY29s
SW5IVFRQRmFtaWx5KHVybCkpIHsKLSAgICAgICAgaWYgKCFTZWN1cml0eU9yaWdpbjo6Y2FuTG9h
ZCh1cmwsIFN0cmluZygpLCBmcmFtZSgpLT5kb2N1bWVudCgpKSAmJiAhU2VjdXJpdHlPcmlnaW46
OmNhbkxvYWQodXJsLCByZWZlcnJlciwgMCkpIHsKKyAgICAgICAgaWYgKCFTZWN1cml0eU9yaWdp
bjo6Y2FuTG9hZCh1cmwsIFN0cmluZygpLCBmcmFtZSgpLT5kb2N1bWVudCgpKSAmJiAhU2VjdXJp
dHlPcmlnaW46OmNhbkxvYWQodXJsLCByZWZlcnJlci5zdHJpbmcoKSwgMCkpIHsKICAgICAgICAg
ICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZSwgdXJsLnN0cmlu
ZygpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChT
ZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVycmVyKHVybCwgcmVmZXJyZXIpIHx8IHJlZmVy
cmVyUG9saWN5ID09IE5vUmVmZXJyZXIpCi0gICAgICAgIHJlZmVycmVyID0gU3RyaW5nKCk7Cisg
ICAgICAgIHJlZmVycmVyID0gVVJMU3RyaW5nKCk7CiAgICAgCiAgICAgRnJhbWVMb2FkVHlwZSBs
b2FkVHlwZTsKICAgICBpZiAocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5jYWNoZVBvbGljeSgp
ID09IFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKQpAQCAtMTk1MCw5ICsxOTQ2LDkgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1
ZXN0LCBib29sIGxvY2tIaXMKICAgICAgICAgbG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlU3RhbmRh
cmQ7CiAKICAgICBpZiAocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkgPT0g
IlBPU1QiKQotICAgICAgICBsb2FkUG9zdFJlcXVlc3QocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KSwgcmVmZXJyZXIsIHJlcXVlc3QuZnJhbWVOYW1lKCksIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwg
ZXZlbnQsIGZvcm1TdGF0ZS5nZXQoKSk7CisgICAgICAgIGxvYWRQb3N0UmVxdWVzdChyZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLCByZWZlcnJlci5zdHJpbmcoKSwgcmVxdWVzdC5mcmFtZU5hbWUo
KSwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBldmVudCwgZm9ybVN0YXRlLmdldCgpKTsKICAgICBl
bHNlCi0gICAgICAgIGxvYWRVUkwocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgcmVm
ZXJyZXIsIHJlcXVlc3QuZnJhbWVOYW1lKCksIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwgZXZlbnQs
IGZvcm1TdGF0ZS5nZXQoKSk7CisgICAgICAgIGxvYWRVUkwocmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKS51cmwoKSwgcmVmZXJyZXIuc3RyaW5nKCksIHJlcXVlc3QuZnJhbWVOYW1lKCksIGxvY2tI
aXN0b3J5LCBsb2FkVHlwZSwgZXZlbnQsIGZvcm1TdGF0ZS5nZXQoKSk7CiAKICAgICAvLyBGSVhN
RTogSXQncyBwb3NzaWJsZSB0aGlzIHRhcmdldEZyYW1lIHdpbGwgbm90IGJlIHRoZSBzYW1lIGZy
YW1lIHRoYXQgd2FzIHRhcmdldGVkIGJ5IHRoZSBhY3R1YWwKICAgICAvLyBsb2FkIGlmIGZyYW1l
IG5hbWVzIGhhdmUgY2hhbmdlZC4KQEAgLTI3ODEsNyArMjc3Nyw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6Om9wZW4oQ2FjaGVkRnJhbWVCYXNlJiBjYWNoZWRGcmFtZSkKICAgICBtX25lZWRzQ2xlYXIg
PSB0cnVlOwogICAgIG1faXNDb21wbGV0ZSA9IGZhbHNlOwogICAgIG1fZGlkQ2FsbEltcGxpY2l0
Q2xvc2UgPSBmYWxzZTsKLSAgICBtX291dGdvaW5nUmVmZXJyZXIgPSB1cmwuc3RyaW5nKCk7Cisg
ICAgbV9vdXRnb2luZ1JlZmVycmVyID0gVVJMU3RyaW5nKHVybCk7CiAKICAgICBGcmFtZVZpZXcq
IHZpZXcgPSBjYWNoZWRGcmFtZS52aWV3KCk7CiAgICAgCkBAIC0zMzg1LDEwICszMzgxLDEwIEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IGluUmVxdWVzdCwgY29uc3QgU3RyaW5nCiAKIHVuc2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBT
dG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7Ci0gICAg
U3RyaW5nIHJlZmVycmVyID0gbV9vdXRnb2luZ1JlZmVycmVyOworICAgIFVSTFN0cmluZyByZWZl
cnJlciA9IG1fb3V0Z29pbmdSZWZlcnJlcjsKICAgICBpZiAoU2VjdXJpdHlPcmlnaW46OnNob3Vs
ZEhpZGVSZWZlcnJlcihyZXF1ZXN0LnVybCgpLCByZWZlcnJlcikpCi0gICAgICAgIHJlZmVycmVy
ID0gU3RyaW5nKCk7Ci0gICAgCisgICAgICAgIHJlZmVycmVyID0gVVJMU3RyaW5nKCk7CisKICAg
ICBSZXNvdXJjZVJlcXVlc3QgaW5pdGlhbFJlcXVlc3QgPSByZXF1ZXN0OwogICAgIGluaXRpYWxS
ZXF1ZXN0LnNldFRpbWVvdXRJbnRlcnZhbCgxMCk7CiAgICAgCkBAIC0zNDAzLDggKzMzOTksOCBA
QCB1bnNpZ25lZCBsb25nIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdQogICAgIGVsc2UKICAgICAgICAgaW5pdGlhbFJlcXVl
c3Quc2V0Q2FjaGVQb2xpY3kob3JpZ2luYWxSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKSk7CiAgICAg
Ci0gICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpCi0gICAgICAgIGluaXRpYWxSZXF1ZXN0LnNl
dEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CisgICAgaWYgKCFyZWZlcnJlci5zdHJpbmcoKS5pc0Vt
cHR5KCkpCisgICAgICAgIGluaXRpYWxSZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlci5z
dHJpbmcoKSk7CiAgICAgYWRkSFRUUE9yaWdpbklmTmVlZGVkKGluaXRpYWxSZXF1ZXN0LCBvdXRn
b2luZ09yaWdpbigpKTsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgKaW5kZXggZTIxODc0NC4uNmNmMjU0ZiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiVVJM
U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMTM4LDcgKzEzOSw3IEBAIHB1YmxpYzoKIAogICAgIGludCBudW1QZW5kaW5nT3JMb2Fk
aW5nUmVxdWVzdHMoYm9vbCByZWN1cnNlKSBjb25zdDsKICAgICBTdHJpbmcgcmVmZXJyZXIoKSBj
b25zdDsKLSAgICBTdHJpbmcgb3V0Z29pbmdSZWZlcnJlcigpIGNvbnN0OworICAgIFVSTFN0cmlu
ZyBvdXRnb2luZ1JlZmVycmVyKCkgY29uc3Q7CiAgICAgU3RyaW5nIG91dGdvaW5nT3JpZ2luKCkg
Y29uc3Q7CiAKICAgICBEb2N1bWVudExvYWRlciogYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSBjb25z
dDsKQEAgLTQ4MSw3ICs0ODIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zZW50UmVkaXJlY3RO
b3RpZmljYXRpb247CiAgICAgYm9vbCBtX2luU3RvcEFsbExvYWRlcnM7CiAKLSAgICBTdHJpbmcg
bV9vdXRnb2luZ1JlZmVycmVyOworICAgIFVSTFN0cmluZyBtX291dGdvaW5nUmVmZXJyZXI7CiAK
ICAgICBib29sIG1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbjsKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIv
UmVkaXJlY3RTY2hlZHVsZXIuY3BwCmluZGV4IDRiNDQ0MjIuLjYyOTYxZDkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRl
ci9SZWRpcmVjdFNjaGVkdWxlci5jcHAKQEAgLTUyLDggKzUyLDggQEAgc3RydWN0IFNjaGVkdWxl
ZFJlZGlyZWN0aW9uIDogTm9uY29weWFibGUgewogCiAgICAgY29uc3QgVHlwZSB0eXBlOwogICAg
IGNvbnN0IGRvdWJsZSBkZWxheTsKLSAgICBjb25zdCBTdHJpbmcgdXJsOwotICAgIGNvbnN0IFN0
cmluZyByZWZlcnJlcjsKKyAgICBjb25zdCBVUkxTdHJpbmcgdXJsOworICAgIGNvbnN0IFVSTFN0
cmluZyByZWZlcnJlcjsKICAgICBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lUmVxdWVzdDsK
ICAgICBjb25zdCBSZWZQdHI8RXZlbnQ+IGV2ZW50OwogICAgIGNvbnN0IFJlZlB0cjxGb3JtU3Rh
dGU+IGZvcm1TdGF0ZTsKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IFNjaGVkdWxlZFJlZGlyZWN0
aW9uIDogTm9uY29weWFibGUgewogICAgIGNvbnN0IGJvb2wgd2FzRHVyaW5nTG9hZDsKICAgICBi
b29sIHRvbGRDbGllbnQ7CiAKLSAgICBTY2hlZHVsZWRSZWRpcmVjdGlvbihkb3VibGUgZGVsYXks
IGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2Fy
ZExpc3QsIGJvb2wgd2FzVXNlckdlc3R1cmUsIGJvb2wgcmVmcmVzaCkKKyAgICBTY2hlZHVsZWRS
ZWRpcmVjdGlvbihkb3VibGUgZGVsYXksIGNvbnN0IFVSTFN0cmluZyYgdXJsLCBib29sIGxvY2tI
aXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzVXNlckdlc3R1cmUsIGJv
b2wgcmVmcmVzaCkKICAgICAgICAgOiB0eXBlKHJlZGlyZWN0aW9uKQogICAgICAgICAsIGRlbGF5
KGRlbGF5KQogICAgICAgICAsIHVybCh1cmwpCkBAIC03NywxMCArNzcsMTAgQEAgc3RydWN0IFNj
aGVkdWxlZFJlZGlyZWN0aW9uIDogTm9uY29weWFibGUgewogICAgICAgICAsIHdhc0R1cmluZ0xv
YWQoZmFsc2UpCiAgICAgICAgICwgdG9sZENsaWVudChmYWxzZSkKICAgICB7Ci0gICAgICAgIEFT
U0VSVCghdXJsLmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVCghdXJsLnN0cmluZygpLmlzRW1w
dHkoKSk7CiAgICAgfQogCi0gICAgU2NoZWR1bGVkUmVkaXJlY3Rpb24oY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSwgYm9vbCByZWZyZXNoLCBib29sIGR1
cmluZ0xvYWQpCisgICAgU2NoZWR1bGVkUmVkaXJlY3Rpb24oY29uc3QgVVJMU3RyaW5nJiB1cmws
IGNvbnN0IFVSTFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSwgYm9vbCByZWZyZXNoLCBib29sIGR1
cmluZ0xvYWQpCiAgICAgICAgIDogdHlwZShsb2NhdGlvbkNoYW5nZSkKICAgICAgICAgLCBkZWxh
eSgwKQogICAgICAgICAsIHVybCh1cmwpCkBAIC05Myw3ICs5Myw3IEBAIHN0cnVjdCBTY2hlZHVs
ZWRSZWRpcmVjdGlvbiA6IE5vbmNvcHlhYmxlIHsKICAgICAgICAgLCB3YXNEdXJpbmdMb2FkKGR1
cmluZ0xvYWQpCiAgICAgICAgICwgdG9sZENsaWVudChmYWxzZSkKICAgICB7Ci0gICAgICAgIEFT
U0VSVCghdXJsLmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVCghdXJsLnN0cmluZygpLmlzRW1w
dHkoKSk7CiAgICAgfQogCiAgICAgZXhwbGljaXQgU2NoZWR1bGVkUmVkaXJlY3Rpb24oaW50IGhp
c3RvcnlOYXZpZ2F0aW9uU3RlcHMpCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBSZWRpcmVjdFNj
aGVkdWxlcjo6Y2xlYXIoKQogICAgIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24uY2xlYXIoKTsKIH0K
IAotdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdChkb3VibGUgZGVsYXks
IGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWRp
cmVjdChkb3VibGUgZGVsYXksIGNvbnN0IFVSTFN0cmluZyYgdXJsKQogewogICAgIGlmIChkZWxh
eSA8IDAgfHwgZGVsYXkgPiBJTlRfTUFYIC8gMTAwMCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTU5
LDcgKzE1OSw3IEBAIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QoZG91
YmxlIGRlbGF5LCBjb25zdCBTdHJpbmcmIHVybCkKICAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHVybC5pc0VtcHR5KCkpCisgICAgaWYgKHVybC5z
dHJpbmcoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIHdhbnQgYSBu
ZXcgaGlzdG9yeSBpdGVtIGlmIHRoZSByZWZyZXNoIHRpbWVvdXQgaXMgPiAxIHNlY29uZC4KQEAg
LTE4MSwxMiArMTgxLDEyIEBAIGJvb2wgUmVkaXJlY3RTY2hlZHVsZXI6Om11c3RMb2NrQmFja0Zv
cndhcmRMaXN0KEZyYW1lKiB0YXJnZXRGcmFtZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9j
a0JhY2tGb3J3YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSkKK3ZvaWQgUmVkaXJlY3RTY2hl
ZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoY29uc3QgVVJMU3RyaW5nJiB1cmwsIGNvbnN0
IFVSTFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3
YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSkKIHsKICAgICBpZiAoIW1fZnJhbWUtPnBhZ2Uo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHVybC5pc0VtcHR5KCkpCisgICAgaWYgKHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGxvY2tCYWNrRm9y
d2FyZExpc3QgPSBsb2NrQmFja0ZvcndhcmRMaXN0IHx8IG11c3RMb2NrQmFja0ZvcndhcmRMaXN0
KG1fZnJhbWUpOwpAQCAtMTk1LDkgKzE5NSw5IEBAIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNj
aGVkdWxlTG9jYXRpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAg
ICAKICAgICAvLyBJZiB0aGUgVVJMIHdlJ3JlIGdvaW5nIHRvIG5hdmlnYXRlIHRvIGlzIHRoZSBz
YW1lIGFzIHRoZSBjdXJyZW50IG9uZSwgZXhjZXB0IGZvciB0aGUKICAgICAvLyBmcmFnbWVudCBw
YXJ0LCB3ZSBkb24ndCBuZWVkIHRvIHNjaGVkdWxlIHRoZSBsb2NhdGlvbiBjaGFuZ2UuCi0gICAg
S1VSTCBwYXJzZWRVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOworICAgIEtVUkwgcGFyc2VkVVJM
KFBhcnNlZFVSTFN0cmluZywgdXJsLnN0cmluZygpKTsKICAgICBpZiAocGFyc2VkVVJMLmhhc0Zy
YWdtZW50SWRlbnRpZmllcigpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobG9h
ZGVyLT51cmwoKSwgcGFyc2VkVVJMKSkgewotICAgICAgICBsb2FkZXItPmNoYW5nZUxvY2F0aW9u
KGxvYWRlci0+Y29tcGxldGVVUkwodXJsKSwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFj
a0ZvcndhcmRMaXN0LCB3YXNVc2VyR2VzdHVyZSk7CisgICAgICAgIGxvYWRlci0+Y2hhbmdlTG9j
YXRpb24obG9hZGVyLT5jb21wbGV0ZVVSTCh1cmwuc3RyaW5nKCkpLCByZWZlcnJlci5zdHJpbmco
KSwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHdhc1VzZXJHZXN0dXJlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgUmVkaXJlY3RT
Y2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaChib29sIHdhc1VzZXJHZXN0dXJlKQogICAgIGlmICh1
cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzY2hlZHVsZShuZXcgU2NoZWR1
bGVkUmVkaXJlY3Rpb24odXJsLnN0cmluZygpLCBtX2ZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdS
ZWZlcnJlcigpLCB0cnVlLCB0cnVlLCB3YXNVc2VyR2VzdHVyZSwgdHJ1ZSwgZmFsc2UpKTsKKyAg
ICBzY2hlZHVsZShuZXcgU2NoZWR1bGVkUmVkaXJlY3Rpb24oVVJMU3RyaW5nKHVybCksIG1fZnJh
bWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCksIHRydWUsIHRydWUsIHdhc1VzZXJHZXN0
dXJlLCB0cnVlLCBmYWxzZSkpOwogfQogCiBib29sIFJlZGlyZWN0U2NoZWR1bGVyOjpsb2NhdGlv
bkNoYW5nZVBlbmRpbmcoKQpAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgUmVkaXJlY3RTY2hlZHVs
ZXI6OnRpbWVyRmlyZWQoVGltZXI8UmVkaXJlY3RTY2hlZHVsZXI+KikKICAgICBzd2l0Y2ggKHJl
ZGlyZWN0aW9uLT50eXBlKSB7CiAgICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJlY3Rpb246OnJl
ZGlyZWN0aW9uOgogICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpsb2NhdGlvbkNo
YW5nZToKLSAgICAgICAgICAgIGxvYWRlci0+Y2hhbmdlTG9jYXRpb24oS1VSTChQYXJzZWRVUkxT
dHJpbmcsIHJlZGlyZWN0aW9uLT51cmwpLCByZWRpcmVjdGlvbi0+cmVmZXJyZXIsCisgICAgICAg
ICAgICBsb2FkZXItPmNoYW5nZUxvY2F0aW9uKHJlZGlyZWN0aW9uLT51cmwudG9LVVJMKCksIHJl
ZGlyZWN0aW9uLT5yZWZlcnJlci5zdHJpbmcoKSwKICAgICAgICAgICAgICAgICByZWRpcmVjdGlv
bi0+bG9ja0hpc3RvcnksIHJlZGlyZWN0aW9uLT5sb2NrQmFja0ZvcndhcmRMaXN0LCByZWRpcmVj
dGlvbi0+d2FzVXNlckdlc3R1cmUsIHJlZGlyZWN0aW9uLT53YXNSZWZyZXNoKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6aGlzdG9yeU5h
dmlnYXRpb246CkBAIC0zNzMsNyArMzczLDcgQEAgdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c3Rh
cnRUaW1lcigpCiAgICAgICAgICAgICBpZiAobV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+dG9sZENs
aWVudCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtX3NjaGVkdWxlZFJl
ZGlyZWN0aW9uLT50b2xkQ2xpZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgIGxvYWRlci0+Y2xpZW50
UmVkaXJlY3RlZChLVVJMKFBhcnNlZFVSTFN0cmluZywgbV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+
dXJsKSwKKyAgICAgICAgICAgIGxvYWRlci0+Y2xpZW50UmVkaXJlY3RlZChtX3NjaGVkdWxlZFJl
ZGlyZWN0aW9uLT51cmwudG9LVVJMKCksCiAgICAgICAgICAgICAgICAgbV9zY2hlZHVsZWRSZWRp
cmVjdGlvbi0+ZGVsYXksCiAgICAgICAgICAgICAgICAgY3VycmVudFRpbWUoKSArIG1fdGltZXIu
bmV4dEZpcmVJbnRlcnZhbCgpLAogICAgICAgICAgICAgICAgIG1fc2NoZWR1bGVkUmVkaXJlY3Rp
b24tPmxvY2tCYWNrRm9yd2FyZExpc3QpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUmVk
aXJlY3RTY2hlZHVsZXIuaCBiL1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmgKaW5k
ZXggMDA1YTE3My4uN2I0NGM1MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RT
Y2hlZHVsZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5oCkBAIC0z
Myw2ICszMyw3IEBACiAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisj
aW5jbHVkZSAiVVJMU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTU0LDgg
KzU1LDggQEAgcHVibGljOgogICAgIGJvb2wgcmVkaXJlY3RTY2hlZHVsZWREdXJpbmdMb2FkKCk7
CiAgICAgYm9vbCBsb2NhdGlvbkNoYW5nZVBlbmRpbmcoKTsKIAotICAgIHZvaWQgc2NoZWR1bGVS
ZWRpcmVjdChkb3VibGUgZGVsYXksIGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICB2b2lkIHNjaGVk
dWxlTG9jYXRpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGJvb2wgbG9ja0hpc3RvcnkgPSB0cnVlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QgPSB0
cnVlLCBib29sIHVzZXJHZXN0dXJlID0gZmFsc2UpOworICAgIHZvaWQgc2NoZWR1bGVSZWRpcmVj
dChkb3VibGUgZGVsYXksIGNvbnN0IFVSTFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIHNjaGVkdWxl
TG9jYXRpb25DaGFuZ2UoY29uc3QgVVJMU3RyaW5nJiB1cmwsIGNvbnN0IFVSTFN0cmluZyYgcmVm
ZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnkgPSB0cnVlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3Qg
PSB0cnVlLCBib29sIHVzZXJHZXN0dXJlID0gZmFsc2UpOwogICAgIHZvaWQgc2NoZWR1bGVGb3Jt
U3VibWlzc2lvbihjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgYm9vbCBsb2NrSGlzdG9yeSwgUGFz
c1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7CiAgICAgdm9pZCBzY2hlZHVs
ZVJlZnJlc2goYm9vbCB1c2VyR2VzdHVyZSA9IGZhbHNlKTsKICAgICB2b2lkIHNjaGVkdWxlSGlz
dG9yeU5hdmlnYXRpb24oaW50IHN0ZXBzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cAppbmRleCBmOTJhMDc0Li45MTU0Nzc4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC04Miw3ICs4Miw3IEBAIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJl
c291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBTdWJyZXNvdXJjCiAgICAgaWYgKFNl
Y3VyaXR5T3JpZ2luOjpzaG91bGRIaWRlUmVmZXJyZXIocmVxdWVzdC51cmwoKSwgZmwtPm91dGdv
aW5nUmVmZXJyZXIoKSkpCiAgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsK
ICAgICBlbHNlIGlmICghcmVxdWVzdC5odHRwUmVmZXJyZXIoKSkKLSAgICAgICAgbmV3UmVxdWVz
dC5zZXRIVFRQUmVmZXJyZXIoZmwtPm91dGdvaW5nUmVmZXJyZXIoKSk7CisgICAgICAgIG5ld1Jl
cXVlc3Quc2V0SFRUUFJlZmVycmVyKGZsLT5vdXRnb2luZ1JlZmVycmVyKCkuc3RyaW5nKCkpOwog
ICAgIEZyYW1lTG9hZGVyOjphZGRIVFRQT3JpZ2luSWZOZWVkZWQobmV3UmVxdWVzdCwgZmwtPm91
dGdvaW5nT3JpZ2luKCkpOwogCiAgICAgLy8gVXNlIHRoZSBvcmlnaW5hbCByZXF1ZXN0J3MgY2Fj
aGUgcG9saWN5IGZvciB0d28gcmVhc29uczoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDUyNjA0M2IuLmE4YTNjZDkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
KysrIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApA
QCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNo
ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHBhc3NlZE1hbmlmZXN0CiAgICAgICAgICAgICAv
LyBSZXN0YXJ0IHRoZSBjdXJyZW50IG5hdmlnYXRpb24gZnJvbSB0aGUgdG9wIG9mIHRoZSBuYXZp
Z2F0aW9uIGFsZ29yaXRobSwgdW5kb2luZyBhbnkgY2hhbmdlcyB0aGF0IHdlcmUgbWFkZQogICAg
ICAgICAgICAgLy8gYXMgcGFydCBvZiB0aGUgaW5pdGlhbCBsb2FkLgogICAgICAgICAgICAgLy8g
VGhlIG5hdmlnYXRpb24gd2lsbCBub3QgcmVzdWx0IGluIHRoZSBzYW1lIHJlc291cmNlIGJlaW5n
IGxvYWRlZCwgYmVjYXVzZSAiZm9yZWlnbiIgZW50cmllcyBhcmUgbmV2ZXIgcGlja2VkIGR1cmlu
ZyBuYXZpZ2F0aW9uLgotICAgICAgICAgICAgZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNj
aGVkdWxlTG9jYXRpb25DaGFuZ2UoZG9jdW1lbnRMb2FkZXItPnVybCgpLCBmcmFtZS0+bG9hZGVy
KCktPnJlZmVycmVyKCksIHRydWUpOworICAgICAgICAgICAgZnJhbWUtPnJlZGlyZWN0U2NoZWR1
bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoVVJMU3RyaW5nKGRvY3VtZW50TG9hZGVyLT51
cmwoKSksIFVSTFN0cmluZyhQYXJzZWRVUkxTdHJpbmcsIGZyYW1lLT5sb2FkZXIoKS0+cmVmZXJy
ZXIoKSksIHRydWUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IGQzODRiMDIuLjFiMjc0MmIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1dl
YkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAg
c3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cmxUb0xvYWQsIEZyYW1lKiBm
cmFtZSkKIHsKICAgICBpZiAoUGFnZSogb2xkUGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKICAgICAg
ICAgV2luZG93RmVhdHVyZXMgZmVhdHVyZXM7Ci0gICAgICAgIGlmIChQYWdlKiBuZXdQYWdlID0g
b2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhmcmFtZSwgRnJhbWVMb2FkUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QodXJsVG9Mb2FkLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJy
ZXIoKSkpLCBmZWF0dXJlcykpCisgICAgICAgIGlmIChQYWdlKiBuZXdQYWdlID0gb2xkUGFnZS0+
Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhmcmFtZSwgRnJhbWVMb2FkUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QodXJsVG9Mb2FkLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKS5zdHJp
bmcoKSkpLCBmZWF0dXJlcykpCiAgICAgICAgICAgICBuZXdQYWdlLT5jaHJvbWUoKS0+c2hvdygp
OwogICAgIH0KIH0KQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxl
cjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rOgogICAgICAgICBp
ZiAoRnJhbWUqIHRhcmdldEZyYW1lID0gcmVzdWx0LnRhcmdldEZyYW1lKCkpCi0gICAgICAgICAg
ICB0YXJnZXRGcmFtZS0+bG9hZGVyKCktPmxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QocmVzdWx0LmFic29sdXRlTGlua1VSTCgpLCBmcmFtZS0+bG9hZGVy
KCktPm91dGdvaW5nUmVmZXJyZXIoKSkpLCBmYWxzZSwgZmFsc2UsIDAsIDAsIFNlbmRSZWZlcnJl
cik7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCktPmxvYWRGcmFtZVJlcXVlc3Qo
RnJhbWVMb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QocmVzdWx0LmFic29sdXRlTGlua1VSTCgp
LCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKS5zdHJpbmcoKSkpLCBmYWxzZSwg
ZmFsc2UsIDAsIDAsIFNlbmRSZWZlcnJlcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG9w
ZW5OZXdXaW5kb3cocmVzdWx0LmFic29sdXRlTGlua1VSTCgpLCBmcmFtZSk7CiAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggYzBiM2UyMi4uNDJlZmFlNyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiT3JpZ2luQWNjZXNzRW50cnkuaCIKKyNp
bmNsdWRlICJVUkxTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU4MCwxMCArNTgxLDEwIEBAIGJvb2wgU2VjdXJpdHlPcmln
aW46OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiAg
ICAgcmV0dXJuIHNlY3VyZVNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCi1ib29sIFNl
Y3VyaXR5T3JpZ2luOjpzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyKQorYm9vbCBTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVycmVy
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVVJMU3RyaW5nJiByZWZlcnJlcikKIHsKLSAgICBib29s
IHJlZmVycmVySXNTZWN1cmVVUkwgPSBwcm90b2NvbElzKHJlZmVycmVyLCAiaHR0cHMiKTsKLSAg
ICBib29sIHJlZmVycmVySXNXZWJVUkwgPSByZWZlcnJlcklzU2VjdXJlVVJMIHx8IHByb3RvY29s
SXMocmVmZXJyZXIsICJodHRwIik7CisgICAgYm9vbCByZWZlcnJlcklzU2VjdXJlVVJMID0gcHJv
dG9jb2xJcyhyZWZlcnJlci5zdHJpbmcoKSwgImh0dHBzIik7CisgICAgYm9vbCByZWZlcnJlcklz
V2ViVVJMID0gcmVmZXJyZXJJc1NlY3VyZVVSTCB8fCBwcm90b2NvbElzKHJlZmVycmVyLnN0cmlu
ZygpLCAiaHR0cCIpOwogCiAgICAgaWYgKCFyZWZlcnJlcklzV2ViVVJMKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKaW5kZXggMTFjMjEzZS4uMzk5ODlmYSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKKysrIGIvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgdHlwZWRlZiBIYXNoU2V0PFN0cmluZywg
Q2FzZUZvbGRpbmdIYXNoPiBVUkxTY2hlbWVzTWFwOwogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IEtVUkw7CitjbGFzcyBVUkxTdHJpbmc7CiAKIGNsYXNzIFNlY3VyaXR5T3JpZ2luIDogcHVibGlj
IFRocmVhZFNhZmVTaGFyZWQ8U2VjdXJpdHlPcmlnaW4+IHsKIHB1YmxpYzoKQEAgLTE4MCw3ICsx
ODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3Vy
ZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdFVSTFNjaGVtZUFz
U2VjdXJlKGNvbnN0IFN0cmluZyYpOwogCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkSGlkZVJlZmVy
cmVyKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKKyAgICBzdGF0aWMgYm9v
bCBzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VSTCYsIGNvbnN0IFVSTFN0cmluZyYgcmVmZXJy
ZXIpOwogCiAgICAgZW51bSBMb2NhbExvYWRQb2xpY3kgewogICAgICAgICBBbGxvd0xvY2FsTG9h
ZHNGb3JBbGwsIC8vIE5vIHJlc3RyaWN0aW9uIG9uIGxvY2FsIGxvYWRzLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwIGIvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3Bw
CmluZGV4IDA5NGYyMDAuLmYzMWYxN2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9YU1NBdWRp
dG9yLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAKQEAgLTMyMyw3ICszMjMs
NyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbmRJblJlcXVlc3QoY29uc3QgRmluZFRhc2smIHRhc2sp
IGNvbnN0CiAgICAgY2FzZSBYU1NQcm90ZWN0aW9uQmxvY2tFbmFibGVkOgogICAgICAgICBpZiAo
YmxvY2tGcmFtZSkgewogICAgICAgICAgICAgYmxvY2tGcmFtZS0+bG9hZGVyKCktPnN0b3BBbGxM
b2FkZXJzKCk7Ci0gICAgICAgICAgICBibG9ja0ZyYW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5z
Y2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGJsYW5rVVJMKCksIFN0cmluZygpKTsKKyAgICAgICAgICAg
IGJsb2NrRnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2Uo
VVJMU3RyaW5nKGJsYW5rVVJMKCkpLCBVUkxTdHJpbmcoKSk7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vVVJMU3Ry
aW5nLmggYi9XZWJDb3JlL3BsYXRmb3JtL1VSTFN0cmluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjhhMTEwZjcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL1VSTFN0cmluZy5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQWRhbSBCYXJ0aC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBVUkxT
dHJpbmdfaAorI2RlZmluZSBVUkxTdHJpbmdfaAorCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVVJM
U3RyaW5nIHsKK3B1YmxpYzoKKyAgICBVUkxTdHJpbmcoKSA6IG1faXNWYWxpZChmYWxzZSkgeyB9
CisgICAgZXhwbGljaXQgVVJMU3RyaW5nKGNvbnN0IEtVUkwmIHVybCkgeyBpbml0KHVybCk7IH0K
KworICAgIFVSTFN0cmluZyhQYXJzZWRVUkxTdHJpbmdUYWcsIGNvbnN0IFN0cmluZyYgc3RyaW5n
KSB7IGluaXQoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHN0cmluZykpOyB9CisKKyAgICBjb25zdCBT
dHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZhbGlkOyB9CisKKyAgICBLVVJMIHRvS1VSTCgpIGNv
bnN0IHsgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3N0cmluZyk7IH0KKworcHJpdmF0
ZToKKyAgICB2b2lkIGluaXQoY29uc3QgS1VSTCYgdXJsKQorICAgIHsKKyAgICAgICAgbV9zdHJp
bmcgPSB1cmwuc3RyaW5nKCk7CisgICAgICAgIG1faXNWYWxpZCA9IHVybC5pc1ZhbGlkKCk7Cisg
ICAgfQorCisgICAgU3RyaW5nIG1fc3RyaW5nOworICAgIGJvb2wgbV9pc1ZhbGlkIDogMTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVSTFN0cmluZ19oCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3dtbC9XTUxHb0VsZW1lbnQuY3BwIGIvV2ViQ29yZS93bWwvV01MR29F
bGVtZW50LmNwcAppbmRleCA4MDc2MjA3Li5kNWZhNmZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dt
bC9XTUxHb0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvd21sL1dNTEdvRWxlbWVudC5jcHAKQEAg
LTEyMiw3ICsxMjIsNyBAQCB2b2lkIFdNTEdvRWxlbWVudDo6ZXhlY3V0ZVRhc2soKQogICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAKICAgICBpZiAoZ2V0QXR0cmlidXRlKHNlbmRy
ZWZlcmVyQXR0cikgPT0gInRydWUiKQotICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihs
b2FkZXItPm91dGdvaW5nUmVmZXJyZXIoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVy
cmVyKGxvYWRlci0+b3V0Z29pbmdSZWZlcnJlcigpLnN0cmluZygpKTsKIAogICAgIFN0cmluZyBj
YWNoZUNvbnRyb2wgPSBnZXRBdHRyaWJ1dGUoY2FjaGVfY29udHJvbEF0dHIpOwogCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCA0NTU5OTFiLi5hZTkzNDFjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAxMC0wMy0yOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYWNoIFJlZGlyZWN0U2NoZWR1
bGVyIGFib3V0IFVSTFN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzY3OTQKKworICAgICAgICBTcGlkZXIgVVJMU3RyaW5nIGNoYW5nZXMgdG8g
dGhlc2UgbG9jYXRpb25zLgorCisgICAgICAgICogc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzZWxlY3RDYWNoZVdp
dGhNYW5pZmVzdCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lSW1wbDo6c2V0UmVmZXJyZXJGb3JSZXF1ZXN0KToKKyAgICAgICAgKiBz
cmMvV2ViU2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZWN1cml0eVBv
bGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKToKKwogMjAxMC0wMy0yOSAgSm9jaGVuIEVpc2luZ2Vy
ICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNo
ZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4
IDVmYTRhNjYuLjE2NDlkY2UgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6c2VsZWN0Q2FjaGVXaXRoTWFuaWZlc3QoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpCiAgICAg
ICAgICAgICAvLyBzZWUgV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNo
ZSgpCiAgICAgICAgICAgICBjb25zdCBLVVJMJiBkb2NVUkwgPSBtX2RvY3VtZW50TG9hZGVyLT5m
cmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICAgICAgICAgIFN0cmluZyByZWZlcnJlciA9
IG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lTG9hZGVyKCktPnJlZmVycmVyKCk7Ci0gICAgICAgICAg
ICBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hlZHVs
ZUxvY2F0aW9uQ2hhbmdlKGRvY1VSTCwgcmVmZXJyZXIpOworICAgICAgICAgICAgbV9kb2N1bWVu
dExvYWRlci0+ZnJhbWUoKS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNo
YW5nZShVUkxTdHJpbmcoZG9jVVJMKSwgVVJMU3RyaW5nKFBhcnNlZFVSTFN0cmluZywgcmVmZXJy
ZXIpKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNw
cAppbmRleCA5ODJiNDM0Li5mMTlmYWJjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
Y3BwCkBAIC05NzUsMTQgKzk3NSwxNCBAQCBib29sIFdlYkZyYW1lSW1wbDo6aXNWaWV3U291cmNl
TW9kZUVuYWJsZWQoKSBjb25zdAogCiB2b2lkIFdlYkZyYW1lSW1wbDo6c2V0UmVmZXJyZXJGb3JS
ZXF1ZXN0KAogICAgIFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYlVSTCYgcmVmZXJy
ZXJVUkwpIHsKLSAgICBTdHJpbmcgcmVmZXJyZXI7CisgICAgVVJMU3RyaW5nIHJlZmVycmVyOwog
ICAgIGlmIChyZWZlcnJlclVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJlZmVycmVyID0gbV9mcmFt
ZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKTsKICAgICBlbHNlCi0gICAgICAgIHJlZmVy
cmVyID0gcmVmZXJyZXJVUkwuc3BlYygpLnV0ZjE2KCk7CisgICAgICAgIHJlZmVycmVyID0gVVJM
U3RyaW5nKHJlZmVycmVyVVJMKTsKICAgICBpZiAoU2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVS
ZWZlcnJlcihyZXF1ZXN0LnVybCgpLCByZWZlcnJlcikpCiAgICAgICAgIHJldHVybjsKLSAgICBy
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChXZWJTdHJpbmc6OmZyb21VVEY4KCJSZWZlcmVyIiks
IHJlZmVycmVyKTsKKyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChXZWJTdHJpbmc6OmZy
b21VVEY4KCJSZWZlcmVyIiksIHJlZmVycmVyLnN0cmluZygpKTsKIH0KIAogdm9pZCBXZWJGcmFt
ZUltcGw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QpCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlY3VyaXR5UG9saWN5LmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDVkNDY3NGUuLmYw
MDRjMTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VjdXJpdHlQb2xpY3ku
Y3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC03
Myw3ICs3Myw3IEBAIHZvaWQgV2ViU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hp
dGVMaXN0cygpCiAKIGJvb2wgV2ViU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihj
b25zdCBXZWJVUkwmIHVybCwgY29uc3QgV2ViU3RyaW5nJiByZWZlcnJlcikKIHsKLSAgICByZXR1
cm4gU2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcih1cmwsIHJlZmVycmVyKTsKKyAg
ICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcih1cmwsIFVSTFN0cmlu
ZyhQYXJzZWRVUkxTdHJpbmcsIHJlZmVycmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwppbmRleCBlN2JmNTg1Li44NTZiM2JjIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEwLTAzLTI5
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVhY2ggUmVkaXJlY3RTY2hlZHVsZXIgYWJvdXQg
VVJMU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNjc5NAorCisgICAgICAgIFNwaWRlciBVUkxTdHJpbmcgY2hhbmdlcyB0byB0aGVzZSBsb2Nh
dGlvbnMuCisKKyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW06
CisgICAgICAgICgtW1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgcmVxdWVzdFdpdGhVUkxDU3Ry
aW5nOl0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAg
ICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgbG9hZFN0cmVhbV0pOgorCiAyMDEwLTAzLTI2
ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMv
UGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvV2ViS2l0L21hYy9QbHVnaW5z
L1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggYmQzZWIzNC4uMTc2NGY0ZiAxMDA2
NDQKLS0tIGEvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0K
KysrIGIvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAg
LTIxNyw3ICsyMTcsNyBAQCBTdHJpbmcgV2ViSGFsdGFibGVQbHVnaW46OnBsdWdpbk5hbWUoKSBj
b25zdAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUoW3NlbGYgd2ViRnJhbWVdKTsKICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIFtyZXF1ZXN0IF93ZWJfc2V0SFRUUFJl
ZmVycmVyOmZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpXTsKKyAgICBbcmVxdWVz
dCBfd2ViX3NldEhUVFBSZWZlcnJlcjpmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIo
KS5zdHJpbmcoKV07CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9XZWJLaXQvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDkxNzgwZDIuLjdmYjc5MTQgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIv
V2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTEzNyw3ICsx
MTM3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldE5QUmVjdChjb25zdCBOU1JlY3QmIG5yLCBO
UFJlY3QmIG5wcikKICAgICAvLyBDaGVjayBmb3IgdGhpcyBhbmQgZG9uJ3Qgc3RhcnQgYSBsb2Fk
IGluIHRoaXMgY2FzZS4KICAgICBpZiAoX3NvdXJjZVVSTCAmJiAhW19zb3VyY2VVUkwuZ2V0KCkg
X3dlYl9pc0VtcHR5XSkgewogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0g
W05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6X3NvdXJjZVVSTC5nZXQoKV07Ci0g
ICAgICAgIFtyZXF1ZXN0IF93ZWJfc2V0SFRUUFJlZmVycmVyOmNvcmUoW3NlbGYgd2ViRnJhbWVd
KS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKV07CisgICAgICAgIFtyZXF1ZXN0IF93ZWJf
c2V0SFRUUFJlZmVycmVyOmNvcmUoW3NlbGYgd2ViRnJhbWVdKS0+bG9hZGVyKCktPm91dGdvaW5n
UmVmZXJyZXIoKS5zdHJpbmcoKV07CiAgICAgICAgIFtzZWxmIGxvYWRSZXF1ZXN0OnJlcXVlc3Qg
aW5UYXJnZXQ6bmlsIHdpdGhOb3RpZnlEYXRhOm5pbCBzZW5kTm90aWZpY2F0aW9uOk5PXTsKICAg
ICB9IAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwIGIvV2ViS2l0
L3F0L0FwaS9xd2ViZnJhbWUuY3BwCmluZGV4IDNiYmNmZTIuLjhkMzA3ZjcgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFt
ZS5jcHAKQEAgLTgyNSw4ICs4MjUsOCBAQCBRVXJsIFFXZWJGcmFtZTo6cmVxdWVzdGVkVXJsKCkg
Y29uc3QKICAgICAgICAgfHwgIWxvYWRlckNsaWVudC0+bV9sb2FkRXJyb3IuaXNOdWxsKCkpIHsK
ICAgICAgICAgaWYgKCFsb2FkZXJDbGllbnQtPm1fbG9hZEVycm9yLmZhaWxpbmdVUkwoKS5pc051
bGwoKSkKICAgICAgICAgICAgIHJldHVybiBRVXJsKGxvYWRlckNsaWVudC0+bV9sb2FkRXJyb3Iu
ZmFpbGluZ1VSTCgpKTsKLSAgICAgICAgZWxzZSBpZiAoIWxvYWRlci0+b3V0Z29pbmdSZWZlcnJl
cigpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBRVXJsKGxvYWRlci0+b3V0Z29pbmdS
ZWZlcnJlcigpKTsKKyAgICAgICAgZWxzZSBpZiAoIWxvYWRlci0+b3V0Z29pbmdSZWZlcnJlcigp
LnN0cmluZygpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBRVXJsKGxvYWRlci0+b3V0
Z29pbmdSZWZlcnJlcigpLnN0cmluZygpKTsKICAgICB9CiAKICAgICByZXR1cm4gbG9hZGVyLT5v
cmlnaW5hbFJlcXVlc3QoKS51cmwoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKaW5kZXggZWRmZWNlZS4uMTVmM2Nh
YyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5jcHAKQEAgLTIwNDMsNyArMjA0Myw3IEBAIFFPYmplY3QgKlFXZWJQYWdl
OjpjcmVhdGVQbHVnaW4oY29uc3QgUVN0cmluZyAmY2xhc3NpZCwgY29uc3QgUVVybCAmdXJsLCBj
b25zdCBRCiAKIHN0YXRpYyBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVl
c3QoY29uc3QgUVVybCAmdXJsLCBXZWJDb3JlOjpGcmFtZSAqZnJhbWUpCiB7Ci0gICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJyKHVybCwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVy
cmVyKCkpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBycih1cmwsIGZyYW1lLT5sb2Fk
ZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLnN0cmluZygpKTsKICAgICByZXR1cm4gV2ViQ29yZTo6
RnJhbWVMb2FkUmVxdWVzdChycik7CiB9CiAKQEAgLTIxMDksMTAgKzIxMDksMTAgQEAgdm9pZCBR
V2ViUGFnZTo6dHJpZ2dlckFjdGlvbihXZWJBY3Rpb24gYWN0aW9uLCBib29sKQogICAgICAgICAg
ICAgb3Blbk5ld1dpbmRvdyhkLT5oaXRUZXN0UmVzdWx0LmltYWdlVXJsKCksIGZyYW1lKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERvd25sb2FkSW1hZ2VUb0Rpc2s6Ci0gICAg
ICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5zdGFydERvd25sb2FkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdChkLT5oaXRUZXN0UmVzdWx0LmltYWdlVXJsKCksIGZyYW1lLT5sb2Fk
ZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSk7CisgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkt
PmNsaWVudCgpLT5zdGFydERvd25sb2FkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdChkLT5oaXRU
ZXN0UmVzdWx0LmltYWdlVXJsKCksIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigp
LnN0cmluZygpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEb3dubG9hZExp
bmtUb0Rpc2s6Ci0gICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5zdGFydERv
d25sb2FkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdChkLT5oaXRUZXN0UmVzdWx0LmxpbmtVcmwo
KSwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpKTsKKyAgICAgICAgICAgIGZy
YW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnN0YXJ0RG93bmxvYWQoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0KGQtPmhpdFRlc3RSZXN1bHQubGlua1VybCgpLCBmcmFtZS0+bG9hZGVyKCktPm91dGdv
aW5nUmVmZXJyZXIoKS5zdHJpbmcoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAjaWZuZGVmIFFU
X05PX0NMSVBCT0FSRAogICAgICAgICBjYXNlIENvcHlJbWFnZVRvQ2xpcGJvYXJkOgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggNGJh
ZGQ1Zi4uMjhlNDhlYiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJL
aXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDMtMjkgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZWFjaCBSZWRpcmVjdFNjaGVkdWxlciBhYm91dCBVUkxTdHJpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2Nzk0CisKKyAg
ICAgICAgU3BpZGVyIFVSTFN0cmluZyBjaGFuZ2VzIHRvIHRoZXNlIGxvY2F0aW9ucy4KKworICAg
ICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpyZXF1ZXN0ZWRV
cmwpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChmcmFtZUxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKToKKwogMjAxMC0wMy0yOSAg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCg==
</data>
<flag name="review"
          id="35373"
          type_id="1"
          status="-"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="35376"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>