<?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>109295</bug_id>
          
          <creation_ts>2013-02-08 06:09:13 -0800</creation_ts>
          <short_desc>Use IGNORE_EXCEPTION for initialized, but unused, ExceptionCodes.</short_desc>
          <delta_ts>2013-02-09 11:20:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>108771</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mike West">mkwst</reporter>
          <assigned_to name="Mike West">mkwst</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>alecflett</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>darin</cc>
    
    <cc>dgrogan</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fmalita</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jochen</cc>
    
    <cc>jsbell</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>828500</commentid>
    <comment_count>0</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-08 06:09:13 -0800</bug_when>
    <thetext>Use IGNORE_EXCEPTION for Editor and TextCheckingHelper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828509</commentid>
    <comment_count>1</comment_count>
      <attachid>187305</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-08 06:20:02 -0800</bug_when>
    <thetext>Created attachment 187305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828510</commentid>
    <comment_count>2</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-08 06:20:31 -0800</bug_when>
    <thetext>Waiting until 108771 lands before throwing this to the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828560</commentid>
    <comment_count>3</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-08 07:40:41 -0800</bug_when>
    <thetext>Repurposing this, as I found a lot more callsites.

http://trac.webkit.org/changeset/142271 migrated callsites that never initialized &apos;ExceptionCode ec;&apos; to IGNORE_EXCEPTION. It looks like many callsites that do initialize the variable never use it, which is unexpected. This patch will migrate those callsites to IGNORE_EXCEPTION as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828589</commentid>
    <comment_count>4</comment_count>
      <attachid>187322</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-08 08:13:23 -0800</bug_when>
    <thetext>Created attachment 187322
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828591</commentid>
    <comment_count>5</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-08 08:17:00 -0800</bug_when>
    <thetext>So. That turned out to be more than I expected. This is just the callsites in WebCore. I haven&apos;t yet gone through the other potential callsites (WebKit2/WebKit). This patch looks for the following pattern:

    ExceptionCode ec = 0;
    methodThatGeneratesExceptions(ec);

and replaces it with

    methodThatGeneratesExceptions(IGNORE_EXCEPTION);

Once this lands and sticks, I plan on dropping a note to webkit-dev@ noting that the new macro exists, and giving a brief overview of the types of exceptions we ignore. The vast majority seems to be simple DOM manipulation, as Darin noted in the last bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828625</commentid>
    <comment_count>6</comment_count>
      <attachid>187322</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-08 09:16:03 -0800</bug_when>
    <thetext>Comment on attachment 187322
Patch

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

&gt; Source/WebCore/page/DOMSelection.cpp:412
&gt; +        if (r-&gt;compareBoundaryPoints(Range::END_TO_START, range.get(), IGNORE_EXCEPTION) &lt; 1 &amp;&amp; !IGNORE_EXCEPTION) {

it&apos;s not ignoring the exception here, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828636</commentid>
    <comment_count>7</comment_count>
      <attachid>187322</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-08 09:34:57 -0800</bug_when>
    <thetext>Comment on attachment 187322
Patch

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

I think the vast majority of these should be ASSERT_NO_EXCEPTION instead. It’s kind of random where we are using IGNORE_EXCEPTION and where ASSERT_NO_EXCEPTION, but using the macros makes this no worse. Adding hundreds of assertions all at once would risk creating lots of new problems for people doing development with debug builds, so we probably could want to do it only a few at a time.

review+ as long as you fix the one obviously wrong one below

&gt;&gt; Source/WebCore/page/DOMSelection.cpp:412
&gt;&gt; +        if (r-&gt;compareBoundaryPoints(Range::END_TO_START, range.get(), IGNORE_EXCEPTION) &lt; 1 &amp;&amp; !IGNORE_EXCEPTION) {
&gt; 
&gt; it&apos;s not ignoring the exception here, right?

Absolutely right. This one is wrong!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828640</commentid>
    <comment_count>8</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-08 09:40:16 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 187322 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=187322&amp;action=review
&gt; 
&gt; I think the vast majority of these should be ASSERT_NO_EXCEPTION instead. It’s kind of random where we are using IGNORE_EXCEPTION and where ASSERT_NO_EXCEPTION, but using the macros makes this no worse. Adding hundreds of assertions all at once would risk creating lots of new problems for people doing development with debug builds, so we probably could want to do it only a few at a time.

I agree. My hope is that posting these out to the list will help folks who know more about these specific callsites deal with them in a reasonable way. Sometimes it might make sense to ignore, or assert, or throw away the ExceptionCode entirely in favor of a different API.

&gt; review+ as long as you fix the one obviously wrong one below
&gt; 
&gt; &gt;&gt; Source/WebCore/page/DOMSelection.cpp:412
&gt; &gt;&gt; +        if (r-&gt;compareBoundaryPoints(Range::END_TO_START, range.get(), IGNORE_EXCEPTION) &lt; 1 &amp;&amp; !IGNORE_EXCEPTION) {
&gt; &gt; 
&gt; &gt; it&apos;s not ignoring the exception here, right?
&gt; 
&gt; Absolutely right. This one is wrong!

/me facepalm.

Looks like I was a little overzealous with the regexing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828658</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-08 10:02:30 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; My hope is that posting these out to the list will help folks who know more about these specific callsites deal with them in a reasonable way.

That seems unlikely. Unless someone has a reason to work on the code already, this doesn’t seem like a hugely productive way of spending time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828978</commentid>
    <comment_count>10</comment_count>
      <attachid>187421</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-09 00:27:46 -0800</bug_when>
    <thetext>Created attachment 187421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829089</commentid>
    <comment_count>11</comment_count>
      <attachid>187421</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-09 11:20:47 -0800</bug_when>
    <thetext>Comment on attachment 187421
Patch

Clearing flags on attachment: 187421

Committed r142375: &lt;http://trac.webkit.org/changeset/142375&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829090</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-09 11:20:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187305</attachid>
            <date>2013-02-08 06:20:02 -0800</date>
            <delta_ts>2013-02-08 08:13:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109295-20130208151636.patch</filename>
            <type>text/plain</type>
            <size>3725</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdhMDljODI1NjUxYTM4
Y2U3ZmQyNjI0NmU2OTlhNTIyZTE4NzFjZC4uYzQ2MDlkMGM4YmEyMjk4YjViMDNhZmQ2NWI4NmEx
ZGFmZjYxODk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDEzLTAyLTA4ICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgVXNlIElHTk9SRV9FWENFUFRJ
T04gZm9yIEVkaXRvciBhbmQgVGV4dENoZWNraW5nSGVscGVyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5Mjk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG1vbnN0ZXIgcGF0Y2ggaW4gaHR0cDov
L3drYnVnLmNvbS8xMDg3NzEgbWlzc2VkIHR3byBzZXRzIG9mIGlnbm9yZWQKKyAgICAgICAgZXhj
ZXB0aW9ucyBpbiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nLiBUaGlzIHBhdGNoIHRha2VzIGNhcmUg
b2YgYm90aCwKKyAgICAgICAgcmVwbGFjaW5nOgorCisgICAgICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjOworICAgICAgICAgICAgbWV0aG9kVGhhdEdlbmVyYXRlc0FuRXhjZXB0aW9uKGVjKTsKKwor
ICAgICAgICB3aXRoOgorCisgICAgICAgICAgICBtZXRob2RUaGF0R2VuZXJhdGVzQW5FeGNlcHRp
b24oSUdOT1JFX0VYQ0VQVElPTik7CisKKyAgICAgICAgVGhpcyBzaG91bGRuJ3QgaGF2ZSBhbnkg
bWF0ZXJpYWwgZWZmZWN0IG9uIHRoZSB3ZWIuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNhbkRlbGV0ZVJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6c2hvdWxkRGVsZXRlUmFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcv
VGV4dENoZWNraW5nSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hl
bHBlcjo6aXNVbmdyYW1tYXRpY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hl
bHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZSk6CisKKzIwMTMt
MDItMDggIE1pa2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KKwogICAgICAgICBBZGQgYSBu
ZXcgSUdOT1JFX0VYQ0VQVElPTiBoZWxwZXIgdG8gaWdub3JlIEV4Y2VwdGlvbkNvZGVzIHdoZW4g
dGhleSBhcmUgZXhwZWN0ZWQgYnV0IHVuaW50ZXJlc3RpbmcKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODc3MQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKaW5kZXggYmQxNDViNmUzMjBiMWRkYjVlNzMwZDVjZWE2YmNlYTRmNTZlYTNjYi4uMDRi
OWYzYThkNzhkZDE3NTEyM2JlNjE2YTNiYTU3OTM0NjUxNGZhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcApAQCAtMjYzLDggKzI2Myw3IEBAIGJvb2wgRWRpdG9yOjpjYW5EZWxldGVSYW5n
ZShSYW5nZSogcmFuZ2UpIGNvbnN0CiAgICAgaWYgKCFzdGFydENvbnRhaW5lci0+cmVuZGVyZXJJ
c0VkaXRhYmxlKCkgfHwgIWVuZENvbnRhaW5lci0+cmVuZGVyZXJJc0VkaXRhYmxlKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgaWYgKHJhbmdl
LT5jb2xsYXBzZWQoZWMpKSB7CisgICAgaWYgKHJhbmdlLT5jb2xsYXBzZWQoSUdOT1JFX0VYQ0VQ
VElPTikpIHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0KHJhbmdlLT5zdGFydFBvc2l0
aW9uKCksIERPV05TVFJFQU0pOwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXMgPSBz
dGFydC5wcmV2aW91cygpOwogICAgICAgICAvLyBGSVhNRTogV2Ugc29tZXRpbWVzIGFsbG93IGRl
bGV0aW9ucyBhdCB0aGUgc3RhcnQgb2YgZWRpdGFibGUgcm9vdHMsIGxpa2Ugd2hlbiB0aGUgY2Fy
ZXQgaXMgaW4gYW4gZW1wdHkgbGlzdCBpdGVtLgpAQCAtNDM5LDggKzQzOCw3IEBAIFBhc3NSZWZQ
dHI8UmFuZ2U+IEVkaXRvcjo6c2VsZWN0ZWRSYW5nZSgpCiAKIGJvb2wgRWRpdG9yOjpzaG91bGRE
ZWxldGVSYW5nZShSYW5nZSogcmFuZ2UpIGNvbnN0CiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsK
LSAgICBpZiAoIXJhbmdlIHx8IHJhbmdlLT5jb2xsYXBzZWQoZWMpKQorICAgIGlmICghcmFuZ2Ug
fHwgcmFuZ2UtPmNvbGxhcHNlZChJR05PUkVfRVhDRVBUSU9OKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIAogICAgIGlmICghY2FuRGVsZXRlUmFuZ2UocmFuZ2UpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IGNkNzIzYjkzYmE1YmYx
MzJiNzUxYTU2MDM2NmU4MzdhZTFkZjUwMTIuLjkxN2Y5NTUxMmIyZWIxYzdjMjQxMTdjZWY5ODQx
NDA4NTg3ZjI2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNr
aW5nSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hl
bHBlci5jcHAKQEAgLTUyNyw4ICs1MjcsNyBAQCBib29sIFRleHRDaGVja2luZ0hlbHBlcjo6aXNV
bmdyYW1tYXRpY2FsKFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzVmVjdG9yKSBjb25zdAogICAgIGlm
ICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEV4Y2VwdGlvbkNvZGUg
ZWM7Ci0gICAgaWYgKCFtX3JhbmdlIHx8IG1fcmFuZ2UtPmNvbGxhcHNlZChlYykpCisgICAgaWYg
KCFtX3JhbmdlIHx8IG1fcmFuZ2UtPmNvbGxhcHNlZChJR05PUkVfRVhDRVBUSU9OKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIFJldHVybnMgdHJ1ZSBvbmx5IGlmIHRoZSBw
YXNzZWQgcmFuZ2UgZXhhY3RseSBjb3JyZXNwb25kcyB0byBhIGJhZCBncmFtbWFyIGRldGFpbCBy
YW5nZS4gVGhpcyBpcyBhbmFsb2dvdXMKQEAgLTU3MywxMSArNTcyLDEwIEBAIFZlY3RvcjxTdHJp
bmc+IFRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGlj
YWxSYW5nZShib29sCiAgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwogCiAgICAgVmVj
dG9yPFN0cmluZz4gZ3Vlc3NlczsKLSAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgIG1pc3NwZWxs
ZWQgPSBmYWxzZTsKICAgICB1bmdyYW1tYXRpY2FsID0gZmFsc2U7CiAgICAgCi0gICAgaWYgKCFt
X2NsaWVudCB8fCAhbV9yYW5nZSB8fCBtX3JhbmdlLT5jb2xsYXBzZWQoZWMpKQorICAgIGlmICgh
bV9jbGllbnQgfHwgIW1fcmFuZ2UgfHwgbV9yYW5nZS0+Y29sbGFwc2VkKElHTk9SRV9FWENFUFRJ
T04pKQogICAgICAgICByZXR1cm4gZ3Vlc3NlczsKIAogICAgIC8vIEV4cGFuZCB0aGUgcmFuZ2Ug
dG8gZW5jb21wYXNzIGVudGlyZSBwYXJhZ3JhcGhzLCBzaW5jZSB0ZXh0IGNoZWNraW5nIG5lZWRz
IHRoYXQgbXVjaCBjb250ZXh0Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187322</attachid>
            <date>2013-02-08 08:13:23 -0800</date>
            <delta_ts>2013-02-09 00:27:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109295-20130208170956.patch</filename>
            <type>text/plain</type>
            <size>61691</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTgwYTllN2FiZTNkMmZj
N2NiMGY5YmQzZmE3YmQyMjA5ODdjYmZkYi4uMzhhNmNjZTQzODQ3MDI5Yjk4MzE3MDQ2YmVhOGMy
MmU5MDJiNWRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDExOCBAQAogMjAxMy0wMi0wOCAgTWlr
ZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFVzZSBJR05PUkVfRVhDRVBU
SU9OIGZvciBpbml0aWFsaXplZCwgYnV0IHVudXNlZCwgRXhjZXB0aW9uQ29kZXMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkyOTUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbW9uc3RlciBwYXRj
aCBpbiBodHRwOi8vd2tidWcuY29tLzEwODc3MSBtaXNzZWQgYW4gZW50aXJlIGNsYXNzIG9mCisg
ICAgICAgIGlnbm9yZWQgZXhjZXB0aW9ucy4gSXQgb25seSBkZWFsdCB3aXRoIGNhbGwgc2l0ZXMg
dGhhdCBuZXZlciBpbml0aWFsaXplZAorICAgICAgICB0aGUgRXhjZXB0aW9uQ29kZSB2YXJpYWJs
ZSwgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBvbmx5IHN1Y2ggY2FsbCBzaXRlcworICAgICAgICB3
b3VsZCBpZ25vcmUgdGhlIHZhcmlhYmxlJ3MgdmFsdWUuCisKKyAgICAgICAgVGhhdCB3YXMgYSBm
bGF3ZWQgYXNzdW1wdGlvbjogYSBsYXJnZSBudW1iZXIgb2Ygc2l0ZXMgdGhhdCBpbml0aWFsaXpl
IHRoZQorICAgICAgICBFeGNlcHRpb25Db2RlIHRvIDAgaWdub3JlIGl0IHJlZ2FyZGxlc3MuIFRo
aXMgcGF0Y2ggZGVhbHMgd2l0aCB0aGUKKyAgICAgICAgYWxtb3N0LWFzLWxhcmdlIHNldCBvZiBj
YWxsc2l0ZXMgdGhhdCBpbml0aWFsaXplIHRoZSB2YXJpYWJsZSwgcGFzcyBpdCB0bworICAgICAg
ICBhIGZ1bmN0aW9uLCBhbmQgdGhlbiBuZXZlciB0b3VjaCBpdCBhZ2Fpbi4KKworICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpmb3JjZUNsb3NlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YXJpYVNlbGVjdGVkVGV4dFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZvckluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluZGV4Rm9yVmlzaWJsZVBv
c2l0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHA6Cisg
ICAgICAgIChzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QpOgorICAgICAgICAqIGRvbS9Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnRleHRSZWN0cyk6CisgICAgICAgICogZWRpdGlu
Zy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUJ1
dHRvbkNvbnRyb2xsZXI6OmhpZGUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6c3R5bGVBdFNlbGVjdGlvblN0YXJ0
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmNhbkRlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVBc1Bs
YWluVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNGcmFnbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNob3VsZERlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6ZGlzcGF0Y2hDUFBFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YWR2YW5jZVRv
TmV4dE1pc3NwZWxsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRnJhbWVJblJhbmdlKToKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhw
YW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eSk6CisgICAgICAgICogZWRpdGluZy9NZXJnZUlkZW50
aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXJnZUlkZW50aWNh
bEVsZW1lbnRzQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9TcGxpdEVsZW1l
bnRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwbGl0RWxlbWVudENvbW1hbmQ6OmRv
VW5hcHBseSk6CisgICAgICAgICogZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTcGxpdFRleHROb2RlQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAg
ICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhw
YW5kVG9QYXJhZ3JhcGhCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdI
ZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGlj
YWxSYW5nZSk6CisgICAgICAgICogZWRpdGluZy9UZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpjYW5BcHBlbmROZXdMaW5lRmVlZFRvU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kUGxh
aW5UZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmV4dGVuZFJhbmdlVG9XcmFwcGluZ05vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6Omlz
Tm9kZVZpc2libHlDb250YWluZWRXaXRoaW4pOgorICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91
bml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0Qm91bmRhcnkpOgorICAgICAgICAqIGh0
bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpj
cmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKiBodG1sL0hUTUxLZXlnZW5FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxLZXlnZW5FbGVtZW50OjpIVE1MS2V5Z2VuRWxlbWVu
dCk6CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6c2V0VGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MVGl0
bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVsZW1lbnQ6OnNldFRl
eHQpOgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJhY2tFbGVtZW50OjpkaWRDb21wbGV0ZUxvYWQpOgorICAgICAgICAqIGh0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmNy
ZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAqIGh0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6
CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwOgorICAgICAgICAoVGV4dFRyYWNrTGlzdDo6YXN5
bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0OjpwYXRjaERvY3VtZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6YWRkUmFuZ2UpOgorICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hNb3VzZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudCk6
CisgICAgICAgICogcGFnZS9GcmFtZUFjdGlvblNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEZyYW1lQWN0aW9uOjpmaXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OmRpc3BhdGNoWm9vbUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50OjpkaXNwYXRjaFNjcm9sbEV2ZW50KToK
KyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0
aDo6U1ZHTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6dmFsdWUpOgorICAg
ICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmV4aXRUZXh0KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJz
ZXI6OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpzdGFydERv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZUNoYXJh
Y3RlcnMpOgorCisyMDEzLTAyLTA4ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisK
ICAgICAgICAgQWRkIGEgbmV3IElHTk9SRV9FWENFUFRJT04gaGVscGVyIHRvIGlnbm9yZSBFeGNl
cHRpb25Db2RlcyB3aGVuIHRoZXkgYXJlIGV4cGVjdGVkIGJ1dCB1bmludGVyZXN0aW5nCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3NzEKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4
IDJmMmEyYWQyM2Y0MjI5YTcxMTliNzhjOGZmM2E3YTUzNjdkMjllZDAuLjQ4MjVkMGMwNDBiMTVk
OTFmOTkzZjg2NGVkYzgzNWQ1MTI1OTYwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTI2Miw5ICsyNjIsOCBAQCBQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udAogCiB2b2lkIElEQkRhdGFiYXNlOjpmb3JjZUNsb3NlKCkKIHsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBmb3IgKFRyYW5zYWN0aW9uTWFwOjpjb25zdF9p
dGVyYXRvcjo6VmFsdWVzIGl0ID0gbV90cmFuc2FjdGlvbnMuYmVnaW4oKS52YWx1ZXMoKSwgZW5k
ID0gbV90cmFuc2FjdGlvbnMuZW5kKCkudmFsdWVzKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAg
ICAgKCppdCktPmFib3J0KGVjKTsKKyAgICAgICAgKCppdCktPmFib3J0KElHTk9SRV9FWENFUFRJ
T04pOwogICAgIHRoaXMtPmNsb3NlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDk4
OWI0ZGQ5OGU1OTdiNThhOTBiNzAzMWVmNzIxMDBiYWZlNzA1NjYuLjViNDVjNzdkODQ4YTEzNjNm
MzU3NWNlZTZmNjM0NDliMDhlNzAyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTM5Miwx
MCArMTM5Miw5IEBAIFBsYWluVGV4dFJhbmdlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFy
aWFTZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1
cm4gUGxhaW5UZXh0UmFuZ2UoKTsKICAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBWaXNpYmxlU2VsZWN0aW9uIHZpc2libGVTZWxlY3Rpb24gPSBzZWxlY3Rpb24oKTsKICAgICBS
ZWZQdHI8UmFuZ2U+IGN1cnJlbnRTZWxlY3Rpb25SYW5nZSA9IHZpc2libGVTZWxlY3Rpb24udG9O
b3JtYWxpemVkUmFuZ2UoKTsKLSAgICBpZiAoIWN1cnJlbnRTZWxlY3Rpb25SYW5nZSB8fCAhY3Vy
cmVudFNlbGVjdGlvblJhbmdlLT5pbnRlcnNlY3RzTm9kZShub2RlLCBlYykpCisgICAgaWYgKCFj
dXJyZW50U2VsZWN0aW9uUmFuZ2UgfHwgIWN1cnJlbnRTZWxlY3Rpb25SYW5nZS0+aW50ZXJzZWN0
c05vZGUobm9kZSwgSUdOT1JFX0VYQ0VQVElPTikpCiAgICAgICAgIHJldHVybiBQbGFpblRleHRS
YW5nZSgpOwogICAgIAogICAgIGludCBzdGFydCA9IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKHZp
c2libGVTZWxlY3Rpb24uc3RhcnQoKSk7CkBAIC0xODY0LDkgKzE4NjMsOCBAQCBWaXNpYmxlUG9z
aXRpb24gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgo
aW50IGluZGV4KSBjbwogICAgIGlmIChpbmRleCA8PSAwKQogICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2RlKSwgRE9XTlNUUkVBTSk7
CiAgICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IFJhbmdlOjpjcmVhdGUobV9yZW5kZXJlci0+ZG9jdW1lbnQoKSk7Ci0gICAgcmFuZ2UtPnNl
bGVjdE5vZGVDb250ZW50cyhub2RlLCBlYyk7CisgICAgcmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50
cyhub2RlLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICBDaGFyYWN0ZXJJdGVyYXRvciBpdChyYW5n
ZS5nZXQoKSk7CiAgICAgaXQuYWR2YW5jZShpbmRleCAtIDEpOwogICAgIHJldHVybiBWaXNpYmxl
UG9zaXRpb24oUG9zaXRpb24oaXQucmFuZ2UoKS0+ZW5kQ29udGFpbmVyKCksIGl0LnJhbmdlKCkt
PmVuZE9mZnNldCgpLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKSwgVVBTVFJF
QU0pOwpAQCAtMTg5MCwxMCArMTg4OCw5IEBAIGludCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjppbmRleEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvCiAgICAg
aWYgKGluZGV4UG9zaXRpb24uaXNOdWxsKCkgfHwgaGlnaGVzdEVkaXRhYmxlUm9vdChpbmRleFBv
c2l0aW9uLCBIYXNFZGl0YWJsZUFYUm9sZSkgIT0gbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IFJhbmdlOjpjcmVhdGUobV9yZW5kZXJlci0+ZG9jdW1lbnQoKSk7Ci0gICAgcmFuZ2UtPnNldFN0
YXJ0KG5vZGUsIDAsIGVjKTsKLSAgICByYW5nZS0+c2V0RW5kKGluZGV4UG9zaXRpb24sIGVjKTsK
KyAgICByYW5nZS0+c2V0U3RhcnQobm9kZSwgMCwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgcmFu
Z2UtPnNldEVuZChpbmRleFBvc2l0aW9uLCBJR05PUkVfRVhDRVBUSU9OKTsKIAogI2lmIFBMQVRG
T1JNKEdUSykKICAgICAvLyBXZSBuZWVkIHRvIGNvbnNpZGVyIHJlcGxhY2VkIGVsZW1lbnRzIGZv
ciBHVEssIGFzIHRoZXkgd2lsbCBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3Bw
CmluZGV4IGUyNWNkZDk5Mjg0MjMwMjc1ZmRlNGVjZWQyZjIzZjJmMTMyMDM3MzIuLmZhZDAxNzEx
ZTU4ZTY5OTRlM2I0NmExZWI4NTMzOGU0ZmNiMDE3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlVGV4dC5jcHAKQEAgLTQ4MCw3ICs0ODAsNiBAQCBzdGF0aWMgdm9pZCBnZXRTZWxlY3Rp
b25PZmZzZXRzRm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIFZpc2li
bAogICAgIC8vIFdlIG5lZWQgdG8gZmluZCB0aGUgZXhhY3Qgc3RhcnQgYW5kIGVuZCBwb3NpdGlv
bnMgaW4gdGhlCiAgICAgLy8gc2VsZWN0ZWQgbm9kZSB0aGF0IGludGVyc2VjdHMgdGhlIHNlbGVj
dGlvbiwgdG8gbGF0ZXIgb24gZ2V0CiAgICAgLy8gdGhlIHJpZ2h0IHZhbHVlcyBmb3IgdGhlIGVm
ZmVjdGl2ZSBzdGFydCBhbmQgZW5kIG9mZnNldHMuCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgUG9zaXRpb24gbm9kZVJhbmdlU3RhcnQ7CiAgICAgUG9zaXRpb24gbm9kZVJhbmdlRW5k
OwogICAgIE5vZGUqIG5vZGUgPSBjb3JlT2JqZWN0LT5ub2RlKCk7CkBAIC00OTEsNyArNDkwLDcg
QEAgc3RhdGljIHZvaWQgZ2V0U2VsZWN0aW9uT2Zmc2V0c0Zvck9iamVjdChBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBjb3JlT2JqZWN0LCBWaXNpYmwKICAgICAvLyBub2RlUmFuZ2VTdGFydCB0byB0aGF0
IHBvc2l0aW9uLCBvdGhlcndpc2UgdG8gdGhlIHNlbGVjdGlvbidzCiAgICAgLy8gc3RhcnQgcG9z
aXRpb24gKGl0IHdvdWxkIGJlbG9uZyB0byB0aGUgbm9kZSBhbnl3YXkpLgogICAgIE5vZGUqIGZp
cnN0TGVhZk5vZGUgPSBub2RlLT5maXJzdERlc2NlbmRhbnQoKTsKLSAgICBpZiAoc2VsUmFuZ2Ut
PmlzUG9pbnRJblJhbmdlKGZpcnN0TGVhZk5vZGUsIDAsIGVjKSkKKyAgICBpZiAoc2VsUmFuZ2Ut
PmlzUG9pbnRJblJhbmdlKGZpcnN0TGVhZk5vZGUsIDAsIElHTk9SRV9FWENFUFRJT04pKQogICAg
ICAgICBub2RlUmFuZ2VTdGFydCA9IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShmaXJzdExl
YWZOb2RlKTsKICAgICBlbHNlCiAgICAgICAgIG5vZGVSYW5nZVN0YXJ0ID0gc2VsUmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKTsKQEAgLTUwMSw3ICs1MDAsNyBAQCBzdGF0aWMgdm9pZCBnZXRTZWxlY3Rp
b25PZmZzZXRzRm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIFZpc2li
bAogICAgIC8vIG5vZGVSYW5nZUVuZCB0byB0aGF0IHBvc2l0aW9uLCBvdGhlcndpc2UgdG8gdGhl
IHNlbGVjdGlvbidzCiAgICAgLy8gZW5kIHBvc2l0aW9uIChpdCB3b3VsZCBiZWxvbmcgdG8gdGhl
IG5vZGUgYW55d2F5KS4KICAgICBOb2RlKiBsYXN0TGVhZk5vZGUgPSBub2RlLT5sYXN0RGVzY2Vu
ZGFudCgpOwotICAgIGlmIChzZWxSYW5nZS0+aXNQb2ludEluUmFuZ2UobGFzdExlYWZOb2RlLCBs
YXN0T2Zmc2V0SW5Ob2RlKGxhc3RMZWFmTm9kZSksIGVjKSkKKyAgICBpZiAoc2VsUmFuZ2UtPmlz
UG9pbnRJblJhbmdlKGxhc3RMZWFmTm9kZSwgbGFzdE9mZnNldEluTm9kZShsYXN0TGVhZk5vZGUp
LCBJR05PUkVfRVhDRVBUSU9OKSkKICAgICAgICAgbm9kZVJhbmdlRW5kID0gbGFzdFBvc2l0aW9u
SW5PckFmdGVyTm9kZShsYXN0TGVhZk5vZGUpOwogICAgIGVsc2UKICAgICAgICAgbm9kZVJhbmdl
RW5kID0gc2VsUmFuZ2UtPmVuZFBvc2l0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAKaW5kZXggMWZh
NTBiODY1YzZlYzkzYTA0YzQzNGNiZmFmNWJkN2M3MzI0YjNiMC4uODExNjc3N2NjYTU2YzEwOWVi
YTc1MWNkNDQwNWU0YmQ3NGU0NWZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcApAQCAtMTY0LDggKzE2
NCw3IEBAIGJvb2wgc2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGNvcmVPYmplY3QsIFZpc2libGVTZWxlY3Rpb24mCiAgICAgLy8gbm9kZSBpcyBhY3R1YWxseSBp
bnNpZGUgdGhlIHJlZ2lvbiwgYXQgbGVhc3QgcGFydGlhbGx5LgogICAgIE5vZGUqIG5vZGUgPSBj
b3JlT2JqZWN0LT5ub2RlKCk7CiAgICAgTm9kZSogbGFzdERlc2NlbmRhbnQgPSBub2RlLT5sYXN0
RGVzY2VuZGFudCgpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHJldHVybiAocmFu
Z2UtPmludGVyc2VjdHNOb2RlKG5vZGUsIGVjKQorICAgIHJldHVybiAocmFuZ2UtPmludGVyc2Vj
dHNOb2RlKG5vZGUsIElHTk9SRV9FWENFUFRJT04pCiAgICAgICAgICYmIChyYW5nZS0+ZW5kQ29u
dGFpbmVyKCkgIT0gbm9kZSB8fCByYW5nZS0+ZW5kT2Zmc2V0KCkpCiAgICAgICAgICYmIChyYW5n
ZS0+c3RhcnRDb250YWluZXIoKSAhPSBsYXN0RGVzY2VuZGFudCB8fCByYW5nZS0+c3RhcnRPZmZz
ZXQoKSAhPSBsYXN0T2Zmc2V0SW5Ob2RlKGxhc3REZXNjZW5kYW50KSkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCmluZGV4IDZkYzE2ZTA2YTBkYmY1NWY3ODc4NjQ0YjNhOWUyMjJmYmNiZDQ0OWMuLmE2MWEw
N2Q2MGQyNDE4NzhlMTNhNmVmMzM0MGMzYWY5YTVjMjdlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAg
LTI2MTcsOCArMjYxNyw3IEBAIHZvaWQgTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHZvaWQgTm9kZTo6dGV4dFJlY3RzKFZl
Y3RvcjxJbnRSZWN0PiYgcmVjdHMpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSk7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgcmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cyhjb25zdF9jYXN0PE5vZGUqPih0
aGlzKSwgZWMpOworICAgIHJhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMoY29uc3RfY2FzdDxOb2Rl
Kj4odGhpcyksIElHTk9SRV9FWENFUFRJT04pOwogICAgIHJhbmdlLT50ZXh0UmVjdHMocmVjdHMp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9s
bGVyLmNwcAppbmRleCA5MGQyNTNlODFjODgxOTdkM2FhMDE1OTg5MjI3NDk1ZjBmZWNmYWI5Li45
YTk2MzdlYWZjZWFiNTMxOGU2MmU4NjZmYmVhZjY0MDNiYjNlZDViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKQEAgLTMyMCw5ICsz
MjAsOCBAQCB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmhpZGUoKQogICAgIG1fb3V0bGlu
ZUVsZW1lbnQgPSAwOwogICAgIG1fYnV0dG9uRWxlbWVudCA9IDA7CiAKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBpZiAobV9jb250YWluZXJFbGVtZW50ICYmIG1fY29udGFpbmVyRWxl
bWVudC0+cGFyZW50Tm9kZSgpKQotICAgICAgICBtX2NvbnRhaW5lckVsZW1lbnQtPnBhcmVudE5v
ZGUoKS0+cmVtb3ZlQ2hpbGQobV9jb250YWluZXJFbGVtZW50LmdldCgpLCBlYyk7CisgICAgICAg
IG1fY29udGFpbmVyRWxlbWVudC0+cGFyZW50Tm9kZSgpLT5yZW1vdmVDaGlsZChtX2NvbnRhaW5l
ckVsZW1lbnQuZ2V0KCksIElHTk9SRV9FWENFUFRJT04pOwogCiAgICAgaWYgKG1fdGFyZ2V0KSB7
CiAgICAgICAgIGlmIChtX3dhc1N0YXRpY1Bvc2l0aW9uZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggMjk2YTYzY2IwMDE0ZmVjM2JiNmJjNGMyZDdmNTllMWE0
OWIwOGI1YS4uNjE1NjFiNzIxZWMyYmNmNWZmOTA5Mjc1NmJhMDVlOWViNjBiYmYzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtMTIyMyw4ICsxMjIzLDcgQEAg
UGFzc1JlZlB0cjxFZGl0aW5nU3R5bGU+IEVkaXRpbmdTdHlsZTo6c3R5bGVBdFNlbGVjdGlvblN0
YXJ0KGNvbnN0IFZpc2libGVTZWxlY3QKICAgICAvLyBhbmQgZmluZCB0aGUgYmFja2dyb3VuZCBj
b2xvciBvZiB0aGUgY29tbW9uIGFuY2VzdG9yLgogICAgIGlmIChzaG91bGRVc2VCYWNrZ3JvdW5k
Q29sb3JJbkVmZmVjdCAmJiAoc2VsZWN0aW9uLmlzUmFuZ2UoKSB8fCBoYXNUcmFuc3BhcmVudEJh
Y2tncm91bmRDb2xvcihzdHlsZS0+bV9tdXRhYmxlU3R5bGUuZ2V0KCkpKSkgewogICAgICAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpKTsKLSAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGlmIChQYXNzUmVmUHRyPENTU1ZhbHVl
PiB2YWx1ZSA9IGJhY2tncm91bmRDb2xvckluRWZmZWN0KHJhbmdlLT5jb21tb25BbmNlc3RvckNv
bnRhaW5lcihlYykpKQorICAgICAgICBpZiAoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBi
YWNrZ3JvdW5kQ29sb3JJbkVmZmVjdChyYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250YWluZXIoSUdO
T1JFX0VYQ0VQVElPTikpKQogICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yLCB2YWx1ZS0+Y3NzVGV4dCgpKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAppbmRleCBiZDE0NWI2ZTMyMGIxZGRiNWU3MzBkNWNlYTZiY2VhNGY1
NmVhM2NiLi4zYjlmM2E0MGMzODNjMjliYzY3ODM0M2MzMzY5MTRmMGQzOWRiOTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yNjMsOCArMjYzLDcgQEAgYm9vbCBFZGl0b3I6OmNh
bkRlbGV0ZVJhbmdlKFJhbmdlKiByYW5nZSkgY29uc3QKICAgICBpZiAoIXN0YXJ0Q29udGFpbmVy
LT5yZW5kZXJlcklzRWRpdGFibGUoKSB8fCAhZW5kQ29udGFpbmVyLT5yZW5kZXJlcklzRWRpdGFi
bGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAg
ICBpZiAocmFuZ2UtPmNvbGxhcHNlZChlYykpIHsKKyAgICBpZiAocmFuZ2UtPmNvbGxhcHNlZChJ
R05PUkVfRVhDRVBUSU9OKSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQocmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSwgRE9XTlNUUkVBTSk7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBw
cmV2aW91cyA9IHN0YXJ0LnByZXZpb3VzKCk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzb21ldGlt
ZXMgYWxsb3cgZGVsZXRpb25zIGF0IHRoZSBzdGFydCBvZiBlZGl0YWJsZSByb290cywgbGlrZSB3
aGVuIHRoZSBjYXJldCBpcyBpbiBhbiBlbXB0eSBsaXN0IGl0ZW0uCkBAIC0zNDUsOCArMzQ0LDcg
QEAgdm9pZCBFZGl0b3I6OnBhc3RlQXNQbGFpblRleHQoY29uc3QgU3RyaW5nJiBwYXN0aW5nVGV4
dCwgYm9vbCBzbWFydFJlcGxhY2UpCiAgICAgTm9kZSogdGFyZ2V0ID0gZmluZEV2ZW50VGFyZ2V0
RnJvbVNlbGVjdGlvbigpOwogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm47Ci0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVu
dDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUobV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93
KCksIHBhc3RpbmdUZXh0LCBzbWFydFJlcGxhY2UpLCBlYyk7CisgICAgdGFyZ2V0LT5kaXNwYXRj
aEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUobV9mcmFtZS0+ZG9jdW1l
bnQoKS0+ZG9tV2luZG93KCksIHBhc3RpbmdUZXh0LCBzbWFydFJlcGxhY2UpLCBJR05PUkVfRVhD
RVBUSU9OKTsKIH0KIAogdm9pZCBFZGl0b3I6OnBhc3RlQXNGcmFnbWVudChQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wg
bWF0Y2hTdHlsZSkKQEAgLTM1NCw4ICszNTIsNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVBc0ZyYWdt
ZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gcGFzdGluZ0ZyYWdtZW50LCBib29sCiAg
ICAgTm9kZSogdGFyZ2V0ID0gZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpOwogICAgIGlm
ICghdGFyZ2V0KQogICAgICAgICByZXR1cm47Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0
ZShtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgcGFzdGluZ0ZyYWdtZW50LCBzbWFy
dFJlcGxhY2UsIG1hdGNoU3R5bGUpLCBlYyk7CisgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRl
eHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21X
aW5kb3coKSwgcGFzdGluZ0ZyYWdtZW50LCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5bGUpLCBJR05P
UkVfRVhDRVBUSU9OKTsKIH0KIAogdm9pZCBFZGl0b3I6OnBhc3RlQXNQbGFpblRleHRCeXBhc3Np
bmdESFRNTCgpCkBAIC00MzksOCArNDM2LDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gRWRpdG9yOjpz
ZWxlY3RlZFJhbmdlKCkKIAogYm9vbCBFZGl0b3I6OnNob3VsZERlbGV0ZVJhbmdlKFJhbmdlKiBy
YW5nZSkgY29uc3QKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgIGlmICghcmFuZ2UgfHwg
cmFuZ2UtPmNvbGxhcHNlZChlYykpCisgICAgaWYgKCFyYW5nZSB8fCByYW5nZS0+Y29sbGFwc2Vk
KElHTk9SRV9FWENFUFRJT04pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgaWYg
KCFjYW5EZWxldGVSYW5nZShyYW5nZSkpCkBAIC02NTAsOSArNjQ2LDggQEAgYm9vbCBFZGl0b3I6
OmRpc3BhdGNoQ1BQRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nICZldmVudFR5cGUsIENsaXBib2Fy
ZEFjY2Vzc1BvbGkKICAgICAKICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBuZXdH
ZW5lcmFsQ2xpcGJvYXJkKHBvbGljeSwgbV9mcmFtZSk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBSZWZQdHI8RXZlbnQ+IGV2dCA9IENsaXBib2FyZEV2ZW50OjpjcmVhdGUoZXZl
bnRUeXBlLCB0cnVlLCB0cnVlLCBjbGlwYm9hcmQpOwotICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVu
dChldnQsIGVjKTsKKyAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZ0LCBJR05PUkVfRVhDRVBU
SU9OKTsKICAgICBib29sIG5vRGVmYXVsdFByb2Nlc3NpbmcgPSBldnQtPmRlZmF1bHRQcmV2ZW50
ZWQoKTsKICAgICBpZiAobm9EZWZhdWx0UHJvY2Vzc2luZyAmJiBwb2xpY3kgPT0gQ2xpcGJvYXJk
V3JpdGFibGUpIHsKICAgICAgICAgUGFzdGVib2FyZCogcGFzdGVib2FyZCA9IFBhc3RlYm9hcmQ6
OmdlbmVyYWxQYXN0ZWJvYXJkKCk7CkBAIC0xNDE1LDggKzE0MTAsNyBAQCB2b2lkIEVkaXRvcjo6
c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBTZXRDb21wb3NpdGlvbk1vZGUgbW9k
ZSkKICAgICBOb2RlKiB0YXJnZXQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgp
OwogICAgIGlmICh0YXJnZXQpIHsKICAgICAgICAgUmVmUHRyPENvbXBvc2l0aW9uRXZlbnQ+IGV2
ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVu
ZEV2ZW50LCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCk7Ci0gICAgICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZl
bnQsIGVjKTsKKyAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50LCBJR05PUkVfRVhD
RVBUSU9OKTsKICAgICB9CiAKICAgICAvLyBJZiB0ZXh0IGlzIGVtcHR5LCB0aGVuIGRlbGV0ZSB0
aGUgb2xkIGNvbXBvc2l0aW9uIGhlcmUuICBJZiB0ZXh0IGlzIG5vbi1lbXB0eSwgSW5zZXJ0VGV4
dENvbW1hbmQ6OmlucHV0CkBAIC0xNDg2LDkgKzE0ODAsOCBAQCB2b2lkIEVkaXRvcjo6c2V0Q29t
cG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRl
cmxpbgogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICBldmVudCA9IENvbXBvc2l0aW9u
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRleHQpOwogICAgICAgICB9Ci0gICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBpZiAoZXZlbnQuZ2V0KCkpCi0gICAgICAgICAgICB0
YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQsIGVjKTsKKyAgICAgICAgICAgIHRhcmdldC0+ZGlz
cGF0Y2hFdmVudChldmVudCwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgfQogCiAgICAgLy8gSWYg
dGV4dCBpcyBlbXB0eSwgdGhlbiBkZWxldGUgdGhlIG9sZCBjb21wb3NpdGlvbiBoZXJlLiAgSWYg
dGV4dCBpcyBub24tZW1wdHksIEluc2VydFRleHRDb21tYW5kOjppbnB1dApAQCAtMTU2NSw4ICsx
NTU4LDYgQEAgdm9pZCBFZGl0b3I6OmxlYXJuU3BlbGxpbmcoKQogCiB2b2lkIEVkaXRvcjo6YWR2
YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiB7Ci0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0KICAgICAvLyBUaGUgYmFzaWMgYXBwcm9hY2ggaXMgdG8g
c2VhcmNoIGluIHR3byBwaGFzZXMgLSBmcm9tIHRoZSBzZWxlY3Rpb24gZW5kIHRvIHRoZSBlbmQg
b2YgdGhlIGRvYywgYW5kCiAgICAgLy8gdGhlbiB3ZSB3cmFwIGFuZCBzZWFyY2ggZnJvbSB0aGUg
ZG9jIHN0YXJ0IHRvIChhcHByb3hpbWF0ZWx5KSB3aGVyZSB3ZSBzdGFydGVkLgogICAgIApAQCAt
MTYwMCwxNCArMTU5MSwxNCBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5n
KGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IAogICAgICAgICBQb3NpdGlvbiByYW5nZUNvbXBsaWFudFBvc2l0aW9uID0gcG9zaXRpb24ucGFy
ZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7Ci0gICAgICAgIHNwZWxsaW5nU2VhcmNoUmFuZ2UtPnNl
dFN0YXJ0KHJhbmdlQ29tcGxpYW50UG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKSwgcmFuZ2VDb21w
bGlhbnRQb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlYyk7CisgICAgICAgIHNw
ZWxsaW5nU2VhcmNoUmFuZ2UtPnNldFN0YXJ0KHJhbmdlQ29tcGxpYW50UG9zaXRpb24uZGVwcmVj
YXRlZE5vZGUoKSwgcmFuZ2VDb21wbGlhbnRQb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNl
dCgpLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAgc3RhcnRlZFdpdGhTZWxlY3Rpb24gPSBm
YWxzZTsgLy8gd29uJ3QgbmVlZCB0byB3cmFwCiAgICAgfQogICAgIAogICAgIC8vIHRvcE5vZGUg
ZGVmaW5lcyB0aGUgd2hvbGUgcmFuZ2Ugd2Ugd2FudCB0byBvcGVyYXRlIG9uIAogICAgIE5vZGUq
IHRvcE5vZGUgPSBoaWdoZXN0RWRpdGFibGVSb290KHBvc2l0aW9uKTsKICAgICAvLyBGSVhNRTog
bGFzdE9mZnNldEZvckVkaXRpbmcoKSBpcyB3cm9uZyBoZXJlIGlmIGVkaXRpbmdJZ25vcmVzQ29u
dGVudChoaWdoZXN0RWRpdGFibGVSb290KCkpIHJldHVybnMgdHJ1ZSAoZS5nLiBhIDx0YWJsZT4p
Ci0gICAgc3BlbGxpbmdTZWFyY2hSYW5nZS0+c2V0RW5kKHRvcE5vZGUsIGxhc3RPZmZzZXRGb3JF
ZGl0aW5nKHRvcE5vZGUpLCBlYyk7CisgICAgc3BlbGxpbmdTZWFyY2hSYW5nZS0+c2V0RW5kKHRv
cE5vZGUsIGxhc3RPZmZzZXRGb3JFZGl0aW5nKHRvcE5vZGUpLCBJR05PUkVfRVhDRVBUSU9OKTsK
IAogICAgIC8vIElmIHNwZWxsaW5nU2VhcmNoUmFuZ2Ugc3RhcnRzIGluIHRoZSBtaWRkbGUgb2Yg
YSB3b3JkLCBhZHZhbmNlIHRvIHRoZSBuZXh0IHdvcmQgc28gd2Ugc3RhcnQgY2hlY2tpbmcKICAg
ICAvLyBhdCBhIHdvcmQgYm91bmRhcnkuIEdvaW5nIGJhY2sgYnkgb25lIGNoYXIgYW5kIHRoZW4g
Zm9yd2FyZCBieSBhIHdvcmQgZG9lcyB0aGUgdHJpY2suCkBAIC0xNjE4LDcgKzE2MDksNyBAQCB2
b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxl
Y3Rpb24pCiAgICAgICAgIC8vIGVsc2Ugd2Ugd2VyZSBhbHJlYWR5IGF0IHRoZSBzdGFydCBvZiB0
aGUgZWRpdGFibGUgbm9kZQogICAgIH0KIAotICAgIGlmIChzcGVsbGluZ1NlYXJjaFJhbmdlLT5j
b2xsYXBzZWQoZWMpKQorICAgIGlmIChzcGVsbGluZ1NlYXJjaFJhbmdlLT5jb2xsYXBzZWQoSUdO
T1JFX0VYQ0VQVElPTikpCiAgICAgICAgIHJldHVybjsgLy8gbm90aGluZyB0byBzZWFyY2ggaW4K
ICAgICAKICAgICAvLyBHZXQgdGhlIHNwZWxsIGNoZWNrZXIgaWYgaXQgaXMgYXZhaWxhYmxlCkBA
IC0xNjQzLDcgKzE2MzQsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5n
KGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgU3RyaW5nIGZvdW5kSXRlbTsKICAgICBS
ZWZQdHI8UmFuZ2U+IGZpcnN0TWlzc3BlbGxpbmdSYW5nZTsKICAgICBpZiAodW5pZmllZFRleHRD
aGVja2VyRW5hYmxlZCgpKSB7Ci0gICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5n
U2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2UoZWMpOworICAgICAgICBncmFtbWFyU2VhcmNoUmFuZ2Ug
PSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5jbG9uZVJhbmdlKElHTk9SRV9FWENFUFRJT04pOwogICAg
ICAgICBmb3VuZEl0ZW0gPSBUZXh0Q2hlY2tpbmdIZWxwZXIoY2xpZW50KCksIHNwZWxsaW5nU2Vh
cmNoUmFuZ2UpLmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGlzR3JhbW1hckNoZWNr
aW5nRW5hYmxlZCgpLCBpc1NwZWxsaW5nLCBmb3VuZE9mZnNldCwgZ3JhbW1hckRldGFpbCk7CiAg
ICAgICAgIGlmIChpc1NwZWxsaW5nKSB7CiAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9IGZv
dW5kSXRlbTsKQEAgLTE2NTYsMTIgKzE2NDcsMTIgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05l
eHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgICAgICBtaXNzcGVs
bGVkV29yZCA9IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwgc3BlbGxpbmdTZWFyY2hSYW5n
ZSkuZmluZEZpcnN0TWlzc3BlbGxpbmcobWlzc3BlbGxpbmdPZmZzZXQsIGZhbHNlLCBmaXJzdE1p
c3NwZWxsaW5nUmFuZ2UpOwogCiAjaWYgVVNFKEdSQU1NQVJfQ0hFQ0tJTkcpCi0gICAgICAgIGdy
YW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2UoZWMpOwor
ICAgICAgICBncmFtbWFyU2VhcmNoUmFuZ2UgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5jbG9uZVJh
bmdlKElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICBpZiAoIW1pc3NwZWxsZWRXb3JkLmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgLy8gU3RvcCBsb29raW5nIGF0IHN0YXJ0IG9mIG5leHQgbWlz
c3BlbGxlZCB3b3JkCiAgICAgICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciBjaGFycyhncmFtbWFy
U2VhcmNoUmFuZ2UuZ2V0KCkpOwogICAgICAgICAgICAgY2hhcnMuYWR2YW5jZShtaXNzcGVsbGlu
Z09mZnNldCk7Ci0gICAgICAgICAgICBncmFtbWFyU2VhcmNoUmFuZ2UtPnNldEVuZChjaGFycy5y
YW5nZSgpLT5zdGFydENvbnRhaW5lcigpLCBjaGFycy5yYW5nZSgpLT5zdGFydE9mZnNldCgpLCBl
Yyk7CisgICAgICAgICAgICBncmFtbWFyU2VhcmNoUmFuZ2UtPnNldEVuZChjaGFycy5yYW5nZSgp
LT5zdGFydENvbnRhaW5lcigpLCBjaGFycy5yYW5nZSgpLT5zdGFydE9mZnNldCgpLCBJR05PUkVf
RVhDRVBUSU9OKTsKICAgICAgICAgfQogICAgIAogICAgICAgICBpZiAoaXNHcmFtbWFyQ2hlY2tp
bmdFbmFibGVkKCkpCkBAIC0xNjcyLDEyICsxNjYzLDEyIEBAIHZvaWQgRWRpdG9yOjphZHZhbmNl
VG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAvLyBJZiB3
ZSBmb3VuZCBuZWl0aGVyIGJhZCBncmFtbWFyIG5vciBhIG1pc3NwZWxsZWQgd29yZCwgd3JhcCBh
bmQgdHJ5IGFnYWluIChidXQgZG9uJ3QgYm90aGVyIGlmIHdlIHN0YXJ0ZWQgYXQgdGhlIGJlZ2lu
bmluZyBvZiB0aGUKICAgICAvLyBibG9jayByYXRoZXIgdGhhbiBhdCBhIHNlbGVjdGlvbikuCiAg
ICAgaWYgKHN0YXJ0ZWRXaXRoU2VsZWN0aW9uICYmICFtaXNzcGVsbGVkV29yZCAmJiAhYmFkR3Jh
bW1hclBocmFzZSkgewotICAgICAgICBzcGVsbGluZ1NlYXJjaFJhbmdlLT5zZXRTdGFydCh0b3BO
b2RlLCAwLCBlYyk7CisgICAgICAgIHNwZWxsaW5nU2VhcmNoUmFuZ2UtPnNldFN0YXJ0KHRvcE5v
ZGUsIDAsIElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICAvLyBnb2luZyB1bnRpbCB0aGUgZW5k
IG9mIHRoZSB2ZXJ5IGZpcnN0IGNodW5rIHdlIHRlc3RlZCBpcyBmYXIgZW5vdWdoCi0gICAgICAg
IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPnNldEVuZChzZWFyY2hFbmROb2RlQWZ0ZXJXcmFwLCBzZWFy
Y2hFbmRPZmZzZXRBZnRlcldyYXAsIGVjKTsKKyAgICAgICAgc3BlbGxpbmdTZWFyY2hSYW5nZS0+
c2V0RW5kKHNlYXJjaEVuZE5vZGVBZnRlcldyYXAsIHNlYXJjaEVuZE9mZnNldEFmdGVyV3JhcCwg
SUdOT1JFX0VYQ0VQVElPTik7CiAgICAgICAgIAogICAgICAgICBpZiAodW5pZmllZFRleHRDaGVj
a2VyRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICBncmFtbWFyU2VhcmNoUmFuZ2UgPSBzcGVsbGlu
Z1NlYXJjaFJhbmdlLT5jbG9uZVJhbmdlKGVjKTsKKyAgICAgICAgICAgIGdyYW1tYXJTZWFyY2hS
YW5nZSA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2UoSUdOT1JFX0VYQ0VQVElPTik7
CiAgICAgICAgICAgICBmb3VuZEl0ZW0gPSBUZXh0Q2hlY2tpbmdIZWxwZXIoY2xpZW50KCksIHNw
ZWxsaW5nU2VhcmNoUmFuZ2UpLmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGlzR3Jh
bW1hckNoZWNraW5nRW5hYmxlZCgpLCBpc1NwZWxsaW5nLCBmb3VuZE9mZnNldCwgZ3JhbW1hckRl
dGFpbCk7CiAgICAgICAgICAgICBpZiAoaXNTcGVsbGluZykgewogICAgICAgICAgICAgICAgIG1p
c3NwZWxsZWRXb3JkID0gZm91bmRJdGVtOwpAQCAtMTY5MCwxMiArMTY4MSwxMiBAQCB2b2lkIEVk
aXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24p
CiAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQo
KSwgc3BlbGxpbmdTZWFyY2hSYW5nZSkuZmluZEZpcnN0TWlzc3BlbGxpbmcobWlzc3BlbGxpbmdP
ZmZzZXQsIGZhbHNlLCBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwogCiAjaWYgVVNFKEdSQU1NQVJf
Q0hFQ0tJTkcpCi0gICAgICAgICAgICBncmFtbWFyU2VhcmNoUmFuZ2UgPSBzcGVsbGluZ1NlYXJj
aFJhbmdlLT5jbG9uZVJhbmdlKGVjKTsKKyAgICAgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9
IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2UoSUdOT1JFX0VYQ0VQVElPTik7CiAgICAg
ICAgICAgICBpZiAoIW1pc3NwZWxsZWRXb3JkLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAg
IC8vIFN0b3AgbG9va2luZyBhdCBzdGFydCBvZiBuZXh0IG1pc3NwZWxsZWQgd29yZAogICAgICAg
ICAgICAgICAgIENoYXJhY3Rlckl0ZXJhdG9yIGNoYXJzKGdyYW1tYXJTZWFyY2hSYW5nZS5nZXQo
KSk7CiAgICAgICAgICAgICAgICAgY2hhcnMuYWR2YW5jZShtaXNzcGVsbGluZ09mZnNldCk7Ci0g
ICAgICAgICAgICAgICAgZ3JhbW1hclNlYXJjaFJhbmdlLT5zZXRFbmQoY2hhcnMucmFuZ2UoKS0+
c3RhcnRDb250YWluZXIoKSwgY2hhcnMucmFuZ2UoKS0+c3RhcnRPZmZzZXQoKSwgZWMpOworICAg
ICAgICAgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZS0+c2V0RW5kKGNoYXJzLnJhbmdlKCktPnN0
YXJ0Q29udGFpbmVyKCksIGNoYXJzLnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCksIElHTk9SRV9FWENF
UFRJT04pOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoaXNHcmFtbWFyQ2hlY2tp
bmdFbmFibGVkKCkpCkBAIC0yNzk0LDggKzI3ODUsNyBAQCBzdGF0aWMgYm9vbCBpc0ZyYW1lSW5S
YW5nZShGcmFtZSogZnJhbWUsIFJhbmdlKiByYW5nZSkKICAgICBib29sIGluUmFuZ2UgPSBmYWxz
ZTsKICAgICBmb3IgKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0gZnJhbWUt
Pm93bmVyRWxlbWVudCgpOyBvd25lckVsZW1lbnQ7IG93bmVyRWxlbWVudCA9IG93bmVyRWxlbWVu
dC0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKG93bmVyRWxlbWVu
dC0+ZG9jdW1lbnQoKSA9PSByYW5nZS0+b3duZXJEb2N1bWVudCgpKSB7Ci0gICAgICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgIGluUmFuZ2UgPSByYW5nZS0+aW50ZXJz
ZWN0c05vZGUob3duZXJFbGVtZW50LCBlYyk7CisgICAgICAgICAgICBpblJhbmdlID0gcmFuZ2Ut
PmludGVyc2VjdHNOb2RlKG93bmVyRWxlbWVudCwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ckNvbW1hbmQuY3BwCmluZGV4IDY3Njk0M2ZlMTI1YzI5MzAxYTQyOGE5N2Y1Yzk2YmUwYjJlN2Ni
NWIuLjhiYTM2Y2QxNTBhNGIyYmJmZjAxMzgxMDgzMWYyOWNhZWU3NWFiMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAtMjE0LDggKzIxNCw3IEBAIHN0YXRp
YyBib29sIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoRnJhbWUqIGZyYW1lLCBUZXh0R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpCiAgICAgUmVmUHRyPFJhbmdlPiBuZXdSYW5nZSA9IHNlbGVjdGlv
bi50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIGlmICghbmV3UmFuZ2UpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpZiAobmV3UmFuZ2UtPmNv
bGxhcHNlZChlYykpCisgICAgaWYgKG5ld1JhbmdlLT5jb2xsYXBzZWQoSUdOT1JFX0VYQ0VQVElP
TikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBSZWZQdHI8UmFuZ2U+IG9sZFJhbmdlID0g
ZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAg
IEVBZmZpbml0eSBhZmZpbml0eSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+YWZmaW5pdHkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0Nv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRz
Q29tbWFuZC5jcHAKaW5kZXggOWNhOGE5MDAxOTdhNmFjMzIxYzE4MjFkZjIyNGIxYzJmNzQwN2Fi
Zi4uMThhMTU1NWZjZDY5MzFhZjM1Yzk0NzA3MzgxYTNlOThiNDAwNzVjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFu
ZC5jcHAKQEAgLTQ3LDE3ICs0NywxNSBAQCB2b2lkIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21t
YW5kOjpkb0FwcGx5KCkKIAogICAgIG1fYXRDaGlsZCA9IG1fZWxlbWVudDItPmZpcnN0Q2hpbGQo
KTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotCiAgICAgVmVjdG9yPFJlZlB0cjxOb2Rl
PiA+IGNoaWxkcmVuOwogICAgIGZvciAoTm9kZSogY2hpbGQgPSBtX2VsZW1lbnQxLT5maXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQogICAgICAgICBjaGls
ZHJlbi5hcHBlbmQoY2hpbGQpOwogCiAgICAgc2l6ZV90IHNpemUgPSBjaGlsZHJlbi5zaXplKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIG1fZWxlbWVu
dDItPmluc2VydEJlZm9yZShjaGlsZHJlbltpXS5yZWxlYXNlKCksIG1fYXRDaGlsZC5nZXQoKSwg
ZWMpOworICAgICAgICBtX2VsZW1lbnQyLT5pbnNlcnRCZWZvcmUoY2hpbGRyZW5baV0ucmVsZWFz
ZSgpLCBtX2F0Q2hpbGQuZ2V0KCksIElHTk9SRV9FWENFUFRJT04pOwogCi0gICAgbV9lbGVtZW50
MS0+cmVtb3ZlKGVjKTsKKyAgICBtX2VsZW1lbnQxLT5yZW1vdmUoSUdOT1JFX0VYQ0VQVElPTik7
CiB9CiAKIHZvaWQgTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQ6OmRvVW5hcHBseSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcAppbmRleCBh
Yzc3YmY5MTZmNTg0NDAxMWIzZmYyMGU4MmE3NjY2NzI2YTI0MDEzLi45NmNjMjRhMTE0ZjcyOWIy
MjQ3NmQzZjIwYTdiZDEwYzJkM2E3MDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKQEAgLTg2LDE3ICs4NiwxNSBAQCB2b2lkIFNwbGl0RWxl
bWVudENvbW1hbmQ6OmRvVW5hcHBseSgpCiAKICAgICBSZWZQdHI8Tm9kZT4gcmVmQ2hpbGQgPSBt
X2VsZW1lbnQyLT5maXJzdENoaWxkKCk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLQog
ICAgIHNpemVfdCBzaXplID0gY2hpbGRyZW4uc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBtX2VsZW1lbnQyLT5pbnNlcnRCZWZvcmUoY2hpbGRy
ZW5baV0uZ2V0KCksIHJlZkNoaWxkLmdldCgpLCBlYyk7CisgICAgICAgIG1fZWxlbWVudDItPmlu
c2VydEJlZm9yZShjaGlsZHJlbltpXS5nZXQoKSwgcmVmQ2hpbGQuZ2V0KCksIElHTk9SRV9FWENF
UFRJT04pOwogCiAgICAgLy8gUmVjb3ZlciB0aGUgaWQgYXR0cmlidXRlIG9mIHRoZSBvcmlnaW5h
bCBlbGVtZW50LgogICAgIGlmIChtX2VsZW1lbnQxLT5oYXNBdHRyaWJ1dGUoSFRNTE5hbWVzOjpp
ZEF0dHIpKQogICAgICAgICBtX2VsZW1lbnQyLT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjppZEF0
dHIsIG1fZWxlbWVudDEtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmlkQXR0cikpOwogCi0gICAg
bV9lbGVtZW50MS0+cmVtb3ZlKGVjKTsKKyAgICBtX2VsZW1lbnQxLT5yZW1vdmUoSUdOT1JFX0VY
Q0VQVElPTik7CiB9CiAKIHZvaWQgU3BsaXRFbGVtZW50Q29tbWFuZDo6ZG9SZWFwcGx5KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAKaW5kZXgg
Y2YwN2RmMzc2ZTI3MDEwNmUzZTIzYWFiNGExZTZhODY3NTYzZjM1MC4uYjUxY2YyYzhiNjI4Njc3
MTg2OWNjNTQ2NWE5MGE3MTM2OWUxZGY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAKQEAgLTU0LDggKzU0LDcgQEAgdm9pZCBTcGxpdFRl
eHROb2RlQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+cmVu
ZGVyZXJJc0VkaXRhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIFN0cmluZyBwcmVmaXhUZXh0ID0gbV90ZXh0Mi0+c3Vic3RyaW5nRGF0YSgw
LCBtX29mZnNldCwgZWMpOworICAgIFN0cmluZyBwcmVmaXhUZXh0ID0gbV90ZXh0Mi0+c3Vic3Ry
aW5nRGF0YSgwLCBtX29mZnNldCwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgaWYgKHByZWZpeFRl
eHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAppbmRleCBjZDcyM2I5M2JhNWJmMTMyYjc1MWE1NjAz
NjZlODM3YWUxZGY1MDEyLi4yMGEyZmNiY2NmZjljMjZiYTE0YTdmNGNkNzRiNWQyYTAwYzhkNGJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBA
IC0xMDEsOCArMTAxLDcgQEAgc3RhdGljIHZvaWQgZmluZE1pc3NwZWxsaW5ncyhUZXh0Q2hlY2tl
ckNsaWVudCogY2xpZW50LCBjb25zdCBVQ2hhciogdGV4dCwgaW50IHMKIAogc3RhdGljIFBhc3NS
ZWZQdHI8UmFuZ2U+IGV4cGFuZFRvUGFyYWdyYXBoQm91bmRhcnkoUGFzc1JlZlB0cjxSYW5nZT4g
cmFuZ2UpCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFJhbmdlPiBw
YXJhZ3JhcGhSYW5nZSA9IHJhbmdlLT5jbG9uZVJhbmdlKGVjKTsKKyAgICBSZWZQdHI8UmFuZ2U+
IHBhcmFncmFwaFJhbmdlID0gcmFuZ2UtPmNsb25lUmFuZ2UoSUdOT1JFX0VYQ0VQVElPTik7CiAg
ICAgc2V0U3RhcnQocGFyYWdyYXBoUmFuZ2UuZ2V0KCksIHN0YXJ0T2ZQYXJhZ3JhcGgocmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSkpOwogICAgIHNldEVuZChwYXJhZ3JhcGhSYW5nZS5nZXQoKSwgZW5k
T2ZQYXJhZ3JhcGgocmFuZ2UtPmVuZFBvc2l0aW9uKCkpKTsKICAgICByZXR1cm4gcGFyYWdyYXBo
UmFuZ2U7CkBAIC0yOTgsNyArMjk3LDYgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6Zmlu
ZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICBT
dHJpbmcgZmlyc3RGb3VuZEl0ZW07CiAgICAgU3RyaW5nIG1pc3NwZWxsZWRXb3JkOwogICAgIFN0
cmluZyBiYWRHcmFtbWFyUGhyYXNlOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIAog
ICAgIC8vIEluaXRpYWxpemUgb3V0IHBhcmFtZXRlcnM7IHRoZXNlIHdpbGwgYmUgdXBkYXRlZCBp
ZiB3ZSBmaW5kIHNvbWV0aGluZyB0byByZXR1cm4uCiAgICAgb3V0SXNTcGVsbGluZyA9IHRydWU7
CkBAIC0zMTEsNyArMzA5LDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0
TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAvLyBFeHBh
bmQgdGhlIHNlYXJjaCByYW5nZSB0byBlbmNvbXBhc3MgZW50aXJlIHBhcmFncmFwaHMsIHNpbmNl
IHRleHQgY2hlY2tpbmcgbmVlZHMgdGhhdCBtdWNoIGNvbnRleHQuCiAgICAgLy8gRGV0ZXJtaW5l
IHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggdG8g
dGhlIHN0YXJ0IG9mIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UsCiAgICAgLy8gc2luY2Ugd2Ug
d2lsbCB3YW50IHRvIGlnbm9yZSByZXN1bHRzIGluIHRoaXMgYXJlYS4KLSAgICBSZWZQdHI8UmFu
Z2U+IHBhcmFncmFwaFJhbmdlID0gbV9yYW5nZS0+Y2xvbmVSYW5nZShlYyk7CisgICAgUmVmUHRy
PFJhbmdlPiBwYXJhZ3JhcGhSYW5nZSA9IG1fcmFuZ2UtPmNsb25lUmFuZ2UoSUdOT1JFX0VYQ0VQ
VElPTik7CiAgICAgc2V0U3RhcnQocGFyYWdyYXBoUmFuZ2UuZ2V0KCksIHN0YXJ0T2ZQYXJhZ3Jh
cGgobV9yYW5nZS0+c3RhcnRQb3NpdGlvbigpKSk7CiAgICAgaW50IHRvdGFsUmFuZ2VMZW5ndGgg
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHBhcmFncmFwaFJhbmdlLmdldCgpKTsKICAgICBz
ZXRFbmQocGFyYWdyYXBoUmFuZ2UuZ2V0KCksIGVuZE9mUGFyYWdyYXBoKG1fcmFuZ2UtPnN0YXJ0
UG9zaXRpb24oKSkpOwpAQCAtNTI3LDggKzUyNSw3IEBAIGJvb2wgVGV4dENoZWNraW5nSGVscGVy
Ojppc1VuZ3JhbW1hdGljYWwoVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXNWZWN0b3IpIGNvbnN0CiAg
ICAgaWYgKCFtX2NsaWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRXhjZXB0aW9u
Q29kZSBlYzsKLSAgICBpZiAoIW1fcmFuZ2UgfHwgbV9yYW5nZS0+Y29sbGFwc2VkKGVjKSkKKyAg
ICBpZiAoIW1fcmFuZ2UgfHwgbV9yYW5nZS0+Y29sbGFwc2VkKElHTk9SRV9FWENFUFRJT04pKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gUmV0dXJucyB0cnVlIG9ubHkgaWYg
dGhlIHBhc3NlZCByYW5nZSBleGFjdGx5IGNvcnJlc3BvbmRzIHRvIGEgYmFkIGdyYW1tYXIgZGV0
YWlsIHJhbmdlLiBUaGlzIGlzIGFuYWxvZ291cwpAQCAtNTczLDExICs1NzAsMTAgQEAgVmVjdG9y
PFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFt
bWF0aWNhbFJhbmdlKGJvb2wKICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiAKICAg
ICBWZWN0b3I8U3RyaW5nPiBndWVzc2VzOwotICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgbWlz
c3BlbGxlZCA9IGZhbHNlOwogICAgIHVuZ3JhbW1hdGljYWwgPSBmYWxzZTsKICAgICAKLSAgICBp
ZiAoIW1fY2xpZW50IHx8ICFtX3JhbmdlIHx8IG1fcmFuZ2UtPmNvbGxhcHNlZChlYykpCisgICAg
aWYgKCFtX2NsaWVudCB8fCAhbV9yYW5nZSB8fCBtX3JhbmdlLT5jb2xsYXBzZWQoSUdOT1JFX0VY
Q0VQVElPTikpCiAgICAgICAgIHJldHVybiBndWVzc2VzOwogCiAgICAgLy8gRXhwYW5kIHRoZSBy
YW5nZSB0byBlbmNvbXBhc3MgZW50aXJlIHBhcmFncmFwaHMsIHNpbmNlIHRleHQgY2hlY2tpbmcg
bmVlZHMgdGhhdCBtdWNoIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5jcHAKaW5kZXggZTM1NDk0NzcwYWRiZWQ4MGUzYmZl
ZWM2N2U2M2E0ZGYzYWE3ZDAyMy4uMWRjZGFkODY3ZGM4YjViZTM1YmU0NDgxZjJjM2RlZTYwNGM3
ZDdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SW5zZXJ0aW9uQmFz
ZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEluc2VydGlvbkJh
c2VDb21tYW5kLmNwcApAQCAtNjIsOSArNjIsOCBAQCBTdHJpbmcgZGlzcGF0Y2hCZWZvcmVUZXh0
SW5zZXJ0ZWRFdmVudChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZpc2libGVTZWxlY3Rpbwog
ICAgIGlmIChOb2RlKiBzdGFydE5vZGUgPSBzZWxlY3Rpb25Gb3JJbnNlcnRpb24uc3RhcnQoKS5j
b250YWluZXJOb2RlKCkpIHsKICAgICAgICAgaWYgKHN0YXJ0Tm9kZS0+cm9vdEVkaXRhYmxlRWxl
bWVudCgpKSB7CiAgICAgICAgICAgICAvLyBTZW5kIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50LiBU
aGUgZXZlbnQgaGFuZGxlciB3aWxsIHVwZGF0ZSB0ZXh0IGlmIG5lY2Vzc2FyeS4KLSAgICAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICAgICAgUmVmUHRyPEJlZm9yZVRleHRJ
bnNlcnRlZEV2ZW50PiBldnQgPSBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudDo6Y3JlYXRlKHRleHQp
OwotICAgICAgICAgICAgc3RhcnROb2RlLT5yb290RWRpdGFibGVFbGVtZW50KCktPmRpc3BhdGNo
RXZlbnQoZXZ0LCBlYyk7CisgICAgICAgICAgICBzdGFydE5vZGUtPnJvb3RFZGl0YWJsZUVsZW1l
bnQoKS0+ZGlzcGF0Y2hFdmVudChldnQsIElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICAgICAg
bmV3VGV4dCA9IGV2dC0+dGV4dCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzgsOCArNzcsNyBA
QCBib29sIGNhbkFwcGVuZE5ld0xpbmVGZWVkVG9TZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgc2VsZWN0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgUmVmUHRy
PEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50PiBldmVudCA9IEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50
OjpjcmVhdGUoU3RyaW5nKCJcbiIpKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBu
b2RlLT5kaXNwYXRjaEV2ZW50KGV2ZW50LCBlYyk7CisgICAgbm9kZS0+ZGlzcGF0Y2hFdmVudChl
dmVudCwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgcmV0dXJuIGV2ZW50LT50ZXh0KCkubGVuZ3Ro
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCA1Yzg4
YjIwMWE3YTIwZDFjMDI3MzYwZjc3ZGI3NjJjOWYzZWYwNjFiLi5mYmE5YjhkN2ZjYmQyOTQ2MTFj
OThmMzdiMTA2NzFhZTFlMWE1OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCkBAIC0yNjAxLDggKzI2MDEsNyBAQCBzdGF0aWMgc2l6ZV90IGZpbmRQbGFpblRleHQo
Q2hhcmFjdGVySXRlcmF0b3ImIGl0LCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdAogICAg
IGlmIChidWZmZXIubmVlZHNNb3JlQ29udGV4dCgpKSB7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4g
c3RhcnRSYW5nZSA9IGl0LnJhbmdlKCk7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gYmVmb3JlU3Rh
cnRSYW5nZSA9IHN0YXJ0UmFuZ2UtPm93bmVyRG9jdW1lbnQoKS0+Y3JlYXRlUmFuZ2UoKTsKLSAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGJlZm9yZVN0YXJ0UmFuZ2UtPnNl
dEVuZChzdGFydFJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBzdGFydFJhbmdlLT5zdGFydE9mZnNl
dCgpLCBlYyk7CisgICAgICAgIGJlZm9yZVN0YXJ0UmFuZ2UtPnNldEVuZChzdGFydFJhbmdlLT5z
dGFydENvbnRhaW5lcigpLCBzdGFydFJhbmdlLT5zdGFydE9mZnNldCgpLCBJR05PUkVfRVhDRVBU
SU9OKTsKICAgICAgICAgZm9yIChTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIGJhY2t3
YXJkc0l0ZXJhdG9yKGJlZm9yZVN0YXJ0UmFuZ2UuZ2V0KCkpOyAhYmFja3dhcmRzSXRlcmF0b3Iu
YXRFbmQoKTsgYmFja3dhcmRzSXRlcmF0b3IuYWR2YW5jZSgpKSB7CiAgICAgICAgICAgICBidWZm
ZXIucHJlcGVuZENvbnRleHQoYmFja3dhcmRzSXRlcmF0b3IuY2hhcmFjdGVycygpLCBiYWNrd2Fy
ZHNJdGVyYXRvci5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlci5uZWVkc01vcmVD
b250ZXh0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IDY4NDc2
NmVhNjBkZTI4Y2FjZDE4MGI3NzM3YTE5MTkwNDhhZmMzNzUuLmU4MDM0MTdjMTIyZmU3MjgzNjdi
ZTEyYzNlOTc2YzI5OTNiNWJmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
aHRtbGVkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcu
Y3BwCkBAIC01NTgsOCArNTU4LDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gZXh0ZW5kUmFuZ2VUb1dy
YXBwaW5nTm9kZXMoUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UsIGNvbnN0IFJhbmcKICAgICBBU1NF
UlQocmFuZ2UpOwogICAgIEFTU0VSVChtYXhpbXVtUmFuZ2UpOwogCi0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgTm9kZSogYW5jZXN0b3IgPSByYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250
YWluZXIoZWMpOy8vIGZpbmQgdGhlIGNsb2VzZXQgY29tbW9uIGFuY2VzdG9yCisgICAgTm9kZSog
YW5jZXN0b3IgPSByYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250YWluZXIoSUdOT1JFX0VYQ0VQVElP
Tik7IC8vIEZpbmQgdGhlIGNsb3Nlc3QgY29tbW9uIGFuY2VzdG9yLgogICAgIE5vZGUqIGhpZ2hl
c3ROb2RlID0gMDsKICAgICAvLyB0cmF2ZXJzZSB0aHJvdWdoIGFuY2VzdG9ycyBhcyBsb25nIGFz
IHRoZXkgYXJlIGNvbnRhaW5lZCB3aXRoaW4gdGhlIHJhbmdlLCBjb250ZW50LWVkaXRhYmxlLCBh
bmQgYmVsb3cgcm9vdE5vZGUgKGNvdWxkIGJlID0wKS4KICAgICB3aGlsZSAoYW5jZXN0b3IgJiYg
YW5jZXN0b3ItPnJlbmRlcmVySXNFZGl0YWJsZSgpICYmIGlzTm9kZVZpc2libHlDb250YWluZWRX
aXRoaW4oYW5jZXN0b3IsIG1heGltdW1SYW5nZSkgJiYgYW5jZXN0b3IgIT0gcm9vdE5vZGUpIHsK
QEAgLTU3Miw3ICs1NzEsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBleHRlbmRSYW5nZVRvV3JhcHBp
bmdOb2RlcyhQYXNzUmVmUHRyPFJhbmdlPiByYW5nZSwgY29uc3QgUmFuZwogCiAgICAgLy8gQ3Jl
YXRlIG5ldyByYW5nZSB3aXRoIHRoZSBoaWdoZXN0IGVkaXRhYmxlIG5vZGUgY29udGFpbmVkIHdp
dGhpbiB0aGUgcmFuZ2UKICAgICBSZWZQdHI8UmFuZ2U+IGV4dGVuZGVkUmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKHJhbmdlLT5vd25lckRvY3VtZW50KCkpOwotICAgIGV4dGVuZGVkUmFuZ2UtPnNlbGVj
dE5vZGUoaGlnaGVzdE5vZGUsIGVjKTsKKyAgICBleHRlbmRlZFJhbmdlLT5zZWxlY3ROb2RlKGhp
Z2hlc3ROb2RlLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICByZXR1cm4gZXh0ZW5kZWRSYW5nZS5y
ZWxlYXNlKCk7CiB9CiAKQEAgLTExMzQsOCArMTEzMyw3IEBAIGJvb2wgaXNOb2RlVmlzaWJseUNv
bnRhaW5lZFdpdGhpbihOb2RlKiBub2RlLCBjb25zdCBSYW5nZSogc2VsZWN0ZWRSYW5nZSkKICAg
ICBBU1NFUlQobm9kZSk7CiAgICAgQVNTRVJUKHNlbGVjdGVkUmFuZ2UpOwogICAgIC8vIElmIHRo
ZSBub2RlIGlzIGluc2lkZSB0aGUgcmFuZ2UsIHRoZW4gaXQgc3VyZWx5IGlzIGNvbnRhaW5lZCB3
aXRoaW4KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpZiAoc2VsZWN0ZWRSYW5nZS0+
Y29tcGFyZU5vZGUobm9kZSwgZWMpID09IFJhbmdlOjpOT0RFX0lOU0lERSkKKyAgICBpZiAoc2Vs
ZWN0ZWRSYW5nZS0+Y29tcGFyZU5vZGUobm9kZSwgSUdOT1JFX0VYQ0VQVElPTikgPT0gUmFuZ2U6
Ok5PREVfSU5TSURFKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGJvb2wgc3RhcnRJc1Zp
c3VhbGx5U2FtZSA9IHZpc2libGVQb3NpdGlvbkJlZm9yZU5vZGUobm9kZSkgPT0gc2VsZWN0ZWRS
YW5nZS0+c3RhcnRQb3NpdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy92aXNpYmxlX3VuaXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0
cy5jcHAKaW5kZXggNDJlNzBmNzBlYzNhY2RmNzIxNDAxMDMxZDA4YmZiZTg5ZWRmZmJhNS4uOGFm
NjhlNzQ0ZWY1Mzk1ZDAyMjg0NDgzOTk1Njc2M2ZhZDZiNjg4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCkBAIC01MzksMTAgKzUzOSw5IEBAIHN0YXRpYyBWaXNp
YmxlUG9zaXRpb24gbmV4dEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRh
cnlTZWFyY2hGdW5jCiAgICAgVmVjdG9yPFVDaGFyLCAxMDI0PiBzdHJpbmc7CiAgICAgdW5zaWdu
ZWQgcHJlZml4TGVuZ3RoID0gMDsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlm
IChyZXF1aXJlc0NvbnRleHRGb3JXb3JkQm91bmRhcnkoYy5jaGFyYWN0ZXJBZnRlcigpKSkgewog
ICAgICAgICBSZWZQdHI8UmFuZ2U+IGJhY2t3YXJkc1NjYW5SYW5nZShkLT5jcmVhdGVSYW5nZSgp
KTsKLSAgICAgICAgYmFja3dhcmRzU2NhblJhbmdlLT5zZXRFbmQoc3RhcnQuZGVwcmVjYXRlZE5v
ZGUoKSwgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZWMpOworICAgICAgICBiYWNr
d2FyZHNTY2FuUmFuZ2UtPnNldEVuZChzdGFydC5kZXByZWNhdGVkTm9kZSgpLCBzdGFydC5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAgU2ltcGxp
ZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvciBiYWNrd2FyZHNJdGVyYXRvcihiYWNrd2FyZHNTY2Fu
UmFuZ2UuZ2V0KCkpOwogICAgICAgICB3aGlsZSAoIWJhY2t3YXJkc0l0ZXJhdG9yLmF0RW5kKCkp
IHsKICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gYmFja3dhcmRzSXRlcmF0
b3IuY2hhcmFjdGVycygpOwpAQCAtNTU2LDggKzU1NSw4IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRp
b24gbmV4dEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2hG
dW5jCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzZWFyY2hSYW5nZS0+c2VsZWN0Tm9kZUNvbnRl
bnRzKGJvdW5kYXJ5LCBlYyk7Ci0gICAgc2VhcmNoUmFuZ2UtPnNldFN0YXJ0KHN0YXJ0LmRlcHJl
Y2F0ZWROb2RlKCksIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVjKTsKKyAgICBz
ZWFyY2hSYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKGJvdW5kYXJ5LCBJR05PUkVfRVhDRVBUSU9O
KTsKKyAgICBzZWFyY2hSYW5nZS0+c2V0U3RhcnQoc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSwgc3Rh
cnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgVGV4
dEl0ZXJhdG9yIGl0KHNlYXJjaFJhbmdlLmdldCgpLCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3Rl
cnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CiAgICAgdW5zaWduZWQgbmV4dCA9IDA7CiAg
ICAgYm9vbCBpblRleHRTZWN1cml0eU1vZGUgPSBzdGFydC5kZXByZWNhdGVkTm9kZSgpICYmIHN0
YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkgJiYgc3RhcnQuZGVwcmVjYXRlZE5vZGUo
KS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+dGV4dFNlY3VyaXR5KCkgIT0gVFNOT05FOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggMTY5OTI1Y2RhNDQ0NzMxZDhjYjQzN2Jk
YmRjZjE2MjlhODAyYmI2Mi4uOGJjYzEwMWQ2OTVlNmQ0M2M4YTg0ZGU0OWYwMGE1MmY1M2UwMTdl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0zMDIsOCArMzAyLDcg
QEAgYm9vbCBGaWxlSW5wdXRUeXBlOjppc0ZpbGVVcGxvYWQoKSBjb25zdAogdm9pZCBGaWxlSW5w
dXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpLT5z
aGFkb3coKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZWxlbWVudCgpLT51c2Vy
QWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKGVsZW1lbnQoKS0+bXVsdGlwbGUoKSA/IFVw
bG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUZvck11bHRpcGxlKGVsZW1lbnQoKS0+ZG9jdW1lbnQo
KSk6IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpLCBl
Yyk7CisgICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKGVs
ZW1lbnQoKS0+bXVsdGlwbGUoKSA/IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUZvck11bHRp
cGxlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk6IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShl
bGVtZW50KCktPmRvY3VtZW50KCkpLCBJR05PUkVfRVhDRVBUSU9OKTsKIH0KIAogdm9pZCBGaWxl
SW5wdXRUeXBlOjpkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxLZXlnZW5FbGVtZW50LmNwcAppbmRleCA4OTQ3NDZhNjY4ZTUwOWI2ZGM0M2M5YmZhYjNl
M2Y2MGY3ZTBiY2M0Li40ZTg1ZGIzZTYyYzE1MjNmOTY3ZDY2MGUyYzkxZmRkNDYyZWI3NTE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcApAQCAtNzUsMTQgKzc1
LDEzIEBAIGlubGluZSBIVE1MS2V5Z2VuRWxlbWVudDo6SFRNTEtleWdlbkVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lCiAgICAgZ2V0U3VwcG9ydGVkS2V5U2l6ZXMo
a2V5cyk7CiAKICAgICBSZWZQdHI8SFRNTFNlbGVjdEVsZW1lbnQ+IHNlbGVjdCA9IEtleWdlblNl
bGVjdEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IFJlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gb3B0aW9uID0gSFRNTE9wdGlvbkVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgIHNlbGVjdC0+YXBwZW5kQ2hpbGQob3B0aW9uLCBlYyk7
Ci0gICAgICAgIG9wdGlvbi0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBrZXlz
W2ldKSwgZWMpOworICAgICAgICBzZWxlY3QtPmFwcGVuZENoaWxkKG9wdGlvbiwgSUdOT1JFX0VY
Q0VQVElPTik7CisgICAgICAgIG9wdGlvbi0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3Vt
ZW50LCBrZXlzW2ldKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgfQogCi0gICAgZW5zdXJlVXNl
ckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChzZWxlY3QsIGVjKTsKKyAgICBlbnN1cmVV
c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHNlbGVjdCwgSUdOT1JFX0VYQ0VQVElP
Tik7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEtleWdlbkVsZW1lbnQ+IEhUTUxLZXlnZW5FbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVs
ZW1lbnQuY3BwCmluZGV4IDU3Zjg1MTFiMjU1MGRkNjhmMThiNjYwM2U4MDdmMmE0ODQ3ZTAxZTIu
LjRiMjY2ZGEyYmZhODFlM2VjMjU3OTA2NWMxOGYwODQ3MzNkOGQ1NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCkBAIC04MywxOCArODMsMTcgQEAgdm9pZCBI
VE1MU2NyaXB0RWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcgJnZhbHVlKQogewogICAgIFJl
ZlB0cjxOb2RlPiBwcm90ZWN0RnJvbU11dGF0aW9uRXZlbnRzKHRoaXMpOwogCi0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgaW50IG51bUNoaWxkcmVuID0gY2hpbGROb2RlQ291bnQoKTsK
IAogICAgIGlmIChudW1DaGlsZHJlbiA9PSAxICYmIGZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgp
KSB7Ci0gICAgICAgIHRvVGV4dChmaXJzdENoaWxkKCkpLT5zZXREYXRhKHZhbHVlLCBlYyk7Cisg
ICAgICAgIHRvVGV4dChmaXJzdENoaWxkKCkpLT5zZXREYXRhKHZhbHVlLCBJR05PUkVfRVhDRVBU
SU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChudW1DaGlsZHJlbiA+IDAp
CiAgICAgICAgIHJlbW92ZUNoaWxkcmVuKCk7CiAKLSAgICBhcHBlbmRDaGlsZChkb2N1bWVudCgp
LT5jcmVhdGVUZXh0Tm9kZSh2YWx1ZS5pbXBsKCkpLCBlYyk7CisgICAgYXBwZW5kQ2hpbGQoZG9j
dW1lbnQoKS0+Y3JlYXRlVGV4dE5vZGUodmFsdWUuaW1wbCgpKSwgSUdOT1JFX0VYQ0VQVElPTik7
CiB9CiAKIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OnNldEFzeW5jKGJvb2wgYXN5bmMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAppbmRleCA4ZTRmZjZjOWFiM2ZhYjlk
NjBiOTllZGM3MTkzMWJiYzExZTFhMWE3Li5jNWY0YTQyN2ViY2MzMDZjM2IzNDgyYjllODdhYzNi
ZDhkNzUzOGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKQEAg
LTk5LDExICs5OSwxMCBAQCB2b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OnNldFRleHQoY29uc3QgU3Ry
aW5nICZ2YWx1ZSkKIHsKICAgICBSZWZQdHI8Tm9kZT4gcHJvdGVjdEZyb21NdXRhdGlvbkV2ZW50
cyh0aGlzKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGludCBudW1DaGlsZHJl
biA9IGNoaWxkTm9kZUNvdW50KCk7CiAgICAgCiAgICAgaWYgKG51bUNoaWxkcmVuID09IDEgJiYg
Zmlyc3RDaGlsZCgpLT5pc1RleHROb2RlKCkpCi0gICAgICAgIHRvVGV4dChmaXJzdENoaWxkKCkp
LT5zZXREYXRhKHZhbHVlLCBlYyk7CisgICAgICAgIHRvVGV4dChmaXJzdENoaWxkKCkpLT5zZXRE
YXRhKHZhbHVlLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gV2Ug
bWFrZSBhIGNvcHkgaGVyZSBiZWNhdXNlIGVudGl0eSBvZiAidmFsdWUiIGFyZ3VtZW50IGNhbiBi
ZSBEb2N1bWVudDo6bV90aXRsZSwKICAgICAgICAgLy8gd2hpY2ggZ29lcyBlbXB0eSBkdXJpbmcg
cmVtb3ZlQ2hpbGRyZW4oKSBpbnZvY2F0aW9uIGJlbG93LApAQCAtMTEzLDcgKzExMiw3IEBAIHZv
aWQgSFRNTFRpdGxlRWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcgJnZhbHVlKQogICAgICAg
ICBpZiAobnVtQ2hpbGRyZW4gPiAwKQogICAgICAgICAgICAgcmVtb3ZlQ2hpbGRyZW4oKTsKIAot
ICAgICAgICBhcHBlbmRDaGlsZChkb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZSh2YWx1ZUNvcHku
aW1wbCgpKSwgZWMpOworICAgICAgICBhcHBlbmRDaGlsZChkb2N1bWVudCgpLT5jcmVhdGVUZXh0
Tm9kZSh2YWx1ZUNvcHkuaW1wbCgpKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAppbmRleCA3MTNlOTk5M2Y3ZjA2
YmFiNGE0ODU3YmM5ZDdiNmU3M2YwNDhhN2U2Li5kOTA5ODcxMmQ5NDQ1N2QwMjJlNzc1ZTUwNDE2
NmYxMTczMDE2NjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAK
QEAgLTI2Miw4ICsyNjIsNiBAQCBib29sIEhUTUxUcmFja0VsZW1lbnQ6OmNhbkxvYWRVcmwoY29u
c3QgS1VSTCYgdXJsKQogCiB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmRpZENvbXBsZXRlTG9hZChM
b2FkYWJsZVRleHRUcmFjayosIExvYWRTdGF0dXMgc3RhdHVzKQogewotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotCiAgICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4
dCB0cmFja3MgKGNvbnRpbnVlZCkKICAgICAKICAgICAvLyA0LiBEb3dubG9hZDogLi4uCkBAIC0y
NzYsNyArMjc0LDcgQEAgdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpkaWRDb21wbGV0ZUxvYWQoTG9h
ZGFibGVUZXh0VHJhY2sqLCBMb2FkU3RhdHVzIHN0YXR1cykKIAogICAgIGlmIChzdGF0dXMgPT0g
RmFpbHVyZSkgewogICAgICAgICBzZXRSZWFkeVN0YXRlKEhUTUxUcmFja0VsZW1lbnQ6OlRSQUNL
X0VSUk9SKTsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpLCBlYyk7CisgICAgICAgIGRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSwgSUdO
T1JFX0VYQ0VQVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI4Nyw3ICsyODUs
NyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmRpZENvbXBsZXRlTG9hZChMb2FkYWJsZVRleHRU
cmFjayosIExvYWRTdGF0dXMgc3RhdHVzKQogCiAgICAgLy8gICAgIDIuIElmIHRoZSBmaWxlIHdh
cyBzdWNjZXNzZnVsbHkgcHJvY2Vzc2VkLCBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGxvYWQg
YXQgdGhlIAogICAgIC8vICAgICAgICB0cmFjayBlbGVtZW50LgotICAgIGRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpLCBlYyk7
CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQs
IGZhbHNlLCBmYWxzZSksIElHTk9SRV9FWENFUFRJT04pOwogfQogCiAvLyBOT1RFOiBUaGUgdmFs
dWVzIGluIHRoZSBUZXh0VHJhY2s6OlJlYWRpbmVzc1N0YXRlIGVudW0gbXVzdCBzdGF5IGluIHN5
bmMgd2l0aCB0aG9zZSBpbiBIVE1MVHJhY2tFbGVtZW50OjpSZWFkeVN0YXRlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAppbmRleCA3NWFmZDFlNzkwMTNjMzI5MWY1Y2JkMGFh
YWNjNzIzNDg4NGRlNTc3Li43MWZkNTA4ZTUxZjE0ZDgzYTRjYjA5MDVhZjgzYjA2NjA5OWI4NGQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcApAQCAtMjYxLDExICsyNjEs
MTAgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gZWxlbWVudCgpLT5kb2N1bWVudCgpOwogICAgIFJlZlB0cjxIVE1M
RGl2RWxlbWVudD4gdHJhY2sgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAg
ICB0cmFjay0+c2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC1zbGlkZXItcnVubmFibGUt
dHJhY2siLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgdHJhY2stPmFwcGVuZENoaWxkKFNsaWRlclRodW1iRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KSwgZWMpOworICAgIHRyYWNrLT5hcHBlbmRDaGlsZChTbGlkZXJU
aHVtYkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCksIElHTk9SRV9FWENFUFRJT04pOwogICAgIFJl
ZlB0cjxIVE1MRWxlbWVudD4gY29udGFpbmVyID0gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KTsKLSAgICBjb250YWluZXItPmFwcGVuZENoaWxkKHRyYWNrLnJlbGVhc2Uo
KSwgZWMpOwotICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGls
ZChjb250YWluZXIucmVsZWFzZSgpLCBlYyk7CisgICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZCh0
cmFjay5yZWxlYXNlKCksIElHTk9SRV9FWENFUFRJT04pOworICAgIGVsZW1lbnQoKS0+dXNlckFn
ZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChjb250YWluZXIucmVsZWFzZSgpLCBJR05PUkVf
RVhDRVBUSU9OKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKaW5kZXggZmI5NjM2NWMyOGU1ZDg3NGVjNzI3ZTRk
NGNjZmMyMWY1OWNiOTU5Yi4uMzgzOWIxMmE2M2E1ZmYxMjdkNjNmYmZjYTAzNzExY2Y2ZGE4OWFm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcApAQCAtMTA1LDE0ICsx
MDUsMTMgQEAgdm9pZCBTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogICAg
IEFTU0VSVChjb250YWluZXIpOwogICAgIEFTU0VSVCh0ZXh0V3JhcHBlcik7CiAKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBSZWZQdHI8U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxl
bWVudD4gcmVzdWx0c0J1dHRvbiA9IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmNy
ZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpOwogICAgIG1fcmVzdWx0c0J1dHRvbiA9IHJlc3Vs
dHNCdXR0b24uZ2V0KCk7Ci0gICAgY29udGFpbmVyLT5pbnNlcnRCZWZvcmUobV9yZXN1bHRzQnV0
dG9uLCB0ZXh0V3JhcHBlciwgZWMpOworICAgIGNvbnRhaW5lci0+aW5zZXJ0QmVmb3JlKG1fcmVz
dWx0c0J1dHRvbiwgdGV4dFdyYXBwZXIsIElHTk9SRV9FWENFUFRJT04pOwogCiAgICAgUmVmUHRy
PFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudD4gY2FuY2VsQnV0dG9uID0gU2VhcmNoRmll
bGRDYW5jZWxCdXR0b25FbGVtZW50OjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTsKICAg
ICBtX2NhbmNlbEJ1dHRvbiA9IGNhbmNlbEJ1dHRvbi5nZXQoKTsKLSAgICBjb250YWluZXItPmlu
c2VydEJlZm9yZShtX2NhbmNlbEJ1dHRvbiwgdGV4dFdyYXBwZXItPm5leHRTaWJsaW5nKCksIGVj
KTsKKyAgICBjb250YWluZXItPmluc2VydEJlZm9yZShtX2NhbmNlbEJ1dHRvbiwgdGV4dFdyYXBw
ZXItPm5leHRTaWJsaW5nKCksIElHTk9SRV9FWENFUFRJT04pOwogfQogCiBIVE1MRWxlbWVudCog
U2VhcmNoSW5wdXRUeXBlOjpyZXN1bHRzQnV0dG9uRWxlbWVudCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggNThmMmFhNGU1YzQ4ZGY4MmE1
ZWE4YWJiMTY4MTE2NGI1MWQ2MTgwMy4uZmQ0NGUwNWFhZGI4ODc2ZTM2NWYzMjM0ODBiMTMyYjVh
YWNkYTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApA
QCAtMjM2LDMzICsyMzYsMzIgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWUoKQogICAgIGJvb2wgc2hvdWxkSGF2ZVNwaW5CdXR0b24gPSB0aGlzLT5zaG91bGRI
YXZlU3BpbkJ1dHRvbigpOwogICAgIGJvb2wgY3JlYXRlc0NvbnRhaW5lciA9IHNob3VsZEhhdmVT
cGluQnV0dG9uIHx8IG5lZWRzQ29udGFpbmVyKCkgfHwgc2hvdWxkQWRkRGVjb3JhdGlvbnM7CiAK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBtX2lubmVyVGV4dCA9IFRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBpZiAoIWNyZWF0ZXNDb250
YWluZXIpIHsKLSAgICAgICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVu
ZENoaWxkKG1faW5uZXJUZXh0LCBlYyk7CisgICAgICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hh
ZG93Um9vdCgpLT5hcHBlbmRDaGlsZChtX2lubmVyVGV4dCwgSUdOT1JFX0VYQ0VQVElPTik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBTaGFkb3dSb290KiBzaGFkb3dSb290ID0gZWxl
bWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCk7CiAgICAgbV9jb250YWluZXIgPSBIVE1MRGl2
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBtX2NvbnRhaW5lci0+c2V0UHNldWRvKEF0
b21pY1N0cmluZygiLXdlYmtpdC10ZXh0ZmllbGQtZGVjb3JhdGlvbi1jb250YWluZXIiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgc2hhZG93Um9vdC0+YXBwZW5k
Q2hpbGQobV9jb250YWluZXIsIGVjKTsKKyAgICBzaGFkb3dSb290LT5hcHBlbmRDaGlsZChtX2Nv
bnRhaW5lciwgSUdOT1JFX0VYQ0VQVElPTik7CiAKICAgICBtX2lubmVyQmxvY2sgPSBUZXh0Q29u
dHJvbElubmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBtX2lubmVyQmxvY2stPmFw
cGVuZENoaWxkKG1faW5uZXJUZXh0LCBlYyk7Ci0gICAgbV9jb250YWluZXItPmFwcGVuZENoaWxk
KG1faW5uZXJCbG9jaywgZWMpOworICAgIG1faW5uZXJCbG9jay0+YXBwZW5kQ2hpbGQobV9pbm5l
clRleHQsIElHTk9SRV9FWENFUFRJT04pOworICAgIG1fY29udGFpbmVyLT5hcHBlbmRDaGlsZCht
X2lubmVyQmxvY2ssIElHTk9SRV9FWENFUFRJT04pOwogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVD
SCkKICAgICBBU1NFUlQoIW1fc3BlZWNoQnV0dG9uKTsKICAgICBpZiAoZWxlbWVudCgpLT5pc1Nw
ZWVjaEVuYWJsZWQoKSkgewogICAgICAgICBtX3NwZWVjaEJ1dHRvbiA9IElucHV0RmllbGRTcGVl
Y2hCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgICAgICBtX2NvbnRhaW5lci0+
YXBwZW5kQ2hpbGQobV9zcGVlY2hCdXR0b24sIGVjKTsKKyAgICAgICAgbV9jb250YWluZXItPmFw
cGVuZENoaWxkKG1fc3BlZWNoQnV0dG9uLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICB9CiAjZW5k
aWYKIAogICAgIGlmIChzaG91bGRIYXZlU3BpbkJ1dHRvbikgewogICAgICAgICBtX2lubmVyU3Bp
bkJ1dHRvbiA9IFNwaW5CdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsICp0aGlzKTsKLSAg
ICAgICAgbV9jb250YWluZXItPmFwcGVuZENoaWxkKG1faW5uZXJTcGluQnV0dG9uLCBlYyk7Cisg
ICAgICAgIG1fY29udGFpbmVyLT5hcHBlbmRDaGlsZChtX2lubmVyU3BpbkJ1dHRvbiwgSUdOT1JF
X0VYQ0VQVElPTik7CiAgICAgfQogCiAgICAgaWYgKHNob3VsZEFkZERlY29yYXRpb25zKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKaW5kZXggM2U4YWNjZmUy
NjBiYjIyYmQzZTU4MjJmODJlMWJkN2M4MzhiMTJlYS4uNDIyM2MwNjAwNjYxZDdmZmRlOWNhYTIx
ZTg1MGZiNTMxZTU2NTEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0xpc3QuY3BwCkBAIC0yMzksMTMgKzIzOSwxMiBAQCB2b2lkIFRleHRUcmFja0xpc3Q6OnNjaGVk
dWxlQWRkVHJhY2tFdmVudChQYXNzUmVmUHRyPFRleHRUcmFjaz4gdHJhY2spCiB2b2lkIFRleHRU
cmFja0xpc3Q6OmFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPFRleHRUcmFja0xpc3Q+KikKIHsK
ICAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAKICAgICArK21fZGlzcGF0Y2hpbmdFdmVudHM7CiAgICAgbV9wZW5kaW5n
RXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7CiAgICAgc2l6ZV90IGNvdW50ID0gcGVuZGluZ0V2
ZW50cy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyAr
K2luZGV4KQotICAgICAgICBkaXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbaW5kZXhdLnJlbGVh
c2UoKSwgZWMpOworICAgICAgICBkaXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbaW5kZXhdLnJl
bGVhc2UoKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgLS1tX2Rpc3BhdGNoaW5nRXZlbnRzOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCmluZGV4
IDhlNmMxODAwZDM1MjgyNjRlNTMxMzRlZDhkYzYxYjgzZWY4OGI5NTYuLmYxZDA5OGY0NDQ0YmRm
OTM1NzViN2Q4ODJkMDIxOTdmZmY5NGNhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9ET01QYXRjaFN1cHBvcnQuY3BwCkBAIC05OSw4ICs5OSw3IEBAIHZvaWQgRE9NUGF0Y2hTdXBw
b3J0OjpwYXRjaERvY3VtZW50KGNvbnN0IFN0cmluZyYgbWFya3VwKQogICAgIE93blB0cjxEaWdl
c3Q+IG9sZEluZm8gPSBjcmVhdGVEaWdlc3QobV9kb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCks
IDApOwogICAgIE93blB0cjxEaWdlc3Q+IG5ld0luZm8gPSBjcmVhdGVEaWdlc3QobmV3RG9jdW1l
bnQtPmRvY3VtZW50RWxlbWVudCgpLCAmbV91bnVzZWROb2Rlc01hcCk7CiAKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBpZiAoIWlubmVyUGF0Y2hOb2RlKG9sZEluZm8uZ2V0KCksIG5l
d0luZm8uZ2V0KCksIGVjKSkgeworICAgIGlmICghaW5uZXJQYXRjaE5vZGUob2xkSW5mby5nZXQo
KSwgbmV3SW5mby5nZXQoKSwgSUdOT1JFX0VYQ0VQVElPTikpIHsKICAgICAgICAgLy8gRmFsbCBi
YWNrIHRvIHJld3JpdGUuCiAgICAgICAgIG1fZG9jdW1lbnQtPndyaXRlKG1hcmt1cCk7CiAgICAg
ICAgIG1fZG9jdW1lbnQtPmNsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggZTUzMWZiNGFlNmIwMjc4ZDZjY2Jk
N2I1ZTI5ZmRhMmFlODc1Nzk5YS4uYjIzZTA5NDI4NzlkYTQwOTMxNWRlYjVjOGI1MDY0YzE3OTk4
ZmE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFi
YXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmNwcApAQCAtMzQsNiArMzQsNyBAQAogCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNl
aG9sZGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKQEAg
LTE0NSw4ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvcjxTUUxWYWx1ZT4gc3FsVmFs
dWVzOwogICAgICAgICBSZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJhY2s+IGNhbGxiYWNrKFN0YXRl
bWVudENhbGxiYWNrOjpjcmVhdGUobV9yZXF1ZXN0Q2FsbGJhY2suZ2V0KCkpKTsKICAgICAgICAg
UmVmUHRyPFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soU3RhdGVtZW50
RXJyb3JDYWxsYmFjazo6Y3JlYXRlKG1fcmVxdWVzdENhbGxiYWNrLmdldCgpKSk7Ci0gICAgICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICB0cmFuc2FjdGlvbi0+ZXhlY3V0ZVNRTCht
X3NxbFN0YXRlbWVudCwgc3FsVmFsdWVzLCBjYWxsYmFjay5yZWxlYXNlKCksIGVycm9yQ2FsbGJh
Y2sucmVsZWFzZSgpLCBlYyk7CisgICAgICAgIHRyYW5zYWN0aW9uLT5leGVjdXRlU1FMKG1fc3Fs
U3RhdGVtZW50LCBzcWxWYWx1ZXMsIGNhbGxiYWNrLnJlbGVhc2UoKSwgZXJyb3JDYWxsYmFjay5y
ZWxlYXNlKCksIElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmNwcAppbmRleCAzYTc4YTJiMDNmYTg3OWU4ZGEzNTQ0ZWQ1YWMyZGI3
YmMzN2MxMzg1Li4yYjBkNjQ0MzE5Zjk0ZGIxMWYzNzE2YjMyODcxOWU4ZjdkNDEyNjBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50LmNwcApAQCAtNDk4LDggKzQ5OCw3IEBAIGJvb2wgRmlsZUNvbnRlbnRSZXF1ZXN0OjpkaWRH
ZXRGaWxlKEZpbGUqIGZpbGUpCiAgICAgbV9yZWFkZXItPnNldE9ubG9hZCh0aGlzKTsKICAgICBt
X3JlYWRlci0+c2V0T25lcnJvcih0aGlzKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIG1fcmVhZGVyLT5yZWFkQXNBcnJheUJ1ZmZlcihibG9iLmdldCgpLCBlYyk7CisgICAgbV9y
ZWFkZXItPnJlYWRBc0FycmF5QnVmZmVyKGJsb2IuZ2V0KCksIElHTk9SRV9FWENFUFRJT04pOwog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKaW5k
ZXggMmQzMTkyYjZiMzk4MjNjODkyMzE5MDU5ZmU2MDgwNTMxOTE5MzQ2ZS4uN2ViNzVjYTUyYWQ0
M2M3OWQ5MjZhN2Y2MzZjNjhmZjU2YzY1MGRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01TZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0
aW9uLmNwcApAQCAtMzk3LDExICszOTcsMTAgQEAgdm9pZCBET01TZWxlY3Rpb246OmFkZFJhbmdl
KFJhbmdlKiByKQogICAgIH0KIAogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3Rpb24t
PnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgaWYgKHItPmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZTo6U1RBUlRfVE9fU1RB
UlQsIHJhbmdlLmdldCgpLCBlYykgPT0gLTEpIHsKKyAgICBpZiAoci0+Y29tcGFyZUJvdW5kYXJ5
UG9pbnRzKFJhbmdlOjpTVEFSVF9UT19TVEFSVCwgcmFuZ2UuZ2V0KCksIElHTk9SRV9FWENFUFRJ
T04pID09IC0xKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgZGlzY29udGlndW91cyBz
ZWxlY3Rpb24uIFdlIGRvbid0IGRvIGFueXRoaW5nIGlmIHIgYW5kIHJhbmdlIGRvbid0IGludGVy
c2VjdC4KLSAgICAgICAgaWYgKHItPmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZTo6U1RBUlRf
VE9fRU5ELCByYW5nZS5nZXQoKSwgZWMpID4gLTEpIHsKLSAgICAgICAgICAgIGlmIChyLT5jb21w
YXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OkVORF9UT19FTkQsIHJhbmdlLmdldCgpLCBlYykgPT0g
LTEpCisgICAgICAgIGlmIChyLT5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OlNUQVJUX1RP
X0VORCwgcmFuZ2UuZ2V0KCksIElHTk9SRV9FWENFUFRJT04pID4gLTEpIHsKKyAgICAgICAgICAg
IGlmIChyLT5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OkVORF9UT19FTkQsIHJhbmdlLmdl
dCgpLCBJR05PUkVfRVhDRVBUSU9OKSA9PSAtMSkKICAgICAgICAgICAgICAgICAvLyBUaGUgb3Jp
Z2luYWwgcmFuZ2UgYW5kIHIgaW50ZXJzZWN0LgogICAgICAgICAgICAgICAgIHNlbGVjdGlvbi0+
c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oci0+c3RhcnRQb3NpdGlvbigpLCByYW5nZS0+
ZW5kUG9zaXRpb24oKSwgRE9XTlNUUkVBTSkpOwogICAgICAgICAgICAgZWxzZQpAQCAtNDEwLDgg
KzQwOSw4IEBAIHZvaWQgRE9NU2VsZWN0aW9uOjphZGRSYW5nZShSYW5nZSogcikKICAgICAgICAg
fQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgZGlzY29udGlndW91
cyBzZWxlY3Rpb24uIFdlIGRvbid0IGRvIGFueXRoaW5nIGlmIHIgYW5kIHJhbmdlIGRvbid0IGlu
dGVyc2VjdC4KLSAgICAgICAgaWYgKHItPmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZTo6RU5E
X1RPX1NUQVJULCByYW5nZS5nZXQoKSwgZWMpIDwgMSAmJiAhZWMpIHsKLSAgICAgICAgICAgIGlm
IChyLT5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OkVORF9UT19FTkQsIHJhbmdlLmdldCgp
LCBlYykgPT0gLTEpCisgICAgICAgIGlmIChyLT5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6
OkVORF9UT19TVEFSVCwgcmFuZ2UuZ2V0KCksIElHTk9SRV9FWENFUFRJT04pIDwgMSAmJiAhSUdO
T1JFX0VYQ0VQVElPTikgeworICAgICAgICAgICAgaWYgKHItPmNvbXBhcmVCb3VuZGFyeVBvaW50
cyhSYW5nZTo6RU5EX1RPX0VORCwgcmFuZ2UuZ2V0KCksIElHTk9SRV9FWENFUFRJT04pID09IC0x
KQogICAgICAgICAgICAgICAgIC8vIFRoZSBvcmlnaW5hbCByYW5nZSBjb250YWlucyByLgogICAg
ICAgICAgICAgICAgIHNlbGVjdGlvbi0+c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmFu
Z2UuZ2V0KCkpKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKaW5kZXggYThhODAwMjgwMzE1Mzc2NmVlNzZmMzVhYjUyNDgxNjYxOWJkYjgzZi4u
MDY1NzEyZDdhNmI1ZTdhY2NkM2Q2NWRiMTkzM2YxOWU4NTczZjhmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTQzOSw4ICs0MzksNyBAQCBib29sIERyYWdDb250
cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2ZW50Rm9yKEZyYW1lKiBpbm5lckZyYW1lLCBEcmFn
RGF0YSogZHJhZwogICAgIEFTU0VSVChtX3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS0+aGFz
Q2FyZXQoKSk7CiAgICAgU3RyaW5nIHRleHQgPSBtX3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIo
KS0+aXNDb250ZW50UmljaGx5RWRpdGFibGUoKSA/ICIiIDogZHJhZ0RhdGEtPmFzUGxhaW5UZXh0
KGlubmVyRnJhbWUpOwogICAgIE5vZGUqIHRhcmdldCA9IGlubmVyRnJhbWUtPmVkaXRvcigpLT5m
aW5kRXZlbnRUYXJnZXRGcm9tKG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5jYXJldFBv
c2l0aW9uKCkpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHJldHVybiB0YXJnZXQt
PmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JEcm9wKGlubmVyRnJhbWUtPmRvY3Vt
ZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0KSwgZWMpOworICAgIHJldHVybiB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JEcm9wKGlubmVyRnJhbWUtPmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpLCB0ZXh0KSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDA4N2EwYWEwY2MxNTEyYjJhMjJmYTJkNWM1ZmYw
Yjg0ODQ0YzUxZWEuLmZiNjMxZjdiMTFiODg3N2U1MGY4MjVlNmUxYTg3Mzc5MTVjODE2ZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIyNjAsMTAgKzIyNjAsOSBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBOb2RlKiB0YXJnZQogICAgICAgICAgICAgICAgIC8vIG5vZGUgb24gbW91c2Ug
ZG93biBpZiBpdCdzIHNlbGVjdGVkIGFuZCBpbnNpZGUgYSBmb2N1c2VkIG5vZGUuIEl0IHdpbGwg
YmUKICAgICAgICAgICAgICAgICAvLyBmb2N1c2VkIGlmIHRoZSB1c2VyIGRvZXMgYSBtb3VzZXVw
IG92ZXIgaXQsIGhvd2V2ZXIsIGJlY2F1c2UgdGhlIG1vdXNldXAKICAgICAgICAgICAgICAgICAv
LyB3aWxsIHNldCBhIHNlbGVjdGlvbiBpbnNpZGUgaXQsIHdoaWNoIHdpbGwgY2FsbCBzZXRGb2N1
c2VOb2RlSWZOZWVkZWQuCi0gICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgICAgICAgICAgICAgTm9kZSogbiA9IG5vZGUtPmlzU2hhZG93Um9vdCgpID8gdG9TaGFkb3dS
b290KG5vZGUpLT5ob3N0KCkgOiBub2RlOwogICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lLT5z
ZWxlY3Rpb24oKS0+aXNSYW5nZSgpCi0gICAgICAgICAgICAgICAgICAgICYmIG1fZnJhbWUtPnNl
bGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLT5jb21wYXJlTm9kZShuLCBlYykgPT0gUmFu
Z2U6Ok5PREVfSU5TSURFCisgICAgICAgICAgICAgICAgICAgICYmIG1fZnJhbWUtPnNlbGVjdGlv
bigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLT5jb21wYXJlTm9kZShuLCBJR05PUkVfRVhDRVBUSU9O
KSA9PSBSYW5nZTo6Tk9ERV9JTlNJREUKICAgICAgICAgICAgICAgICAgICAgJiYgbi0+aXNEZXNj
ZW5kYW50T2YobV9mcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSkpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICAKQEAgLTM5OTEsOCAr
Mzk5MCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRm
b3JtVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgICAgICAgICAgVG91Y2hFdmVudDo6Y3JlYXRl
KGVmZmVjdGl2ZVRvdWNoZXMuZ2V0KCksIHRhcmdldFRvdWNoZXMuZ2V0KCksIGNoYW5nZWRUb3Vj
aGVzW3N0YXRlXS5tX3RvdWNoZXMuZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRlTmFtZSwgdG91Y2hFdmVudFRhcmdldC0+dG9Ob2RlKCktPmRvY3VtZW50KCkt
PmRlZmF1bHRWaWV3KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAs
IDAsIDAsIGV2ZW50LmN0cmxLZXkoKSwgZXZlbnQuYWx0S2V5KCksIGV2ZW50LnNoaWZ0S2V5KCks
IGV2ZW50Lm1ldGFLZXkoKSk7Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICAgICAgICAgIHRvdWNoRXZlbnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQodG91Y2hFdmVudC5nZXQo
KSwgZWMpOworICAgICAgICAgICAgdG91Y2hFdmVudFRhcmdldC0+ZGlzcGF0Y2hFdmVudCh0b3Vj
aEV2ZW50LmdldCgpLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAgICAgIHN3YWxsb3dlZEV2
ZW50ID0gc3dhbGxvd2VkRXZlbnQgfHwgdG91Y2hFdmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpIHx8
IHRvdWNoRXZlbnQtPmRlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lQWN0aW9uU2NoZWR1bGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVBY3Rpb25TY2hlZHVsZXIuY3BwCmluZGV4IGNmMTkzY2M4NGU5
NjZlYzQ0NzI1NmM3ZTFhMzU4YWI0MjVlYjlkYTAuLjQyYjUwYjcxMGI4MjVkZTRiMmVkMDFmMjE4
NWRmODJjNDYyOWRiOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVBY3Rp
b25TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVBY3Rpb25TY2hl
ZHVsZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRnJhbWVBY3Rpb25TY2hlZHVs
ZXIuaCIKIAogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNl
aG9sZGVyLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApA
QCAtNDMsOSArNDQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZpcmUoKQogICAgIHsK
ICAgICAgICAgLy8gT25seSBkaXNwYXRjaCBldmVudHMgdG8gbm9kZXMgdGhhdCBhcmUgaW4gdGhl
IGRvY3VtZW50Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBpZiAobV9l
dmVudFRhcmdldC0+aW5Eb2N1bWVudCgpKQotICAgICAgICAgICAgbV9ldmVudFRhcmdldC0+ZGlz
cGF0Y2hFdmVudChtX2V2ZW50LCBlYyk7CisgICAgICAgICAgICBtX2V2ZW50VGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KG1fZXZlbnQsIElHTk9SRV9FWENFUFRJT04pOwogICAgIH0KIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDhiYjc4ODVlZWQyODIzYjc2MTliNTczN2NmMmQ2
MmEwMmE2YWMwNjAuLmUxNjIyODFlY2IxYWMyZTAyNzNkMjg0ZTE0ZTY2NzZhMjI1N2M4ZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtODU3LDggKzg1Nyw3IEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNl
KEFWQXNzZXRSCiAgICAgICAgIHVuc2lnbmVkIGtleVVSSVNpemUgPSBrZXlVUkkubGVuZ3RoKCkg
KiBzaXplb2YoVUNoYXIpOwogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGluaXREYXRhQnVm
ZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSg0ICsga2V5VVJJU2l6ZSwgMSk7CiAgICAgICAgIFJl
ZlB0cjxEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gRGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1
ZmZlciwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7Ci0gICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgICAgICBpbml0RGF0YVZpZXctPnNldFVpbnQzMigwLCBrZXlVUklT
aXplLCB0cnVlLCBlYyk7CisgICAgICAgIGluaXREYXRhVmlldy0+c2V0VWludDMyKDAsIGtleVVS
SVNpemUsIHRydWUsIElHTk9SRV9FWENFUFRJT04pOwogCiAgICAgICAgIFJlZlB0cjxVaW50MTZB
cnJheT4ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLCA0
LCBrZXlVUkkubGVuZ3RoKCkpOwogICAgICAgICBrZXlVUklBcnJheS0+c2V0UmFuZ2Uoa2V5VVJJ
LmNoYXJhY3RlcnMoKSwga2V5VVJJLmxlbmd0aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCmluZGV4IGZmNzc0ZDJlYTk4OGRmZGYzMDlm
YzQ2M2IwYjgzODYwODdiOGZjMzYuLjFiM2E1MTc0MDQyNWJlZTNhNTIzMGZmMGY3OGVjNjI0MjA1
YTdiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcApAQCAtNTIsMjAgKzUyLDE4IEBA
IFNWR1NWR0VsZW1lbnQqIFNWR0RvY3VtZW50Ojpyb290RWxlbWVudCgpIGNvbnN0CiAKIHZvaWQg
U1ZHRG9jdW1lbnQ6OmRpc3BhdGNoWm9vbUV2ZW50KGZsb2F0IHByZXZTY2FsZSwgZmxvYXQgbmV3
U2NhbGUpCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFNWR1pvb21F
dmVudD4gZXZlbnQgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR1pvb21FdmVudD4oY3JlYXRlRXZl
bnQoIlNWR1pvb21FdmVudHMiLCBlYykpOworICAgIFJlZlB0cjxTVkdab29tRXZlbnQ+IGV2ZW50
ID0gc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdab29tRXZlbnQ+KGNyZWF0ZUV2ZW50KCJTVkdab29t
RXZlbnRzIiwgSUdOT1JFX0VYQ0VQVElPTikpOwogICAgIGV2ZW50LT5pbml0RXZlbnQoZXZlbnRO
YW1lcygpLnpvb21FdmVudCwgdHJ1ZSwgZmFsc2UpOwogICAgIGV2ZW50LT5zZXRQcmV2aW91c1Nj
YWxlKHByZXZTY2FsZSk7CiAgICAgZXZlbnQtPnNldE5ld1NjYWxlKG5ld1NjYWxlKTsKLSAgICBy
b290RWxlbWVudCgpLT5kaXNwYXRjaEV2ZW50KGV2ZW50LnJlbGVhc2UoKSwgZWMpOworICAgIHJv
b3RFbGVtZW50KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQucmVsZWFzZSgpLCBJR05PUkVfRVhDRVBU
SU9OKTsKIH0KIAogdm9pZCBTVkdEb2N1bWVudDo6ZGlzcGF0Y2hTY3JvbGxFdmVudCgpCiB7Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IGNyZWF0
ZUV2ZW50KCJTVkdFdmVudHMiLCBlYyk7CisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IGNyZWF0
ZUV2ZW50KCJTVkdFdmVudHMiLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICBldmVudC0+aW5pdEV2
ZW50KGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudCwgdHJ1ZSwgZmFsc2UpOwotICAgIHJvb3RFbGVt
ZW50KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQucmVsZWFzZSgpLCBlYyk7CisgICAgcm9vdEVsZW1l
bnQoKS0+ZGlzcGF0Y2hFdmVudChldmVudC5yZWxlYXNlKCksIElHTk9SRV9FWENFUFRJT04pOwog
fQogCiBib29sIFNWR0RvY3VtZW50Ojp6b29tQW5kUGFuRW5hYmxlZCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMZW5ndGguY3BwCmluZGV4IDM0YTQxOTU0YTQ5YmYwMDUzYzQ4YWUxNzE4MDFlZmE4ZjQ2
ZThiMWQuLjA2MGJhZTRiMzIzYzU2ODBmYmM5OWZjNTBmZDY0Mzg2OTJiYTY2YjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMZW5ndGguY3BwCkBAIC0xMjUsOCArMTI1LDcgQEAgU1ZHTGVuZ3RoOjpTVkdMZW5n
dGgoU1ZHTGVuZ3RoTW9kZSBtb2RlLCBjb25zdCBTdHJpbmcmIHZhbHVlQXNTdHJpbmcpCiAgICAg
OiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cygwKQogICAgICwgbV91bml0KHN0b3JlVW5pdChtb2Rl
LCBMZW5ndGhUeXBlTnVtYmVyKSkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBz
ZXRWYWx1ZUFzU3RyaW5nKHZhbHVlQXNTdHJpbmcsIGVjKTsKKyAgICBzZXRWYWx1ZUFzU3RyaW5n
KHZhbHVlQXNTdHJpbmcsIElHTk9SRV9FWENFUFRJT04pOwogfQogCiBTVkdMZW5ndGg6OlNWR0xl
bmd0aChjb25zdCBTVkdMZW5ndGhDb250ZXh0JiBjb250ZXh0LCBmbG9hdCB2YWx1ZSwgU1ZHTGVu
Z3RoTW9kZSBtb2RlLCBTVkdMZW5ndGhUeXBlIHVuaXRUeXBlKQpAQCAtMTg3LDggKzE4Niw3IEBA
IFNWR0xlbmd0aE1vZGUgU1ZHTGVuZ3RoOjp1bml0TW9kZSgpIGNvbnN0CiAKIGZsb2F0IFNWR0xl
bmd0aDo6dmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICByZXR1cm4gdmFsdWUoY29udGV4dCwgZWMpOwor
ICAgIHJldHVybiB2YWx1ZShjb250ZXh0LCBJR05PUkVfRVhDRVBUSU9OKTsKIH0KIAogZmxvYXQg
U1ZHTGVuZ3RoOjp2YWx1ZShjb25zdCBTVkdMZW5ndGhDb250ZXh0JiBjb250ZXh0LCBFeGNlcHRp
b25Db2RlJiBlYykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlci5jcHAKaW5kZXggNDQ3YWIxZWYyYzNlOTBkY2E3MGE2ZDBlZTg4ZDFmZTU0NWM0
MTdmMy4uNGUxMzUwZTM0NjM4ZTg4MGI4N2M3NWQ2ZjdmMjE0NTZlYTVmOGI3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTE2Nyw4
ICsxNjcsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpleGl0VGV4dCgpCiAgICAgICAgIHJl
dHVybjsKIAogI2lmICFVU0UoUVhNTFNUUkVBTSkKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBtX2xlYWZUZXh0Tm9kZS0+YXBwZW5kRGF0YSh0b1N0cmluZyhtX2J1ZmZlcmVkVGV4dC5k
YXRhKCksIG1fYnVmZmVyZWRUZXh0LnNpemUoKSksIGVjKTsKKyAgICBtX2xlYWZUZXh0Tm9kZS0+
YXBwZW5kRGF0YSh0b1N0cmluZyhtX2J1ZmZlcmVkVGV4dC5kYXRhKCksIG1fYnVmZmVyZWRUZXh0
LnNpemUoKSksIElHTk9SRV9FWENFUFRJT04pOwogICAgIFZlY3Rvcjx4bWxDaGFyPiBlbXB0eTsK
ICAgICBtX2J1ZmZlcmVkVGV4dC5zd2FwKGVtcHR5KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlclF0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJRdC5jcHAKaW5kZXggYTJlZDUyNDNl
ZWVjYTJmYTk1MDc0NWY2MGJlZDY4ZDVlYjVmMDJjMC4uYWM5MDQ0Y2UyYTAwOTZiYmU0ZTQ1OGY2
ZmI5N2YyZDNlZWFjODBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyUXQuY3BwCkBAIC00MDMsOSArNDAzLDggQEAgdm9pZCBYTUxEb2N1bWVu
dFBhcnNlcjo6cGFyc2UoKQogICAgICAgICAgICAgICAgIFFTdHJpbmcgZW50aXR5ID0gbV9zdHJl
YW0ubmFtZSgpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2xlYWZUZXh0Tm9k
ZSkKICAgICAgICAgICAgICAgICAgICAgZW50ZXJUZXh0KCk7Ci0gICAgICAgICAgICAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgICAgICAgICAgLy8gcURlYnVnKCk8PCIgLS0tLS0t
LSBhZGRpbmcgZW50aXR5ICI8PHN0cjsKLSAgICAgICAgICAgICAgICBtX2xlYWZUZXh0Tm9kZS0+
YXBwZW5kRGF0YShkZWNvZGVOYW1lZEVudGl0eShlbnRpdHkpLCBlYyk7CisgICAgICAgICAgICAg
ICAgbV9sZWFmVGV4dE5vZGUtPmFwcGVuZERhdGEoZGVjb2RlTmFtZWRFbnRpdHkoZW50aXR5KSwg
SUdOT1JFX0VYQ0VQVElPTik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtNDI3LDE0ICs0MjYsMTMgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFy
c2UoKQogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnREb2N1bWVudCgpCiB7CiAgICAgaW5p
dGlhbGl6ZVBhcnNlckNvbnRleHQoKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKIAogICAg
IGlmICghbV9wYXJzaW5nRnJhZ21lbnQpIHsKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0WE1MU3Rh
bmRhbG9uZShtX3N0cmVhbS5pc1N0YW5kYWxvbmVEb2N1bWVudCgpLCBlYyk7CisgICAgICAgIGRv
Y3VtZW50KCktPnNldFhNTFN0YW5kYWxvbmUobV9zdHJlYW0uaXNTdGFuZGFsb25lRG9jdW1lbnQo
KSwgSUdOT1JFX0VYQ0VQVElPTik7CiAKICAgICAgICAgUVN0cmluZ1JlZiB2ZXJzaW9uID0gbV9z
dHJlYW0uZG9jdW1lbnRWZXJzaW9uKCk7CiAgICAgICAgIGlmICghdmVyc2lvbi5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICBkb2N1bWVudCgpLT5zZXRYTUxWZXJzaW9uKHZlcnNpb24sIGVjKTsKKyAg
ICAgICAgICAgIGRvY3VtZW50KCktPnNldFhNTFZlcnNpb24odmVyc2lvbiwgSUdOT1JFX0VYQ0VQ
VElPTik7CiAgICAgICAgIFFTdHJpbmdSZWYgZW5jb2RpbmcgPSBtX3N0cmVhbS5kb2N1bWVudEVu
Y29kaW5nKCk7CiAgICAgICAgIGlmICghZW5jb2RpbmcuaXNFbXB0eSgpKQogICAgICAgICAgICAg
ZG9jdW1lbnQoKS0+c2V0WE1MRW5jb2RpbmcoZW5jb2RpbmcpOwpAQCAtNTY0LDggKzU2Miw3IEBA
IHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlQ2hhcmFjdGVycygpCiB7CiAgICAgaWYgKCFt
X2xlYWZUZXh0Tm9kZSkKICAgICAgICAgZW50ZXJUZXh0KCk7Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgbV9sZWFmVGV4dE5vZGUtPmFwcGVuZERhdGEobV9zdHJlYW0udGV4dCgpLCBl
Yyk7CisgICAgbV9sZWFmVGV4dE5vZGUtPmFwcGVuZERhdGEobV9zdHJlYW0udGV4dCgpLCBJR05P
UkVfRVhDRVBUSU9OKTsKIH0KIAogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187421</attachid>
            <date>2013-02-09 00:27:46 -0800</date>
            <delta_ts>2013-02-09 11:20:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109295-20130209092420.patch</filename>
            <type>text/plain</type>
            <size>61486</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGNiMzY0YzNmNjNmYWFl
Mjk0N2E4NzM4MTNjODdmODc5MjBhNmM3NC4uNzhlYmVlOGQ5ZTVkYTAyNGU2ZGFkNWU3MDFlYjkz
YmZjNjk1NzI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNiBAQAorMjAxMy0wMi0wOSAgTWlr
ZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBJR05PUkVfRVhDRVBU
SU9OIGZvciBpbml0aWFsaXplZCwgYnV0IHVudXNlZCwgRXhjZXB0aW9uQ29kZXMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkyOTUKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBUaGUgbW9uc3RlciBwYXRjaCBp
biBodHRwOi8vd2tidWcuY29tLzEwODc3MSBtaXNzZWQgYW4gZW50aXJlIGNsYXNzIG9mCisgICAg
ICAgIGlnbm9yZWQgZXhjZXB0aW9ucy4gSXQgb25seSBkZWFsdCB3aXRoIGNhbGwgc2l0ZXMgdGhh
dCBuZXZlciBpbml0aWFsaXplZAorICAgICAgICB0aGUgRXhjZXB0aW9uQ29kZSB2YXJpYWJsZSwg
b24gdGhlIGFzc3VtcHRpb24gdGhhdCBvbmx5IHN1Y2ggY2FsbCBzaXRlcworICAgICAgICB3b3Vs
ZCBpZ25vcmUgdGhlIHZhcmlhYmxlJ3MgdmFsdWUuCisKKyAgICAgICAgVGhhdCB3YXMgYSBmbGF3
ZWQgYXNzdW1wdGlvbjogYSBsYXJnZSBudW1iZXIgb2Ygc2l0ZXMgdGhhdCBpbml0aWFsaXplIHRo
ZQorICAgICAgICBFeGNlcHRpb25Db2RlIHRvIDAgaWdub3JlIGl0IHJlZ2FyZGxlc3MuIFRoaXMg
cGF0Y2ggZGVhbHMgd2l0aCB0aGUKKyAgICAgICAgYWxtb3N0LWFzLWxhcmdlIHNldCBvZiBjYWxs
c2l0ZXMgdGhhdCBpbml0aWFsaXplIHRoZSB2YXJpYWJsZSwgcGFzcyBpdCB0bworICAgICAgICBh
IGZ1bmN0aW9uLCBhbmQgdGhlbiBuZXZlciB0b3VjaCBpdCBhZ2Fpbi4KKworICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlOjpmb3JjZUNsb3NlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YXJpYVNlbGVjdGVkVGV4dFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZvckluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluZGV4Rm9yVmlzaWJsZVBvc2l0
aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHA6CisgICAg
ICAgIChzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnRleHRSZWN0cyk6CisgICAgICAgICogZWRpdGluZy9E
ZWxldGVCdXR0b25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXI6OmhpZGUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6c3R5bGVBdFNlbGVjdGlvblN0YXJ0KToK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmNhbkRlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVBc1BsYWlu
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNGcmFnbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnNob3VsZERlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6ZGlzcGF0Y2hDUFBFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YWR2YW5jZVRvTmV4
dE1pc3NwZWxsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRnJhbWVJblJhbmdlKToKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhwYW5k
U2VsZWN0aW9uVG9HcmFudWxhcml0eSk6CisgICAgICAgICogZWRpdGluZy9NZXJnZUlkZW50aWNh
bEVsZW1lbnRzQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXJnZUlkZW50aWNhbEVs
ZW1lbnRzQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9TcGxpdEVsZW1lbnRD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwbGl0RWxlbWVudENvbW1hbmQ6OmRvVW5h
cHBseSk6CisgICAgICAgICogZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTcGxpdFRleHROb2RlQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICog
ZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhwYW5k
VG9QYXJhZ3JhcGhCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxw
ZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxS
YW5nZSk6CisgICAgICAgICogZWRpdGluZy9UZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpjYW5BcHBlbmROZXdMaW5lRmVlZFRvU2VsZWN0aW9uKToKKyAgICAgICAg
KiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kUGxhaW5U
ZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmV4dGVuZFJhbmdlVG9XcmFwcGluZ05vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmlzTm9k
ZVZpc2libHlDb250YWluZWRXaXRoaW4pOgorICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0Qm91bmRhcnkpOgorICAgICAgICAqIGh0bWwv
RmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKiBodG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxLZXlnZW5FbGVtZW50OjpIVE1MS2V5Z2VuRWxlbWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2NyaXB0RWxlbWVudDo6c2V0VGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MVGl0bGVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVsZW1lbnQ6OnNldFRleHQp
OgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVHJhY2tFbGVtZW50OjpkaWRDb21wbGV0ZUxvYWQpOgorICAgICAgICAqIGh0bWwvUmFu
Z2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmNyZWF0
ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAqIGh0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6Cisg
ICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFja0xpc3QuY3BwOgorICAgICAgICAoVGV4dFRyYWNrTGlzdDo6YXN5bmNF
dmVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0OjpwYXRjaERvY3VtZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6YWRkUmFuZ2UpOgorICAgICAgICAqIHBh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6
OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudCk6Cisg
ICAgICAgICogcGFnZS9GcmFtZUFjdGlvblNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEZyYW1lQWN0aW9uOjpmaXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hv
dWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OmRpc3BhdGNoWm9vbUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50OjpkaXNwYXRjaFNjcm9sbEV2ZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6
U1ZHTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6dmFsdWUpOgorICAgICAg
ICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
WE1MRG9jdW1lbnRQYXJzZXI6OmV4aXRUZXh0KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6
OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpzdGFydERvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZUNoYXJhY3Rl
cnMpOgorCiAyMDEzLTAyLTA4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFtNYWNdIHJlc3BlY3QgaW4tYmFuZCBjYXB0aW9uIGNvbG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggMmYy
YTJhZDIzZjQyMjlhNzExOWI3OGM4ZmYzYTdhNTM2N2QyOWVkMC4uNDgyNWQwYzA0MGIxNWQ5MWY5
OTNmODY0ZWRjODM1ZDUxMjU5NjBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtMjYyLDkgKzI2Miw4IEBAIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb24+IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250CiAKIHZvaWQgSURCRGF0YWJhc2U6OmZvcmNlQ2xvc2UoKQogewotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGZvciAoVHJhbnNhY3Rpb25NYXA6OmNvbnN0X2l0ZXJh
dG9yOjpWYWx1ZXMgaXQgPSBtX3RyYW5zYWN0aW9ucy5iZWdpbigpLnZhbHVlcygpLCBlbmQgPSBt
X3RyYW5zYWN0aW9ucy5lbmQoKS52YWx1ZXMoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAo
Kml0KS0+YWJvcnQoZWMpOworICAgICAgICAoKml0KS0+YWJvcnQoSUdOT1JFX0VYQ0VQVElPTik7
CiAgICAgdGhpcy0+Y2xvc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggOTg5YjRk
ZDk4ZTU5N2I1OGE5MGI3MDMxZWY3MjEwMGJhZmU3MDU2Ni4uNWI0NWM3N2Q4NDhhMTM2M2YzNTc1
Y2VlNmY2MzQ0OWIwOGU3MDI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xMzkyLDEwICsx
MzkyLDkgQEAgUGxhaW5UZXh0UmFuZ2UgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYVNl
bGVjdGVkVGV4dFJhbmdlKCkgY29uc3QKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBQ
bGFpblRleHRSYW5nZSgpOwogICAgIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFZp
c2libGVTZWxlY3Rpb24gdmlzaWJsZVNlbGVjdGlvbiA9IHNlbGVjdGlvbigpOwogICAgIFJlZlB0
cjxSYW5nZT4gY3VycmVudFNlbGVjdGlvblJhbmdlID0gdmlzaWJsZVNlbGVjdGlvbi50b05vcm1h
bGl6ZWRSYW5nZSgpOwotICAgIGlmICghY3VycmVudFNlbGVjdGlvblJhbmdlIHx8ICFjdXJyZW50
U2VsZWN0aW9uUmFuZ2UtPmludGVyc2VjdHNOb2RlKG5vZGUsIGVjKSkKKyAgICBpZiAoIWN1cnJl
bnRTZWxlY3Rpb25SYW5nZSB8fCAhY3VycmVudFNlbGVjdGlvblJhbmdlLT5pbnRlcnNlY3RzTm9k
ZShub2RlLCBJR05PUkVfRVhDRVBUSU9OKSkKICAgICAgICAgcmV0dXJuIFBsYWluVGV4dFJhbmdl
KCk7CiAgICAgCiAgICAgaW50IHN0YXJ0ID0gaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24odmlzaWJs
ZVNlbGVjdGlvbi5zdGFydCgpKTsKQEAgLTE4NjQsOSArMTg2Myw4IEBAIFZpc2libGVQb3NpdGlv
biBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQg
aW5kZXgpIGNvCiAgICAgaWYgKGluZGV4IDw9IDApCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9z
aXRpb24oZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpLCBET1dOU1RSRUFNKTsKICAg
ICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
UmFuZ2U6OmNyZWF0ZShtX3JlbmRlcmVyLT5kb2N1bWVudCgpKTsKLSAgICByYW5nZS0+c2VsZWN0
Tm9kZUNvbnRlbnRzKG5vZGUsIGVjKTsKKyAgICByYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKG5v
ZGUsIElHTk9SRV9FWENFUFRJT04pOwogICAgIENoYXJhY3Rlckl0ZXJhdG9yIGl0KHJhbmdlLmdl
dCgpKTsKICAgICBpdC5hZHZhbmNlKGluZGV4IC0gMSk7CiAgICAgcmV0dXJuIFZpc2libGVQb3Np
dGlvbihQb3NpdGlvbihpdC5yYW5nZSgpLT5lbmRDb250YWluZXIoKSwgaXQucmFuZ2UoKS0+ZW5k
T2Zmc2V0KCksIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpLCBVUFNUUkVBTSk7
CkBAIC0xODkwLDEwICsxODg4LDkgQEAgaW50IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omlu
ZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG8KICAgICBpZiAo
aW5kZXhQb3NpdGlvbi5pc051bGwoKSB8fCBoaWdoZXN0RWRpdGFibGVSb290KGluZGV4UG9zaXRp
b24sIEhhc0VkaXRhYmxlQVhSb2xlKSAhPSBub2RlKQogICAgICAgICByZXR1cm4gMDsKICAgICAK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShtX3JlbmRlcmVyLT5kb2N1bWVudCgpKTsKLSAgICByYW5nZS0+c2V0U3RhcnQo
bm9kZSwgMCwgZWMpOwotICAgIHJhbmdlLT5zZXRFbmQoaW5kZXhQb3NpdGlvbiwgZWMpOworICAg
IHJhbmdlLT5zZXRTdGFydChub2RlLCAwLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICByYW5nZS0+
c2V0RW5kKGluZGV4UG9zaXRpb24sIElHTk9SRV9FWENFUFRJT04pOwogCiAjaWYgUExBVEZPUk0o
R1RLKQogICAgIC8vIFdlIG5lZWQgdG8gY29uc2lkZXIgcmVwbGFjZWQgZWxlbWVudHMgZm9yIEdU
SywgYXMgdGhleSB3aWxsIGJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKaW5k
ZXggZTI1Y2RkOTkyODQyMzAyNzVmZGU0ZWNlZDJmMjNmMmYxMzIwMzczMi4uZmFkMDE3MTFlNThl
Njk5NGUzYjQ2YTFlYjg1MzM4ZTRmY2IwMTcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcApAQCAtNDgwLDcgKzQ4MCw2IEBAIHN0YXRpYyB2b2lkIGdldFNlbGVjdGlvbk9m
ZnNldHNGb3JPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlzaWJsCiAg
ICAgLy8gV2UgbmVlZCB0byBmaW5kIHRoZSBleGFjdCBzdGFydCBhbmQgZW5kIHBvc2l0aW9ucyBp
biB0aGUKICAgICAvLyBzZWxlY3RlZCBub2RlIHRoYXQgaW50ZXJzZWN0cyB0aGUgc2VsZWN0aW9u
LCB0byBsYXRlciBvbiBnZXQKICAgICAvLyB0aGUgcmlnaHQgdmFsdWVzIGZvciB0aGUgZWZmZWN0
aXZlIHN0YXJ0IGFuZCBlbmQgb2Zmc2V0cy4KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBQb3NpdGlvbiBub2RlUmFuZ2VTdGFydDsKICAgICBQb3NpdGlvbiBub2RlUmFuZ2VFbmQ7CiAg
ICAgTm9kZSogbm9kZSA9IGNvcmVPYmplY3QtPm5vZGUoKTsKQEAgLTQ5MSw3ICs0OTAsNyBAQCBz
dGF0aWMgdm9pZCBnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGNvcmVPYmplY3QsIFZpc2libAogICAgIC8vIG5vZGVSYW5nZVN0YXJ0IHRvIHRoYXQgcG9z
aXRpb24sIG90aGVyd2lzZSB0byB0aGUgc2VsZWN0aW9uJ3MKICAgICAvLyBzdGFydCBwb3NpdGlv
biAoaXQgd291bGQgYmVsb25nIHRvIHRoZSBub2RlIGFueXdheSkuCiAgICAgTm9kZSogZmlyc3RM
ZWFmTm9kZSA9IG5vZGUtPmZpcnN0RGVzY2VuZGFudCgpOwotICAgIGlmIChzZWxSYW5nZS0+aXNQ
b2ludEluUmFuZ2UoZmlyc3RMZWFmTm9kZSwgMCwgZWMpKQorICAgIGlmIChzZWxSYW5nZS0+aXNQ
b2ludEluUmFuZ2UoZmlyc3RMZWFmTm9kZSwgMCwgSUdOT1JFX0VYQ0VQVElPTikpCiAgICAgICAg
IG5vZGVSYW5nZVN0YXJ0ID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKGZpcnN0TGVhZk5v
ZGUpOwogICAgIGVsc2UKICAgICAgICAgbm9kZVJhbmdlU3RhcnQgPSBzZWxSYW5nZS0+c3RhcnRQ
b3NpdGlvbigpOwpAQCAtNTAxLDcgKzUwMCw3IEBAIHN0YXRpYyB2b2lkIGdldFNlbGVjdGlvbk9m
ZnNldHNGb3JPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlzaWJsCiAg
ICAgLy8gbm9kZVJhbmdlRW5kIHRvIHRoYXQgcG9zaXRpb24sIG90aGVyd2lzZSB0byB0aGUgc2Vs
ZWN0aW9uJ3MKICAgICAvLyBlbmQgcG9zaXRpb24gKGl0IHdvdWxkIGJlbG9uZyB0byB0aGUgbm9k
ZSBhbnl3YXkpLgogICAgIE5vZGUqIGxhc3RMZWFmTm9kZSA9IG5vZGUtPmxhc3REZXNjZW5kYW50
KCk7Ci0gICAgaWYgKHNlbFJhbmdlLT5pc1BvaW50SW5SYW5nZShsYXN0TGVhZk5vZGUsIGxhc3RP
ZmZzZXRJbk5vZGUobGFzdExlYWZOb2RlKSwgZWMpKQorICAgIGlmIChzZWxSYW5nZS0+aXNQb2lu
dEluUmFuZ2UobGFzdExlYWZOb2RlLCBsYXN0T2Zmc2V0SW5Ob2RlKGxhc3RMZWFmTm9kZSksIElH
Tk9SRV9FWENFUFRJT04pKQogICAgICAgICBub2RlUmFuZ2VFbmQgPSBsYXN0UG9zaXRpb25Jbk9y
QWZ0ZXJOb2RlKGxhc3RMZWFmTm9kZSk7CiAgICAgZWxzZQogICAgICAgICBub2RlUmFuZ2VFbmQg
PSBzZWxSYW5nZS0+ZW5kUG9zaXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcAppbmRleCAxZmE1MGI4
NjVjNmVjOTNhMDRjNDM0Y2JmYWY1YmQ3YzczMjRiM2IwLi44MTE2Nzc3Y2NhNTZjMTA5ZWJhNzUx
Y2Q0NDA1ZTRiZDc0ZTQ1ZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwCkBAIC0xNjQsOCArMTY0LDcg
QEAgYm9vbCBzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29y
ZU9iamVjdCwgVmlzaWJsZVNlbGVjdGlvbiYKICAgICAvLyBub2RlIGlzIGFjdHVhbGx5IGluc2lk
ZSB0aGUgcmVnaW9uLCBhdCBsZWFzdCBwYXJ0aWFsbHkuCiAgICAgTm9kZSogbm9kZSA9IGNvcmVP
YmplY3QtPm5vZGUoKTsKICAgICBOb2RlKiBsYXN0RGVzY2VuZGFudCA9IG5vZGUtPmxhc3REZXNj
ZW5kYW50KCk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgcmV0dXJuIChyYW5nZS0+
aW50ZXJzZWN0c05vZGUobm9kZSwgZWMpCisgICAgcmV0dXJuIChyYW5nZS0+aW50ZXJzZWN0c05v
ZGUobm9kZSwgSUdOT1JFX0VYQ0VQVElPTikKICAgICAgICAgJiYgKHJhbmdlLT5lbmRDb250YWlu
ZXIoKSAhPSBub2RlIHx8IHJhbmdlLT5lbmRPZmZzZXQoKSkKICAgICAgICAgJiYgKHJhbmdlLT5z
dGFydENvbnRhaW5lcigpICE9IGxhc3REZXNjZW5kYW50IHx8IHJhbmdlLT5zdGFydE9mZnNldCgp
ICE9IGxhc3RPZmZzZXRJbk5vZGUobGFzdERlc2NlbmRhbnQpKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
aW5kZXggNmRjMTZlMDZhMGRiZjU1Zjc4Nzg2NDRiM2E5ZTIyMmZiY2JkNDQ5Yy4uYTYxYTA3ZDYw
ZDI0MTg3OGUxM2E2ZWYzMzQwYzNhZjlhNWMyN2VlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjYx
Nyw4ICsyNjE3LDcgQEAgdm9pZCBOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogdm9pZCBOb2RlOjp0ZXh0UmVjdHMoVmVjdG9y
PEludFJlY3Q+JiByZWN0cykgY29uc3QKIHsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCgpKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICByYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKGNvbnN0X2Nhc3Q8Tm9kZSo+KHRoaXMp
LCBlYyk7CisgICAgcmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cyhjb25zdF9jYXN0PE5vZGUqPih0
aGlzKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgcmFuZ2UtPnRleHRSZWN0cyhyZWN0cyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIu
Y3BwCmluZGV4IDkwZDI1M2U4MWM4ODE5N2QzYWEwMTU5ODkyMjc0OTVmMGZlY2ZhYjkuLjlhOTYz
N2VhZmNlYWI1MzE4ZTYyZTg2NmZiZWFmNjQwM2JiM2VkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcApAQCAtMzIwLDkgKzMyMCw4
IEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6aGlkZSgpCiAgICAgbV9vdXRsaW5lRWxl
bWVudCA9IDA7CiAgICAgbV9idXR0b25FbGVtZW50ID0gMDsKIAotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIGlmIChtX2NvbnRhaW5lckVsZW1lbnQgJiYgbV9jb250YWluZXJFbGVtZW50
LT5wYXJlbnROb2RlKCkpCi0gICAgICAgIG1fY29udGFpbmVyRWxlbWVudC0+cGFyZW50Tm9kZSgp
LT5yZW1vdmVDaGlsZChtX2NvbnRhaW5lckVsZW1lbnQuZ2V0KCksIGVjKTsKKyAgICAgICAgbV9j
b250YWluZXJFbGVtZW50LT5wYXJlbnROb2RlKCktPnJlbW92ZUNoaWxkKG1fY29udGFpbmVyRWxl
bWVudC5nZXQoKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAKICAgICBpZiAobV90YXJnZXQpIHsKICAg
ICAgICAgaWYgKG1fd2FzU3RhdGljUG9zaXRpb25lZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmNwcAppbmRleCAyOTZhNjNjYjAwMTRmZWMzYmI2YmM0YzJkN2Y1OWUxYTQ5YjA4
YjVhLi42MTU2MWI3MjFlYzJiY2Y1ZmY5MDkyNzU2YmEwNWU5ZWI2MGJiZjMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC0xMjIzLDggKzEyMjMsNyBAQCBQYXNz
UmVmUHRyPEVkaXRpbmdTdHlsZT4gRWRpdGluZ1N0eWxlOjpzdHlsZUF0U2VsZWN0aW9uU3RhcnQo
Y29uc3QgVmlzaWJsZVNlbGVjdAogICAgIC8vIGFuZCBmaW5kIHRoZSBiYWNrZ3JvdW5kIGNvbG9y
IG9mIHRoZSBjb21tb24gYW5jZXN0b3IuCiAgICAgaWYgKHNob3VsZFVzZUJhY2tncm91bmRDb2xv
ckluRWZmZWN0ICYmIChzZWxlY3Rpb24uaXNSYW5nZSgpIHx8IGhhc1RyYW5zcGFyZW50QmFja2dy
b3VuZENvbG9yKHN0eWxlLT5tX211dGFibGVTdHlsZS5nZXQoKSkpKSB7CiAgICAgICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2Uoc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkpOwotICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgaWYgKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZh
bHVlID0gYmFja2dyb3VuZENvbG9ySW5FZmZlY3QocmFuZ2UtPmNvbW1vbkFuY2VzdG9yQ29udGFp
bmVyKGVjKSkpCisgICAgICAgIGlmIChQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGJhY2tn
cm91bmRDb2xvckluRWZmZWN0KHJhbmdlLT5jb21tb25BbmNlc3RvckNvbnRhaW5lcihJR05PUkVf
RVhDRVBUSU9OKSkpCiAgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IsIHZhbHVlLT5jc3NUZXh0KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCmluZGV4IGJkMTQ1YjZlMzIwYjFkZGI1ZTczMGQ1Y2VhNmJjZWE0ZjU2ZWEz
Y2IuLjNiOWYzYTQwYzM4M2MyOWJjNjc4MzQzYzMzNjkxNGYwZDM5ZGI5NjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKQEAgLTI2Myw4ICsyNjMsNyBAQCBib29sIEVkaXRvcjo6Y2FuRGVs
ZXRlUmFuZ2UoUmFuZ2UqIHJhbmdlKSBjb25zdAogICAgIGlmICghc3RhcnRDb250YWluZXItPnJl
bmRlcmVySXNFZGl0YWJsZSgpIHx8ICFlbmRDb250YWluZXItPnJlbmRlcmVySXNFZGl0YWJsZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgIGlm
IChyYW5nZS0+Y29sbGFwc2VkKGVjKSkgeworICAgIGlmIChyYW5nZS0+Y29sbGFwc2VkKElHTk9S
RV9FWENFUFRJT04pKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFydChyYW5nZS0+c3Rh
cnRQb3NpdGlvbigpLCBET1dOU1RSRUFNKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZp
b3VzID0gc3RhcnQucHJldmlvdXMoKTsKICAgICAgICAgLy8gRklYTUU6IFdlIHNvbWV0aW1lcyBh
bGxvdyBkZWxldGlvbnMgYXQgdGhlIHN0YXJ0IG9mIGVkaXRhYmxlIHJvb3RzLCBsaWtlIHdoZW4g
dGhlIGNhcmV0IGlzIGluIGFuIGVtcHR5IGxpc3QgaXRlbS4KQEAgLTM0NSw4ICszNDQsNyBAQCB2
b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBi
b29sIHNtYXJ0UmVwbGFjZSkKICAgICBOb2RlKiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRGcm9t
U2VsZWN0aW9uKCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50Ojpj
cmVhdGVGb3JQbGFpblRleHRQYXN0ZShtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwg
cGFzdGluZ1RleHQsIHNtYXJ0UmVwbGFjZSksIGVjKTsKKyAgICB0YXJnZXQtPmRpc3BhdGNoRXZl
bnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShtX2ZyYW1lLT5kb2N1bWVudCgp
LT5kb21XaW5kb3coKSwgcGFzdGluZ1RleHQsIHNtYXJ0UmVwbGFjZSksIElHTk9SRV9FWENFUFRJ
T04pOwogfQogCiB2b2lkIEVkaXRvcjo6cGFzdGVBc0ZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gcGFzdGluZ0ZyYWdtZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRj
aFN0eWxlKQpAQCAtMzU0LDggKzM1Miw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQo
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBwYXN0aW5nRnJhZ21lbnQsIGJvb2wKICAgICBO
b2RlKiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCk7CiAgICAgaWYgKCF0
YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB0
YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKG1f
ZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCBwYXN0aW5nRnJhZ21lbnQsIHNtYXJ0UmVw
bGFjZSwgbWF0Y2hTdHlsZSksIGVjKTsKKyAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2
ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRv
dygpLCBwYXN0aW5nRnJhZ21lbnQsIHNtYXJ0UmVwbGFjZSwgbWF0Y2hTdHlsZSksIElHTk9SRV9F
WENFUFRJT04pOwogfQogCiB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dEJ5cGFzc2luZ0RI
VE1MKCkKQEAgLTQzOSw4ICs0MzYsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBFZGl0b3I6OnNlbGVj
dGVkUmFuZ2UoKQogCiBib29sIEVkaXRvcjo6c2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2UqIHJhbmdl
KSBjb25zdAogewotICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgaWYgKCFyYW5nZSB8fCByYW5n
ZS0+Y29sbGFwc2VkKGVjKSkKKyAgICBpZiAoIXJhbmdlIHx8IHJhbmdlLT5jb2xsYXBzZWQoSUdO
T1JFX0VYQ0VQVElPTikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBpZiAoIWNh
bkRlbGV0ZVJhbmdlKHJhbmdlKSkKQEAgLTY1MCw5ICs2NDYsOCBAQCBib29sIEVkaXRvcjo6ZGlz
cGF0Y2hDUFBFdmVudChjb25zdCBBdG9taWNTdHJpbmcgJmV2ZW50VHlwZSwgQ2xpcGJvYXJkQWNj
ZXNzUG9saQogICAgIAogICAgIFJlZlB0cjxDbGlwYm9hcmQ+IGNsaXBib2FyZCA9IG5ld0dlbmVy
YWxDbGlwYm9hcmQocG9saWN5LCBtX2ZyYW1lKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIFJlZlB0cjxFdmVudD4gZXZ0ID0gQ2xpcGJvYXJkRXZlbnQ6OmNyZWF0ZShldmVudFR5
cGUsIHRydWUsIHRydWUsIGNsaXBib2FyZCk7Ci0gICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2
dCwgZWMpOworICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldnQsIElHTk9SRV9FWENFUFRJT04p
OwogICAgIGJvb2wgbm9EZWZhdWx0UHJvY2Vzc2luZyA9IGV2dC0+ZGVmYXVsdFByZXZlbnRlZCgp
OwogICAgIGlmIChub0RlZmF1bHRQcm9jZXNzaW5nICYmIHBvbGljeSA9PSBDbGlwYm9hcmRXcml0
YWJsZSkgewogICAgICAgICBQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkID0gUGFzdGVib2FyZDo6Z2Vu
ZXJhbFBhc3RlYm9hcmQoKTsKQEAgLTE0MTUsOCArMTQxMCw3IEBAIHZvaWQgRWRpdG9yOjpzZXRD
b21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFNldENvbXBvc2l0aW9uTW9kZSBtb2RlKQog
ICAgIE5vZGUqIHRhcmdldCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCk7CiAg
ICAgaWYgKHRhcmdldCkgewogICAgICAgICBSZWZQdHI8Q29tcG9zaXRpb25FdmVudD4gZXZlbnQg
PSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZl
bnQsIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0KTsKLSAgICAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCwg
ZWMpOworICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQsIElHTk9SRV9FWENFUFRJ
T04pOwogICAgIH0KIAogICAgIC8vIElmIHRleHQgaXMgZW1wdHksIHRoZW4gZGVsZXRlIHRoZSBv
bGQgY29tcG9zaXRpb24gaGVyZS4gIElmIHRleHQgaXMgbm9uLWVtcHR5LCBJbnNlcnRUZXh0Q29t
bWFuZDo6aW5wdXQKQEAgLTE0ODYsOSArMTQ4MCw4IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3Np
dGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGlu
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCk7CiAgICAgICAgIH0KLSAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgICAgIGlmIChldmVudC5nZXQoKSkKLSAgICAgICAgICAgIHRhcmdl
dC0+ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOworICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRj
aEV2ZW50KGV2ZW50LCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICB9CiAKICAgICAvLyBJZiB0ZXh0
IGlzIGVtcHR5LCB0aGVuIGRlbGV0ZSB0aGUgb2xkIGNvbXBvc2l0aW9uIGhlcmUuICBJZiB0ZXh0
IGlzIG5vbi1lbXB0eSwgSW5zZXJ0VGV4dENvbW1hbmQ6OmlucHV0CkBAIC0xNTY1LDggKzE1NTgs
NiBAQCB2b2lkIEVkaXRvcjo6bGVhcm5TcGVsbGluZygpCiAKIHZvaWQgRWRpdG9yOjphZHZhbmNl
VG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKIHsKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLQogICAgIC8vIFRoZSBiYXNpYyBhcHByb2FjaCBpcyB0byBzZWFy
Y2ggaW4gdHdvIHBoYXNlcyAtIGZyb20gdGhlIHNlbGVjdGlvbiBlbmQgdG8gdGhlIGVuZCBvZiB0
aGUgZG9jLCBhbmQKICAgICAvLyB0aGVuIHdlIHdyYXAgYW5kIHNlYXJjaCBmcm9tIHRoZSBkb2Mg
c3RhcnQgdG8gKGFwcHJveGltYXRlbHkpIHdoZXJlIHdlIHN0YXJ0ZWQuCiAgICAgCkBAIC0xNjAw
LDE0ICsxNTkxLDE0IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9v
bCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAg
ICAgICAgIFBvc2l0aW9uIHJhbmdlQ29tcGxpYW50UG9zaXRpb24gPSBwb3NpdGlvbi5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKTsKLSAgICAgICAgc3BlbGxpbmdTZWFyY2hSYW5nZS0+c2V0U3Rh
cnQocmFuZ2VDb21wbGlhbnRQb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpLCByYW5nZUNvbXBsaWFu
dFBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVjKTsKKyAgICAgICAgc3BlbGxp
bmdTZWFyY2hSYW5nZS0+c2V0U3RhcnQocmFuZ2VDb21wbGlhbnRQb3NpdGlvbi5kZXByZWNhdGVk
Tm9kZSgpLCByYW5nZUNvbXBsaWFudFBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCks
IElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICBzdGFydGVkV2l0aFNlbGVjdGlvbiA9IGZhbHNl
OyAvLyB3b24ndCBuZWVkIHRvIHdyYXAKICAgICB9CiAgICAgCiAgICAgLy8gdG9wTm9kZSBkZWZp
bmVzIHRoZSB3aG9sZSByYW5nZSB3ZSB3YW50IHRvIG9wZXJhdGUgb24gCiAgICAgTm9kZSogdG9w
Tm9kZSA9IGhpZ2hlc3RFZGl0YWJsZVJvb3QocG9zaXRpb24pOwogICAgIC8vIEZJWE1FOiBsYXN0
T2Zmc2V0Rm9yRWRpdGluZygpIGlzIHdyb25nIGhlcmUgaWYgZWRpdGluZ0lnbm9yZXNDb250ZW50
KGhpZ2hlc3RFZGl0YWJsZVJvb3QoKSkgcmV0dXJucyB0cnVlIChlLmcuIGEgPHRhYmxlPikKLSAg
ICBzcGVsbGluZ1NlYXJjaFJhbmdlLT5zZXRFbmQodG9wTm9kZSwgbGFzdE9mZnNldEZvckVkaXRp
bmcodG9wTm9kZSksIGVjKTsKKyAgICBzcGVsbGluZ1NlYXJjaFJhbmdlLT5zZXRFbmQodG9wTm9k
ZSwgbGFzdE9mZnNldEZvckVkaXRpbmcodG9wTm9kZSksIElHTk9SRV9FWENFUFRJT04pOwogCiAg
ICAgLy8gSWYgc3BlbGxpbmdTZWFyY2hSYW5nZSBzdGFydHMgaW4gdGhlIG1pZGRsZSBvZiBhIHdv
cmQsIGFkdmFuY2UgdG8gdGhlIG5leHQgd29yZCBzbyB3ZSBzdGFydCBjaGVja2luZwogICAgIC8v
IGF0IGEgd29yZCBib3VuZGFyeS4gR29pbmcgYmFjayBieSBvbmUgY2hhciBhbmQgdGhlbiBmb3J3
YXJkIGJ5IGEgd29yZCBkb2VzIHRoZSB0cmljay4KQEAgLTE2MTgsNyArMTYwOSw3IEBAIHZvaWQg
RWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlv
bikKICAgICAgICAgLy8gZWxzZSB3ZSB3ZXJlIGFscmVhZHkgYXQgdGhlIHN0YXJ0IG9mIHRoZSBl
ZGl0YWJsZSBub2RlCiAgICAgfQogCi0gICAgaWYgKHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNvbGxh
cHNlZChlYykpCisgICAgaWYgKHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNvbGxhcHNlZChJR05PUkVf
RVhDRVBUSU9OKSkKICAgICAgICAgcmV0dXJuOyAvLyBub3RoaW5nIHRvIHNlYXJjaCBpbgogICAg
IAogICAgIC8vIEdldCB0aGUgc3BlbGwgY2hlY2tlciBpZiBpdCBpcyBhdmFpbGFibGUKQEAgLTE2
NDMsNyArMTYzNCw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9v
bCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICBTdHJpbmcgZm91bmRJdGVtOwogICAgIFJlZlB0
cjxSYW5nZT4gZmlyc3RNaXNzcGVsbGluZ1JhbmdlOwogICAgIGlmICh1bmlmaWVkVGV4dENoZWNr
ZXJFbmFibGVkKCkpIHsKLSAgICAgICAgZ3JhbW1hclNlYXJjaFJhbmdlID0gc3BlbGxpbmdTZWFy
Y2hSYW5nZS0+Y2xvbmVSYW5nZShlYyk7CisgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9IHNw
ZWxsaW5nU2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2UoSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgICAg
IGZvdW5kSXRlbSA9IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwgc3BlbGxpbmdTZWFyY2hS
YW5nZSkuZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoaXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKCksIGlzU3BlbGxpbmcsIGZvdW5kT2Zmc2V0LCBncmFtbWFyRGV0YWlsKTsKICAgICAg
ICAgaWYgKGlzU3BlbGxpbmcpIHsKICAgICAgICAgICAgIG1pc3NwZWxsZWRXb3JkID0gZm91bmRJ
dGVtOwpAQCAtMTY1NiwxMiArMTY0NywxMiBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1p
c3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIG1pc3NwZWxsZWRX
b3JkID0gVGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBzcGVsbGluZ1NlYXJjaFJhbmdlKS5m
aW5kRmlyc3RNaXNzcGVsbGluZyhtaXNzcGVsbGluZ09mZnNldCwgZmFsc2UsIGZpcnN0TWlzc3Bl
bGxpbmdSYW5nZSk7CiAKICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKLSAgICAgICAgZ3JhbW1h
clNlYXJjaFJhbmdlID0gc3BlbGxpbmdTZWFyY2hSYW5nZS0+Y2xvbmVSYW5nZShlYyk7CisgICAg
ICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2Uo
SUdOT1JFX0VYQ0VQVElPTik7CiAgICAgICAgIGlmICghbWlzc3BlbGxlZFdvcmQuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICAvLyBTdG9wIGxvb2tpbmcgYXQgc3RhcnQgb2YgbmV4dCBtaXNzcGVs
bGVkIHdvcmQKICAgICAgICAgICAgIENoYXJhY3Rlckl0ZXJhdG9yIGNoYXJzKGdyYW1tYXJTZWFy
Y2hSYW5nZS5nZXQoKSk7CiAgICAgICAgICAgICBjaGFycy5hZHZhbmNlKG1pc3NwZWxsaW5nT2Zm
c2V0KTsKLSAgICAgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZS0+c2V0RW5kKGNoYXJzLnJhbmdl
KCktPnN0YXJ0Q29udGFpbmVyKCksIGNoYXJzLnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCksIGVjKTsK
KyAgICAgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZS0+c2V0RW5kKGNoYXJzLnJhbmdlKCktPnN0
YXJ0Q29udGFpbmVyKCksIGNoYXJzLnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCksIElHTk9SRV9FWENF
UFRJT04pOwogICAgICAgICB9CiAgICAgCiAgICAgICAgIGlmIChpc0dyYW1tYXJDaGVja2luZ0Vu
YWJsZWQoKSkKQEAgLTE2NzIsMTIgKzE2NjMsMTIgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05l
eHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgIC8vIElmIHdlIGZv
dW5kIG5laXRoZXIgYmFkIGdyYW1tYXIgbm9yIGEgbWlzc3BlbGxlZCB3b3JkLCB3cmFwIGFuZCB0
cnkgYWdhaW4gKGJ1dCBkb24ndCBib3RoZXIgaWYgd2Ugc3RhcnRlZCBhdCB0aGUgYmVnaW5uaW5n
IG9mIHRoZQogICAgIC8vIGJsb2NrIHJhdGhlciB0aGFuIGF0IGEgc2VsZWN0aW9uKS4KICAgICBp
ZiAoc3RhcnRlZFdpdGhTZWxlY3Rpb24gJiYgIW1pc3NwZWxsZWRXb3JkICYmICFiYWRHcmFtbWFy
UGhyYXNlKSB7Ci0gICAgICAgIHNwZWxsaW5nU2VhcmNoUmFuZ2UtPnNldFN0YXJ0KHRvcE5vZGUs
IDAsIGVjKTsKKyAgICAgICAgc3BlbGxpbmdTZWFyY2hSYW5nZS0+c2V0U3RhcnQodG9wTm9kZSwg
MCwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgICAgIC8vIGdvaW5nIHVudGlsIHRoZSBlbmQgb2Yg
dGhlIHZlcnkgZmlyc3QgY2h1bmsgd2UgdGVzdGVkIGlzIGZhciBlbm91Z2gKLSAgICAgICAgc3Bl
bGxpbmdTZWFyY2hSYW5nZS0+c2V0RW5kKHNlYXJjaEVuZE5vZGVBZnRlcldyYXAsIHNlYXJjaEVu
ZE9mZnNldEFmdGVyV3JhcCwgZWMpOworICAgICAgICBzcGVsbGluZ1NlYXJjaFJhbmdlLT5zZXRF
bmQoc2VhcmNoRW5kTm9kZUFmdGVyV3JhcCwgc2VhcmNoRW5kT2Zmc2V0QWZ0ZXJXcmFwLCBJR05P
UkVfRVhDRVBUSU9OKTsKICAgICAgICAgCiAgICAgICAgIGlmICh1bmlmaWVkVGV4dENoZWNrZXJF
bmFibGVkKCkpIHsKLSAgICAgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5nU2Vh
cmNoUmFuZ2UtPmNsb25lUmFuZ2UoZWMpOworICAgICAgICAgICAgZ3JhbW1hclNlYXJjaFJhbmdl
ID0gc3BlbGxpbmdTZWFyY2hSYW5nZS0+Y2xvbmVSYW5nZShJR05PUkVfRVhDRVBUSU9OKTsKICAg
ICAgICAgICAgIGZvdW5kSXRlbSA9IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwgc3BlbGxp
bmdTZWFyY2hSYW5nZSkuZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoaXNHcmFtbWFy
Q2hlY2tpbmdFbmFibGVkKCksIGlzU3BlbGxpbmcsIGZvdW5kT2Zmc2V0LCBncmFtbWFyRGV0YWls
KTsKICAgICAgICAgICAgIGlmIChpc1NwZWxsaW5nKSB7CiAgICAgICAgICAgICAgICAgbWlzc3Bl
bGxlZFdvcmQgPSBmb3VuZEl0ZW07CkBAIC0xNjkwLDEyICsxNjgxLDEyIEBAIHZvaWQgRWRpdG9y
OjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAg
ICAgICAgICAgIG1pc3NwZWxsZWRXb3JkID0gVGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBz
cGVsbGluZ1NlYXJjaFJhbmdlKS5maW5kRmlyc3RNaXNzcGVsbGluZyhtaXNzcGVsbGluZ09mZnNl
dCwgZmFsc2UsIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAKICNpZiBVU0UoR1JBTU1BUl9DSEVD
S0lORykKLSAgICAgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5nU2VhcmNoUmFu
Z2UtPmNsb25lUmFuZ2UoZWMpOworICAgICAgICAgICAgZ3JhbW1hclNlYXJjaFJhbmdlID0gc3Bl
bGxpbmdTZWFyY2hSYW5nZS0+Y2xvbmVSYW5nZShJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAg
ICAgIGlmICghbWlzc3BlbGxlZFdvcmQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgLy8g
U3RvcCBsb29raW5nIGF0IHN0YXJ0IG9mIG5leHQgbWlzc3BlbGxlZCB3b3JkCiAgICAgICAgICAg
ICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgY2hhcnMoZ3JhbW1hclNlYXJjaFJhbmdlLmdldCgpKTsK
ICAgICAgICAgICAgICAgICBjaGFycy5hZHZhbmNlKG1pc3NwZWxsaW5nT2Zmc2V0KTsKLSAgICAg
ICAgICAgICAgICBncmFtbWFyU2VhcmNoUmFuZ2UtPnNldEVuZChjaGFycy5yYW5nZSgpLT5zdGFy
dENvbnRhaW5lcigpLCBjaGFycy5yYW5nZSgpLT5zdGFydE9mZnNldCgpLCBlYyk7CisgICAgICAg
ICAgICAgICAgZ3JhbW1hclNlYXJjaFJhbmdlLT5zZXRFbmQoY2hhcnMucmFuZ2UoKS0+c3RhcnRD
b250YWluZXIoKSwgY2hhcnMucmFuZ2UoKS0+c3RhcnRPZmZzZXQoKSwgSUdOT1JFX0VYQ0VQVElP
Tik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChpc0dyYW1tYXJDaGVja2luZ0Vu
YWJsZWQoKSkKQEAgLTI3OTQsOCArMjc4NSw3IEBAIHN0YXRpYyBib29sIGlzRnJhbWVJblJhbmdl
KEZyYW1lKiBmcmFtZSwgUmFuZ2UqIHJhbmdlKQogICAgIGJvb2wgaW5SYW5nZSA9IGZhbHNlOwog
ICAgIGZvciAoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSBmcmFtZS0+b3du
ZXJFbGVtZW50KCk7IG93bmVyRWxlbWVudDsgb3duZXJFbGVtZW50ID0gb3duZXJFbGVtZW50LT5k
b2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSkgewogICAgICAgICBpZiAob3duZXJFbGVtZW50LT5k
b2N1bWVudCgpID09IHJhbmdlLT5vd25lckRvY3VtZW50KCkpIHsKLSAgICAgICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgaW5SYW5nZSA9IHJhbmdlLT5pbnRlcnNlY3Rz
Tm9kZShvd25lckVsZW1lbnQsIGVjKTsKKyAgICAgICAgICAgIGluUmFuZ2UgPSByYW5nZS0+aW50
ZXJzZWN0c05vZGUob3duZXJFbGVtZW50LCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKaW5kZXggNjc2OTQzZmUxMjVjMjkzMDFhNDI4YTk3ZjVjOTZiZTBiMmU3Y2I1Yi4u
OGJhMzZjZDE1MGE0YjJiYmZmMDEzODEwODMxZjI5Y2FlZTc1YWIwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0yMTQsOCArMjE0LDcgQEAgc3RhdGljIGJv
b2wgZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShGcmFtZSogZnJhbWUsIFRleHRHcmFudWxh
cml0eSBncmFudWxhcmkKICAgICBSZWZQdHI8UmFuZ2U+IG5ld1JhbmdlID0gc2VsZWN0aW9uLnRv
Tm9ybWFsaXplZFJhbmdlKCk7CiAgICAgaWYgKCFuZXdSYW5nZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChuZXdSYW5nZS0+Y29sbGFw
c2VkKGVjKSkKKyAgICBpZiAobmV3UmFuZ2UtPmNvbGxhcHNlZChJR05PUkVfRVhDRVBUSU9OKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFJlZlB0cjxSYW5nZT4gb2xkUmFuZ2UgPSBmcmFt
ZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgRUFm
ZmluaXR5IGFmZmluaXR5ID0gZnJhbWUtPnNlbGVjdGlvbigpLT5hZmZpbml0eSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21t
YW5kLmNwcAppbmRleCA5Y2E4YTkwMDE5N2E2YWMzMjFjMTgyMWRmMjI0YjFjMmY3NDA3YWJmLi4x
OGExNTU1ZmNkNjkzMWFmMzVjOTQ3MDczODFhM2U5OGI0MDA3NWM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmNw
cApAQCAtNDcsMTcgKzQ3LDE1IEBAIHZvaWQgTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQ6
OmRvQXBwbHkoKQogCiAgICAgbV9hdENoaWxkID0gbV9lbGVtZW50Mi0+Zmlyc3RDaGlsZCgpOwog
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0KICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4g
Y2hpbGRyZW47CiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG1fZWxlbWVudDEtPmZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGNoaWxkcmVu
LmFwcGVuZChjaGlsZCk7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGNoaWxkcmVuLnNpemUoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgbV9lbGVtZW50Mi0+
aW5zZXJ0QmVmb3JlKGNoaWxkcmVuW2ldLnJlbGVhc2UoKSwgbV9hdENoaWxkLmdldCgpLCBlYyk7
CisgICAgICAgIG1fZWxlbWVudDItPmluc2VydEJlZm9yZShjaGlsZHJlbltpXS5yZWxlYXNlKCks
IG1fYXRDaGlsZC5nZXQoKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAKLSAgICBtX2VsZW1lbnQxLT5y
ZW1vdmUoZWMpOworICAgIG1fZWxlbWVudDEtPnJlbW92ZShJR05PUkVfRVhDRVBUSU9OKTsKIH0K
IAogdm9pZCBNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZDo6ZG9VbmFwcGx5KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwCmluZGV4IGFjNzdi
ZjkxNmY1ODQ0MDExYjNmZjIwZTgyYTc2NjY3MjZhMjQwMTMuLjk2Y2MyNGExMTRmNzI5YjIyNDc2
ZDNmMjBhN2JkMTBjMmQzYTcwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxp
dEVsZW1lbnRDb21tYW5kLmNwcApAQCAtODYsMTcgKzg2LDE1IEBAIHZvaWQgU3BsaXRFbGVtZW50
Q29tbWFuZDo6ZG9VbmFwcGx5KCkKIAogICAgIFJlZlB0cjxOb2RlPiByZWZDaGlsZCA9IG1fZWxl
bWVudDItPmZpcnN0Q2hpbGQoKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotCiAgICAg
c2l6ZV90IHNpemUgPSBjaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpCi0gICAgICAgIG1fZWxlbWVudDItPmluc2VydEJlZm9yZShjaGlsZHJlbltp
XS5nZXQoKSwgcmVmQ2hpbGQuZ2V0KCksIGVjKTsKKyAgICAgICAgbV9lbGVtZW50Mi0+aW5zZXJ0
QmVmb3JlKGNoaWxkcmVuW2ldLmdldCgpLCByZWZDaGlsZC5nZXQoKSwgSUdOT1JFX0VYQ0VQVElP
Tik7CiAKICAgICAvLyBSZWNvdmVyIHRoZSBpZCBhdHRyaWJ1dGUgb2YgdGhlIG9yaWdpbmFsIGVs
ZW1lbnQuCiAgICAgaWYgKG1fZWxlbWVudDEtPmhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OmlkQXR0
cikpCiAgICAgICAgIG1fZWxlbWVudDItPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmlkQXR0ciwg
bV9lbGVtZW50MS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aWRBdHRyKSk7CiAKLSAgICBtX2Vs
ZW1lbnQxLT5yZW1vdmUoZWMpOworICAgIG1fZWxlbWVudDEtPnJlbW92ZShJR05PUkVfRVhDRVBU
SU9OKTsKIH0KIAogdm9pZCBTcGxpdEVsZW1lbnRDb21tYW5kOjpkb1JlYXBwbHkoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmNwcAppbmRleCBjZjA3
ZGYzNzZlMjcwMTA2ZTNlMjNhYWI0YTFlNmE4Njc1NjNmMzUwLi5iNTFjZjJjOGI2Mjg2NzcxODY5
Y2M1NDY1YTkwYTcxMzY5ZTFkZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NwbGl0VGV4dE5vZGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
bGl0VGV4dE5vZGVDb21tYW5kLmNwcApAQCAtNTQsOCArNTQsNyBAQCB2b2lkIFNwbGl0VGV4dE5v
ZGVDb21tYW5kOjpkb0FwcGx5KCkKICAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5yZW5kZXJl
cklzRWRpdGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgU3RyaW5nIHByZWZpeFRleHQgPSBtX3RleHQyLT5zdWJzdHJpbmdEYXRhKDAsIG1f
b2Zmc2V0LCBlYyk7CisgICAgU3RyaW5nIHByZWZpeFRleHQgPSBtX3RleHQyLT5zdWJzdHJpbmdE
YXRhKDAsIG1fb2Zmc2V0LCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICBpZiAocHJlZml4VGV4dC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IGNkNzIzYjkzYmE1YmYxMzJiNzUxYTU2MDM2NmU4
MzdhZTFkZjUwMTIuLjIwYTJmY2JjY2ZmOWMyNmJhMTRhN2Y0Y2Q3NGI1ZDJhMDBjOGQ0YmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTEw
MSw4ICsxMDEsNyBAQCBzdGF0aWMgdm9pZCBmaW5kTWlzc3BlbGxpbmdzKFRleHRDaGVja2VyQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgcwogCiBzdGF0aWMgUGFzc1JlZlB0
cjxSYW5nZT4gZXhwYW5kVG9QYXJhZ3JhcGhCb3VuZGFyeShQYXNzUmVmUHRyPFJhbmdlPiByYW5n
ZSkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8UmFuZ2U+IHBhcmFn
cmFwaFJhbmdlID0gcmFuZ2UtPmNsb25lUmFuZ2UoZWMpOworICAgIFJlZlB0cjxSYW5nZT4gcGFy
YWdyYXBoUmFuZ2UgPSByYW5nZS0+Y2xvbmVSYW5nZShJR05PUkVfRVhDRVBUSU9OKTsKICAgICBz
ZXRTdGFydChwYXJhZ3JhcGhSYW5nZS5nZXQoKSwgc3RhcnRPZlBhcmFncmFwaChyYW5nZS0+c3Rh
cnRQb3NpdGlvbigpKSk7CiAgICAgc2V0RW5kKHBhcmFncmFwaFJhbmdlLmdldCgpLCBlbmRPZlBh
cmFncmFwaChyYW5nZS0+ZW5kUG9zaXRpb24oKSkpOwogICAgIHJldHVybiBwYXJhZ3JhcGhSYW5n
ZTsKQEAgLTI5OCw3ICsyOTcsNiBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmly
c3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgIFN0cmlu
ZyBmaXJzdEZvdW5kSXRlbTsKICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQ7CiAgICAgU3RyaW5n
IGJhZEdyYW1tYXJQaHJhc2U7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgCiAgICAg
Ly8gSW5pdGlhbGl6ZSBvdXQgcGFyYW1ldGVyczsgdGhlc2Ugd2lsbCBiZSB1cGRhdGVkIGlmIHdl
IGZpbmQgc29tZXRoaW5nIHRvIHJldHVybi4KICAgICBvdXRJc1NwZWxsaW5nID0gdHJ1ZTsKQEAg
LTMxMSw3ICszMDksNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNz
cGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgIC8vIEV4cGFuZCB0
aGUgc2VhcmNoIHJhbmdlIHRvIGVuY29tcGFzcyBlbnRpcmUgcGFyYWdyYXBocywgc2luY2UgdGV4
dCBjaGVja2luZyBuZWVkcyB0aGF0IG11Y2ggY29udGV4dC4KICAgICAvLyBEZXRlcm1pbmUgdGhl
IGNoYXJhY3RlciBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBhcmFncmFwaCB0byB0aGUg
c3RhcnQgb2YgdGhlIG9yaWdpbmFsIHNlYXJjaCByYW5nZSwKICAgICAvLyBzaW5jZSB3ZSB3aWxs
IHdhbnQgdG8gaWdub3JlIHJlc3VsdHMgaW4gdGhpcyBhcmVhLgotICAgIFJlZlB0cjxSYW5nZT4g
cGFyYWdyYXBoUmFuZ2UgPSBtX3JhbmdlLT5jbG9uZVJhbmdlKGVjKTsKKyAgICBSZWZQdHI8UmFu
Z2U+IHBhcmFncmFwaFJhbmdlID0gbV9yYW5nZS0+Y2xvbmVSYW5nZShJR05PUkVfRVhDRVBUSU9O
KTsKICAgICBzZXRTdGFydChwYXJhZ3JhcGhSYW5nZS5nZXQoKSwgc3RhcnRPZlBhcmFncmFwaCht
X3JhbmdlLT5zdGFydFBvc2l0aW9uKCkpKTsKICAgICBpbnQgdG90YWxSYW5nZUxlbmd0aCA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoUmFuZ2UuZ2V0KCkpOwogICAgIHNldEVu
ZChwYXJhZ3JhcGhSYW5nZS5nZXQoKSwgZW5kT2ZQYXJhZ3JhcGgobV9yYW5nZS0+c3RhcnRQb3Np
dGlvbigpKSk7CkBAIC01MjcsOCArNTI1LDcgQEAgYm9vbCBUZXh0Q2hlY2tpbmdIZWxwZXI6Omlz
VW5ncmFtbWF0aWNhbChWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlc1ZlY3RvcikgY29uc3QKICAgICBp
ZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBFeGNlcHRpb25Db2Rl
IGVjOwotICAgIGlmICghbV9yYW5nZSB8fCBtX3JhbmdlLT5jb2xsYXBzZWQoZWMpKQorICAgIGlm
ICghbV9yYW5nZSB8fCBtX3JhbmdlLT5jb2xsYXBzZWQoSUdOT1JFX0VYQ0VQVElPTikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBSZXR1cm5zIHRydWUgb25seSBpZiB0aGUg
cGFzc2VkIHJhbmdlIGV4YWN0bHkgY29ycmVzcG9uZHMgdG8gYSBiYWQgZ3JhbW1hciBkZXRhaWwg
cmFuZ2UuIFRoaXMgaXMgYW5hbG9nb3VzCkBAIC01NzMsMTEgKzU3MCwxMCBAQCBWZWN0b3I8U3Ry
aW5nPiBUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRp
Y2FsUmFuZ2UoYm9vbAogICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IGd1ZXNzZXM7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKICAgICBtaXNzcGVs
bGVkID0gZmFsc2U7CiAgICAgdW5ncmFtbWF0aWNhbCA9IGZhbHNlOwogICAgIAotICAgIGlmICgh
bV9jbGllbnQgfHwgIW1fcmFuZ2UgfHwgbV9yYW5nZS0+Y29sbGFwc2VkKGVjKSkKKyAgICBpZiAo
IW1fY2xpZW50IHx8ICFtX3JhbmdlIHx8IG1fcmFuZ2UtPmNvbGxhcHNlZChJR05PUkVfRVhDRVBU
SU9OKSkKICAgICAgICAgcmV0dXJuIGd1ZXNzZXM7CiAKICAgICAvLyBFeHBhbmQgdGhlIHJhbmdl
IHRvIGVuY29tcGFzcyBlbnRpcmUgcGFyYWdyYXBocywgc2luY2UgdGV4dCBjaGVja2luZyBuZWVk
cyB0aGF0IG11Y2ggY29udGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEluc2VydGlvbkJhc2VDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEluc2VydGlvbkJhc2VDb21tYW5kLmNwcAppbmRleCBlMzU0OTQ3NzBhZGJlZDgwZTNiZmVlYzY3
ZTYzYTRkZjNhYTdkMDIzLi4xZGNkYWQ4NjdkYzhiNWJlMzViZTQ0ODFmMmMzZGVlNjA0YzdkN2Q3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJbnNlcnRpb25CYXNlQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SW5zZXJ0aW9uQmFzZUNv
bW1hbmQuY3BwCkBAIC02Miw5ICs2Miw4IEBAIFN0cmluZyBkaXNwYXRjaEJlZm9yZVRleHRJbnNl
cnRlZEV2ZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmlzaWJsZVNlbGVjdGlvCiAgICAg
aWYgKE5vZGUqIHN0YXJ0Tm9kZSA9IHNlbGVjdGlvbkZvckluc2VydGlvbi5zdGFydCgpLmNvbnRh
aW5lck5vZGUoKSkgewogICAgICAgICBpZiAoc3RhcnROb2RlLT5yb290RWRpdGFibGVFbGVtZW50
KCkpIHsKICAgICAgICAgICAgIC8vIFNlbmQgQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuIFRoZSBl
dmVudCBoYW5kbGVyIHdpbGwgdXBkYXRlIHRleHQgaWYgbmVjZXNzYXJ5LgotICAgICAgICAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgICAgICBSZWZQdHI8QmVmb3JlVGV4dEluc2Vy
dGVkRXZlbnQ+IGV2dCA9IEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50OjpjcmVhdGUodGV4dCk7Ci0g
ICAgICAgICAgICBzdGFydE5vZGUtPnJvb3RFZGl0YWJsZUVsZW1lbnQoKS0+ZGlzcGF0Y2hFdmVu
dChldnQsIGVjKTsKKyAgICAgICAgICAgIHN0YXJ0Tm9kZS0+cm9vdEVkaXRhYmxlRWxlbWVudCgp
LT5kaXNwYXRjaEV2ZW50KGV2dCwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgICAgICAgICBuZXdU
ZXh0ID0gZXZ0LT50ZXh0KCk7CiAgICAgICAgIH0KICAgICB9CkBAIC03OCw4ICs3Nyw3IEBAIGJv
b2wgY2FuQXBwZW5kTmV3TGluZUZlZWRUb1NlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBzZWxlY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBSZWZQdHI8QmVm
b3JlVGV4dEluc2VydGVkRXZlbnQ+IGV2ZW50ID0gQmVmb3JlVGV4dEluc2VydGVkRXZlbnQ6OmNy
ZWF0ZShTdHJpbmcoIlxuIikpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIG5vZGUt
PmRpc3BhdGNoRXZlbnQoZXZlbnQsIGVjKTsKKyAgICBub2RlLT5kaXNwYXRjaEV2ZW50KGV2ZW50
LCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICByZXR1cm4gZXZlbnQtPnRleHQoKS5sZW5ndGgoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDVjODhiMjAx
YTdhMjBkMWMwMjczNjBmNzdkYjc2MmM5ZjNlZjA2MWIuLmZiYTliOGQ3ZmNiZDI5NDYxMWM5OGYz
N2IxMDY3MWFlMWUxYTU5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5j
cHAKQEAgLTI2MDEsOCArMjYwMSw3IEBAIHN0YXRpYyBzaXplX3QgZmluZFBsYWluVGV4dChDaGFy
YWN0ZXJJdGVyYXRvciYgaXQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0CiAgICAgaWYg
KGJ1ZmZlci5uZWVkc01vcmVDb250ZXh0KCkpIHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBzdGFy
dFJhbmdlID0gaXQucmFuZ2UoKTsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBiZWZvcmVTdGFydFJh
bmdlID0gc3RhcnRSYW5nZS0+b3duZXJEb2N1bWVudCgpLT5jcmVhdGVSYW5nZSgpOwotICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgYmVmb3JlU3RhcnRSYW5nZS0+c2V0RW5k
KHN0YXJ0UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHN0YXJ0UmFuZ2UtPnN0YXJ0T2Zmc2V0KCks
IGVjKTsKKyAgICAgICAgYmVmb3JlU3RhcnRSYW5nZS0+c2V0RW5kKHN0YXJ0UmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCksIHN0YXJ0UmFuZ2UtPnN0YXJ0T2Zmc2V0KCksIElHTk9SRV9FWENFUFRJT04p
OwogICAgICAgICBmb3IgKFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IgYmFja3dhcmRz
SXRlcmF0b3IoYmVmb3JlU3RhcnRSYW5nZS5nZXQoKSk7ICFiYWNrd2FyZHNJdGVyYXRvci5hdEVu
ZCgpOyBiYWNrd2FyZHNJdGVyYXRvci5hZHZhbmNlKCkpIHsKICAgICAgICAgICAgIGJ1ZmZlci5w
cmVwZW5kQ29udGV4dChiYWNrd2FyZHNJdGVyYXRvci5jaGFyYWN0ZXJzKCksIGJhY2t3YXJkc0l0
ZXJhdG9yLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmICghYnVmZmVyLm5lZWRzTW9yZUNvbnRl
eHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXggNjg0NzY2ZWE2
MGRlMjhjYWNkMTgwYjc3MzdhMTkxOTA0OGFmYzM3NS4uZTgwMzQxN2MxMjJmZTcyODM2N2JlMTJj
M2U5NzZjMjk5M2I1YmY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1s
ZWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAK
QEAgLTU1OCw4ICs1NTgsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBleHRlbmRSYW5nZVRvV3JhcHBp
bmdOb2RlcyhQYXNzUmVmUHRyPFJhbmdlPiByYW5nZSwgY29uc3QgUmFuZwogICAgIEFTU0VSVChy
YW5nZSk7CiAgICAgQVNTRVJUKG1heGltdW1SYW5nZSk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBOb2RlKiBhbmNlc3RvciA9IHJhbmdlLT5jb21tb25BbmNlc3RvckNvbnRhaW5l
cihlYyk7Ly8gZmluZCB0aGUgY2xvZXNldCBjb21tb24gYW5jZXN0b3IKKyAgICBOb2RlKiBhbmNl
c3RvciA9IHJhbmdlLT5jb21tb25BbmNlc3RvckNvbnRhaW5lcihJR05PUkVfRVhDRVBUSU9OKTsg
Ly8gRmluZCB0aGUgY2xvc2VzdCBjb21tb24gYW5jZXN0b3IuCiAgICAgTm9kZSogaGlnaGVzdE5v
ZGUgPSAwOwogICAgIC8vIHRyYXZlcnNlIHRocm91Z2ggYW5jZXN0b3JzIGFzIGxvbmcgYXMgdGhl
eSBhcmUgY29udGFpbmVkIHdpdGhpbiB0aGUgcmFuZ2UsIGNvbnRlbnQtZWRpdGFibGUsIGFuZCBi
ZWxvdyByb290Tm9kZSAoY291bGQgYmUgPTApLgogICAgIHdoaWxlIChhbmNlc3RvciAmJiBhbmNl
c3Rvci0+cmVuZGVyZXJJc0VkaXRhYmxlKCkgJiYgaXNOb2RlVmlzaWJseUNvbnRhaW5lZFdpdGhp
bihhbmNlc3RvciwgbWF4aW11bVJhbmdlKSAmJiBhbmNlc3RvciAhPSByb290Tm9kZSkgewpAQCAt
NTcyLDcgKzU3MSw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IGV4dGVuZFJhbmdlVG9XcmFwcGluZ05v
ZGVzKFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlLCBjb25zdCBSYW5nCiAKICAgICAvLyBDcmVhdGUg
bmV3IHJhbmdlIHdpdGggdGhlIGhpZ2hlc3QgZWRpdGFibGUgbm9kZSBjb250YWluZWQgd2l0aGlu
IHRoZSByYW5nZQogICAgIFJlZlB0cjxSYW5nZT4gZXh0ZW5kZWRSYW5nZSA9IFJhbmdlOjpjcmVh
dGUocmFuZ2UtPm93bmVyRG9jdW1lbnQoKSk7Ci0gICAgZXh0ZW5kZWRSYW5nZS0+c2VsZWN0Tm9k
ZShoaWdoZXN0Tm9kZSwgZWMpOworICAgIGV4dGVuZGVkUmFuZ2UtPnNlbGVjdE5vZGUoaGlnaGVz
dE5vZGUsIElHTk9SRV9FWENFUFRJT04pOwogICAgIHJldHVybiBleHRlbmRlZFJhbmdlLnJlbGVh
c2UoKTsKIH0KIApAQCAtMTEzNCw4ICsxMTMzLDcgQEAgYm9vbCBpc05vZGVWaXNpYmx5Q29udGFp
bmVkV2l0aGluKE5vZGUqIG5vZGUsIGNvbnN0IFJhbmdlKiBzZWxlY3RlZFJhbmdlKQogICAgIEFT
U0VSVChub2RlKTsKICAgICBBU1NFUlQoc2VsZWN0ZWRSYW5nZSk7CiAgICAgLy8gSWYgdGhlIG5v
ZGUgaXMgaW5zaWRlIHRoZSByYW5nZSwgdGhlbiBpdCBzdXJlbHkgaXMgY29udGFpbmVkIHdpdGhp
bgotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChzZWxlY3RlZFJhbmdlLT5jb21w
YXJlTm9kZShub2RlLCBlYykgPT0gUmFuZ2U6Ok5PREVfSU5TSURFKQorICAgIGlmIChzZWxlY3Rl
ZFJhbmdlLT5jb21wYXJlTm9kZShub2RlLCBJR05PUkVfRVhDRVBUSU9OKSA9PSBSYW5nZTo6Tk9E
RV9JTlNJREUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYm9vbCBzdGFydElzVmlzdWFs
bHlTYW1lID0gdmlzaWJsZVBvc2l0aW9uQmVmb3JlTm9kZShub2RlKSA9PSBzZWxlY3RlZFJhbmdl
LT5zdGFydFBvc2l0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zp
c2libGVfdW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNw
cAppbmRleCA0MmU3MGY3MGVjM2FjZGY3MjE0MDEwMzFkMDhiZmJlODllZGZmYmE1Li44YWY2OGU3
NDRlZjUzOTVkMDIyODQ0ODM5OTU2NzYzZmFkNmI2ODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvdmlzaWJsZV91bml0cy5jcHAKQEAgLTUzOSwxMCArNTM5LDkgQEAgc3RhdGljIFZpc2libGVQ
b3NpdGlvbiBuZXh0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBCb3VuZGFyeVNl
YXJjaEZ1bmMKICAgICBWZWN0b3I8VUNoYXIsIDEwMjQ+IHN0cmluZzsKICAgICB1bnNpZ25lZCBw
cmVmaXhMZW5ndGggPSAwOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKHJl
cXVpcmVzQ29udGV4dEZvcldvcmRCb3VuZGFyeShjLmNoYXJhY3RlckFmdGVyKCkpKSB7CiAgICAg
ICAgIFJlZlB0cjxSYW5nZT4gYmFja3dhcmRzU2NhblJhbmdlKGQtPmNyZWF0ZVJhbmdlKCkpOwot
ICAgICAgICBiYWNrd2FyZHNTY2FuUmFuZ2UtPnNldEVuZChzdGFydC5kZXByZWNhdGVkTm9kZSgp
LCBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlYyk7CisgICAgICAgIGJhY2t3YXJk
c1NjYW5SYW5nZS0+c2V0RW5kKHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0LmRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCksIElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICBTaW1wbGlmaWVk
QmFja3dhcmRzVGV4dEl0ZXJhdG9yIGJhY2t3YXJkc0l0ZXJhdG9yKGJhY2t3YXJkc1NjYW5SYW5n
ZS5nZXQoKSk7CiAgICAgICAgIHdoaWxlICghYmFja3dhcmRzSXRlcmF0b3IuYXRFbmQoKSkgewog
ICAgICAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBiYWNrd2FyZHNJdGVyYXRvci5j
aGFyYWN0ZXJzKCk7CkBAIC01NTYsOCArNTU1LDggQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBu
ZXh0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBCb3VuZGFyeVNlYXJjaEZ1bmMK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHNlYXJjaFJhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMo
Ym91bmRhcnksIGVjKTsKLSAgICBzZWFyY2hSYW5nZS0+c2V0U3RhcnQoc3RhcnQuZGVwcmVjYXRl
ZE5vZGUoKSwgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZWMpOworICAgIHNlYXJj
aFJhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMoYm91bmRhcnksIElHTk9SRV9FWENFUFRJT04pOwor
ICAgIHNlYXJjaFJhbmdlLT5zZXRTdGFydChzdGFydC5kZXByZWNhdGVkTm9kZSgpLCBzdGFydC5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICBUZXh0SXRl
cmF0b3IgaXQoc2VhcmNoUmFuZ2UuZ2V0KCksIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0Jl
dHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKICAgICB1bnNpZ25lZCBuZXh0ID0gMDsKICAgICBi
b29sIGluVGV4dFNlY3VyaXR5TW9kZSA9IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgJiYgc3RhcnQu
ZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSAmJiBzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5y
ZW5kZXJlcigpLT5zdHlsZSgpLT50ZXh0U2VjdXJpdHkoKSAhPSBUU05PTkU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCAxNjk5MjVjZGE0NDQ3MzFkOGNiNDM3YmRiZGNm
MTYyOWE4MDJiYjYyLi44YmNjMTAxZDY5NWU2ZDQzYzhhODRkZTQ5ZjAwYTUyZjUzZTAxN2VjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTMwMiw4ICszMDIsNyBAQCBi
b29sIEZpbGVJbnB1dFR5cGU6OmlzRmlsZVVwbG9hZCgpIGNvbnN0CiB2b2lkIEZpbGVJbnB1dFR5
cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewogICAgIEFTU0VSVChlbGVtZW50KCktPnNoYWRv
dygpKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBlbGVtZW50KCktPnVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoZWxlbWVudCgpLT5tdWx0aXBsZSgpID8gVXBsb2Fk
QnV0dG9uRWxlbWVudDo6Y3JlYXRlRm9yTXVsdGlwbGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTog
VXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSksIGVjKTsK
KyAgICBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoZWxlbWVu
dCgpLT5tdWx0aXBsZSgpID8gVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlRm9yTXVsdGlwbGUo
ZWxlbWVudCgpLT5kb2N1bWVudCgpKTogVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1l
bnQoKS0+ZG9jdW1lbnQoKSksIElHTk9SRV9FWENFUFRJT04pOwogfQogCiB2b2lkIEZpbGVJbnB1
dFR5cGU6OmRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEtleWdlbkVsZW1lbnQuY3BwCmluZGV4IDg5NDc0NmE2NjhlNTA5YjZkYzQzYzliZmFiM2UzZjYw
ZjdlMGJjYzQuLjRlODVkYjNlNjJjMTUyM2Y5NjdkNjYwZTJjOTFmZGQ0NjJlYjc1MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCkBAIC03NSwxNCArNzUsMTMg
QEAgaW5saW5lIEhUTUxLZXlnZW5FbGVtZW50OjpIVE1MS2V5Z2VuRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWUKICAgICBnZXRTdXBwb3J0ZWRLZXlTaXplcyhrZXlz
KTsKIAogICAgIFJlZlB0cjxIVE1MU2VsZWN0RWxlbWVudD4gc2VsZWN0ID0gS2V5Z2VuU2VsZWN0
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgUmVm
UHRyPEhUTUxPcHRpb25FbGVtZW50PiBvcHRpb24gPSBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKLSAgICAgICAgc2VsZWN0LT5hcHBlbmRDaGlsZChvcHRpb24sIGVjKTsKLSAg
ICAgICAgb3B0aW9uLT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIGtleXNbaV0p
LCBlYyk7CisgICAgICAgIHNlbGVjdC0+YXBwZW5kQ2hpbGQob3B0aW9uLCBJR05PUkVfRVhDRVBU
SU9OKTsKKyAgICAgICAgb3B0aW9uLT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQs
IGtleXNbaV0pLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICB9CiAKLSAgICBlbnN1cmVVc2VyQWdl
bnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHNlbGVjdCwgZWMpOworICAgIGVuc3VyZVVzZXJB
Z2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoc2VsZWN0LCBJR05PUkVfRVhDRVBUSU9OKTsK
IH0KIAogUGFzc1JlZlB0cjxIVE1MS2V5Z2VuRWxlbWVudD4gSFRNTEtleWdlbkVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhU
TUxGb3JtRWxlbWVudCogZm9ybSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVu
dC5jcHAKaW5kZXggNTdmODUxMWIyNTUwZGQ2OGYxOGI2NjAzZTgwN2YyYTQ4NDdlMDFlMi4uNGIy
NjZkYTJiZmE4MWUzZWMyNTc5MDY1YzE4ZjA4NDczM2Q4ZDU3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKQEAgLTgzLDE4ICs4MywxNyBAQCB2b2lkIEhUTUxT
Y3JpcHRFbGVtZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyAmdmFsdWUpCiB7CiAgICAgUmVmUHRy
PE5vZGU+IHByb3RlY3RGcm9tTXV0YXRpb25FdmVudHModGhpcyk7CiAKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBpbnQgbnVtQ2hpbGRyZW4gPSBjaGlsZE5vZGVDb3VudCgpOwogCiAg
ICAgaWYgKG51bUNoaWxkcmVuID09IDEgJiYgZmlyc3RDaGlsZCgpLT5pc1RleHROb2RlKCkpIHsK
LSAgICAgICAgdG9UZXh0KGZpcnN0Q2hpbGQoKSktPnNldERhdGEodmFsdWUsIGVjKTsKKyAgICAg
ICAgdG9UZXh0KGZpcnN0Q2hpbGQoKSktPnNldERhdGEodmFsdWUsIElHTk9SRV9FWENFUFRJT04p
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG51bUNoaWxkcmVuID4gMCkKICAg
ICAgICAgcmVtb3ZlQ2hpbGRyZW4oKTsKIAotICAgIGFwcGVuZENoaWxkKGRvY3VtZW50KCktPmNy
ZWF0ZVRleHROb2RlKHZhbHVlLmltcGwoKSksIGVjKTsKKyAgICBhcHBlbmRDaGlsZChkb2N1bWVu
dCgpLT5jcmVhdGVUZXh0Tm9kZSh2YWx1ZS5pbXBsKCkpLCBJR05PUkVfRVhDRVBUSU9OKTsKIH0K
IAogdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0QXN5bmMoYm9vbCBhc3luYykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCmluZGV4IDhlNGZmNmM5YWIzZmFiOWQ2MGI5
OWVkYzcxOTMxYmJjMTFlMWExYTcuLmM1ZjRhNDI3ZWJjYzMwNmMzYjM0ODJiOWU4N2FjM2JkOGQ3
NTM4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcApAQCAtOTks
MTEgKzk5LDEwIEBAIHZvaWQgSFRNTFRpdGxlRWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcg
JnZhbHVlKQogewogICAgIFJlZlB0cjxOb2RlPiBwcm90ZWN0RnJvbU11dGF0aW9uRXZlbnRzKHRo
aXMpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaW50IG51bUNoaWxkcmVuID0g
Y2hpbGROb2RlQ291bnQoKTsKICAgICAKICAgICBpZiAobnVtQ2hpbGRyZW4gPT0gMSAmJiBmaXJz
dENoaWxkKCktPmlzVGV4dE5vZGUoKSkKLSAgICAgICAgdG9UZXh0KGZpcnN0Q2hpbGQoKSktPnNl
dERhdGEodmFsdWUsIGVjKTsKKyAgICAgICAgdG9UZXh0KGZpcnN0Q2hpbGQoKSktPnNldERhdGEo
dmFsdWUsIElHTk9SRV9FWENFUFRJT04pOwogICAgIGVsc2UgewogICAgICAgICAvLyBXZSBtYWtl
IGEgY29weSBoZXJlIGJlY2F1c2UgZW50aXR5IG9mICJ2YWx1ZSIgYXJndW1lbnQgY2FuIGJlIERv
Y3VtZW50OjptX3RpdGxlLAogICAgICAgICAvLyB3aGljaCBnb2VzIGVtcHR5IGR1cmluZyByZW1v
dmVDaGlsZHJlbigpIGludm9jYXRpb24gYmVsb3csCkBAIC0xMTMsNyArMTEyLDcgQEAgdm9pZCBI
VE1MVGl0bGVFbGVtZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyAmdmFsdWUpCiAgICAgICAgIGlm
IChudW1DaGlsZHJlbiA+IDApCiAgICAgICAgICAgICByZW1vdmVDaGlsZHJlbigpOwogCi0gICAg
ICAgIGFwcGVuZENoaWxkKGRvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKHZhbHVlQ29weS5pbXBs
KCkpLCBlYyk7CisgICAgICAgIGFwcGVuZENoaWxkKGRvY3VtZW50KCktPmNyZWF0ZVRleHROb2Rl
KHZhbHVlQ29weS5pbXBsKCkpLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCmluZGV4IDcxM2U5OTkzZjdmMDZiYWI0
YTQ4NTdiYzlkN2I2ZTczZjA0OGE3ZTYuLmQ5MDk4NzEyZDk0NDU3ZDAyMmU3NzVlNTA0MTY2ZjEx
NzMwMTY2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcApAQCAt
MjYyLDggKzI2Miw2IEBAIGJvb2wgSFRNTFRyYWNrRWxlbWVudDo6Y2FuTG9hZFVybChjb25zdCBL
VVJMJiB1cmwpCiAKIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6ZGlkQ29tcGxldGVMb2FkKExvYWRh
YmxlVGV4dFRyYWNrKiwgTG9hZFN0YXR1cyBzdGF0dXMpCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0KICAgICAvLyA0LjguMTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRy
YWNrcyAoY29udGludWVkKQogICAgIAogICAgIC8vIDQuIERvd25sb2FkOiAuLi4KQEAgLTI3Niw3
ICsyNzQsNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmRpZENvbXBsZXRlTG9hZChMb2FkYWJs
ZVRleHRUcmFjayosIExvYWRTdGF0dXMgc3RhdHVzKQogCiAgICAgaWYgKHN0YXR1cyA9PSBGYWls
dXJlKSB7CiAgICAgICAgIHNldFJlYWR5U3RhdGUoSFRNTFRyYWNrRWxlbWVudDo6VFJBQ0tfRVJS
T1IpOwotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVy
cm9yRXZlbnQsIGZhbHNlLCBmYWxzZSksIGVjKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpLCBJR05PUkVf
RVhDRVBUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjg3LDcgKzI4NSw3IEBA
IHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6ZGlkQ29tcGxldGVMb2FkKExvYWRhYmxlVGV4dFRyYWNr
KiwgTG9hZFN0YXR1cyBzdGF0dXMpCiAKICAgICAvLyAgICAgMi4gSWYgdGhlIGZpbGUgd2FzIHN1
Y2Nlc3NmdWxseSBwcm9jZXNzZWQsIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgbG9hZCBhdCB0
aGUgCiAgICAgLy8gICAgICAgIHRyYWNrIGVsZW1lbnQuCi0gICAgZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSksIGVjKTsKKyAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFs
c2UsIGZhbHNlKSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKIC8vIE5PVEU6IFRoZSB2YWx1ZXMg
aW4gdGhlIFRleHRUcmFjazo6UmVhZGluZXNzU3RhdGUgZW51bSBtdXN0IHN0YXkgaW4gc3luYyB3
aXRoIHRob3NlIGluIEhUTUxUcmFja0VsZW1lbnQ6OlJlYWR5U3RhdGUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDc1YWZkMWU3OTAxM2MzMjkxZjVjYmQwYWFhY2M3
MjM0ODg0ZGU1NzcuLjcxZmQ1MDhlNTFmMTRkODNhNGNiMDkwNWFmODNiMDY2MDk5Yjg0ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0yNjEsMTEgKzI2MSwxMCBA
QCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBlbGVtZW50KCktPmRvY3VtZW50KCk7CiAgICAgUmVmUHRyPEhUTUxEaXZF
bGVtZW50PiB0cmFjayA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIHRy
YWNrLT5zZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFj
ayIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICB0cmFjay0+YXBwZW5kQ2hpbGQoU2xpZGVyVGh1bWJFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpLCBlYyk7CisgICAgdHJhY2stPmFwcGVuZENoaWxkKFNsaWRlclRodW1i
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgUmVmUHRy
PEhUTUxFbGVtZW50PiBjb250YWluZXIgPSBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOwotICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodHJhY2sucmVsZWFzZSgpLCBl
Yyk7Ci0gICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKGNv
bnRhaW5lci5yZWxlYXNlKCksIGVjKTsKKyAgICBjb250YWluZXItPmFwcGVuZENoaWxkKHRyYWNr
LnJlbGVhc2UoKSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgZWxlbWVudCgpLT51c2VyQWdlbnRT
aGFkb3dSb290KCktPmFwcGVuZENoaWxkKGNvbnRhaW5lci5yZWxlYXNlKCksIElHTk9SRV9FWENF
UFRJT04pOwogfQogCiBSZW5kZXJPYmplY3QqIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAppbmRleCBmYjk2MzY1YzI4ZTVkODc0ZWM3MjdlNGQ0Y2Nm
YzIxZjU5Y2I5NTliLi4zODM5YjEyYTYzYTVmZjEyN2Q2M2ZiZmNhMDM3MTFjZjZkYTg5YWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCkBAIC0xMDUsMTQgKzEwNSwx
MyBAQCB2b2lkIFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAgICAgQVNT
RVJUKGNvbnRhaW5lcik7CiAgICAgQVNTRVJUKHRleHRXcmFwcGVyKTsKIAotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIFJlZlB0cjxTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50
PiByZXN1bHRzQnV0dG9uID0gU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6Y3JlYXRl
KGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk7CiAgICAgbV9yZXN1bHRzQnV0dG9uID0gcmVzdWx0c0J1
dHRvbi5nZXQoKTsKLSAgICBjb250YWluZXItPmluc2VydEJlZm9yZShtX3Jlc3VsdHNCdXR0b24s
IHRleHRXcmFwcGVyLCBlYyk7CisgICAgY29udGFpbmVyLT5pbnNlcnRCZWZvcmUobV9yZXN1bHRz
QnV0dG9uLCB0ZXh0V3JhcHBlciwgSUdOT1JFX0VYQ0VQVElPTik7CiAKICAgICBSZWZQdHI8U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50PiBjYW5jZWxCdXR0b24gPSBTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpOwogICAgIG1f
Y2FuY2VsQnV0dG9uID0gY2FuY2VsQnV0dG9uLmdldCgpOwotICAgIGNvbnRhaW5lci0+aW5zZXJ0
QmVmb3JlKG1fY2FuY2VsQnV0dG9uLCB0ZXh0V3JhcHBlci0+bmV4dFNpYmxpbmcoKSwgZWMpOwor
ICAgIGNvbnRhaW5lci0+aW5zZXJ0QmVmb3JlKG1fY2FuY2VsQnV0dG9uLCB0ZXh0V3JhcHBlci0+
bmV4dFNpYmxpbmcoKSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKIEhUTUxFbGVtZW50KiBTZWFy
Y2hJbnB1dFR5cGU6OnJlc3VsdHNCdXR0b25FbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCA1OGYyYWE0ZTVjNDhkZjgyYTVlYThh
YmIxNjgxMTY0YjUxZDYxODAzLi5mZDQ0ZTA1YWFkYjg4NzZlMzY1ZjMyMzQ4MGIxMzJiNWFhY2Rh
NmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0y
MzYsMzMgKzIzNiwzMiBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3Vi
dHJlZSgpCiAgICAgYm9vbCBzaG91bGRIYXZlU3BpbkJ1dHRvbiA9IHRoaXMtPnNob3VsZEhhdmVT
cGluQnV0dG9uKCk7CiAgICAgYm9vbCBjcmVhdGVzQ29udGFpbmVyID0gc2hvdWxkSGF2ZVNwaW5C
dXR0b24gfHwgbmVlZHNDb250YWluZXIoKSB8fCBzaG91bGRBZGREZWNvcmF0aW9uczsKIAotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIG1faW5uZXJUZXh0ID0gVGV4dENvbnRyb2xJbm5l
clRleHRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGlmICghY3JlYXRlc0NvbnRhaW5l
cikgewotICAgICAgICBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hp
bGQobV9pbm5lclRleHQsIGVjKTsKKyAgICAgICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dS
b290KCktPmFwcGVuZENoaWxkKG1faW5uZXJUZXh0LCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBlbGVtZW50
KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKICAgICBtX2NvbnRhaW5lciA9IEhUTUxEaXZFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIG1fY29udGFpbmVyLT5zZXRQc2V1ZG8oQXRvbWlj
U3RyaW5nKCItd2Via2l0LXRleHRmaWVsZC1kZWNvcmF0aW9uLWNvbnRhaW5lciIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBzaGFkb3dSb290LT5hcHBlbmRDaGls
ZChtX2NvbnRhaW5lciwgZWMpOworICAgIHNoYWRvd1Jvb3QtPmFwcGVuZENoaWxkKG1fY29udGFp
bmVyLCBJR05PUkVfRVhDRVBUSU9OKTsKIAogICAgIG1faW5uZXJCbG9jayA9IFRleHRDb250cm9s
SW5uZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIG1faW5uZXJCbG9jay0+YXBwZW5k
Q2hpbGQobV9pbm5lclRleHQsIGVjKTsKLSAgICBtX2NvbnRhaW5lci0+YXBwZW5kQ2hpbGQobV9p
bm5lckJsb2NrLCBlYyk7CisgICAgbV9pbm5lckJsb2NrLT5hcHBlbmRDaGlsZChtX2lubmVyVGV4
dCwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgbV9jb250YWluZXItPmFwcGVuZENoaWxkKG1faW5u
ZXJCbG9jaywgSUdOT1JFX0VYQ0VQVElPTik7CiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQog
ICAgIEFTU0VSVCghbV9zcGVlY2hCdXR0b24pOwogICAgIGlmIChlbGVtZW50KCktPmlzU3BlZWNo
RW5hYmxlZCgpKSB7CiAgICAgICAgIG1fc3BlZWNoQnV0dG9uID0gSW5wdXRGaWVsZFNwZWVjaEJ1
dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgIG1fY29udGFpbmVyLT5hcHBl
bmRDaGlsZChtX3NwZWVjaEJ1dHRvbiwgZWMpOworICAgICAgICBtX2NvbnRhaW5lci0+YXBwZW5k
Q2hpbGQobV9zcGVlY2hCdXR0b24sIElHTk9SRV9FWENFUFRJT04pOwogICAgIH0KICNlbmRpZgog
CiAgICAgaWYgKHNob3VsZEhhdmVTcGluQnV0dG9uKSB7CiAgICAgICAgIG1faW5uZXJTcGluQnV0
dG9uID0gU3BpbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgKnRoaXMpOwotICAgICAg
ICBtX2NvbnRhaW5lci0+YXBwZW5kQ2hpbGQobV9pbm5lclNwaW5CdXR0b24sIGVjKTsKKyAgICAg
ICAgbV9jb250YWluZXItPmFwcGVuZENoaWxkKG1faW5uZXJTcGluQnV0dG9uLCBJR05PUkVfRVhD
RVBUSU9OKTsKICAgICB9CiAKICAgICBpZiAoc2hvdWxkQWRkRGVjb3JhdGlvbnMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAppbmRleCAzZThhY2NmZTI2MGJi
MjJiZDNlNTgyMmY4MmUxYmQ3YzgzOGIxMmVhLi40MjIzYzA2MDA2NjFkN2ZmZGU5Y2FhMjFlODUw
ZmI1MzFlNTY1MTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlz
dC5jcHAKQEAgLTIzOSwxMyArMjM5LDEyIEBAIHZvaWQgVGV4dFRyYWNrTGlzdDo6c2NoZWR1bGVB
ZGRUcmFja0V2ZW50KFBhc3NSZWZQdHI8VGV4dFRyYWNrPiB0cmFjaykKIHZvaWQgVGV4dFRyYWNr
TGlzdDo6YXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8VGV4dFRyYWNrTGlzdD4qKQogewogICAg
IFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gcGVuZGluZ0V2ZW50czsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKIAogICAgICsrbV9kaXNwYXRjaGluZ0V2ZW50czsKICAgICBtX3BlbmRpbmdFdmVu
dHMuc3dhcChwZW5kaW5nRXZlbnRzKTsKICAgICBzaXplX3QgY291bnQgPSBwZW5kaW5nRXZlbnRz
LnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5k
ZXgpCi0gICAgICAgIGRpc3BhdGNoRXZlbnQocGVuZGluZ0V2ZW50c1tpbmRleF0ucmVsZWFzZSgp
LCBlYyk7CisgICAgICAgIGRpc3BhdGNoRXZlbnQocGVuZGluZ0V2ZW50c1tpbmRleF0ucmVsZWFz
ZSgpLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAtLW1fZGlzcGF0Y2hpbmdFdmVudHM7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggOGU2
YzE4MDBkMzUyODI2NGU1MzEzNGVkOGRjNjFiODNlZjg4Yjk1Ni4uZjFkMDk4ZjQ0NDRiZGY5MzU3
NWI3ZDg4MmQwMjE5N2ZmZjk0Y2ExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RP
TVBhdGNoU3VwcG9ydC5jcHAKQEAgLTk5LDggKzk5LDcgQEAgdm9pZCBET01QYXRjaFN1cHBvcnQ6
OnBhdGNoRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBtYXJrdXApCiAgICAgT3duUHRyPERpZ2VzdD4g
b2xkSW5mbyA9IGNyZWF0ZURpZ2VzdChtX2RvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgMCk7
CiAgICAgT3duUHRyPERpZ2VzdD4gbmV3SW5mbyA9IGNyZWF0ZURpZ2VzdChuZXdEb2N1bWVudC0+
ZG9jdW1lbnRFbGVtZW50KCksICZtX3VudXNlZE5vZGVzTWFwKTsKIAotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIGlmICghaW5uZXJQYXRjaE5vZGUob2xkSW5mby5nZXQoKSwgbmV3SW5m
by5nZXQoKSwgZWMpKSB7CisgICAgaWYgKCFpbm5lclBhdGNoTm9kZShvbGRJbmZvLmdldCgpLCBu
ZXdJbmZvLmdldCgpLCBJR05PUkVfRVhDRVBUSU9OKSkgewogICAgICAgICAvLyBGYWxsIGJhY2sg
dG8gcmV3cml0ZS4KICAgICAgICAgbV9kb2N1bWVudC0+d3JpdGUobWFya3VwKTsKICAgICAgICAg
bV9kb2N1bWVudC0+Y2xvc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBlNTMxZmI0YWU2YjAyNzhkNmNjYmQ3YjVl
MjlmZGEyYWU4NzU3OTlhLi5iMjNlMDk0Mjg3OWRhNDA5MzE1ZGViNWM4YjUwNjRjMTc5OThmYTky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xk
ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgpAQCAtMTQ1
LDggKzE0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPFNRTFZhbHVlPiBzcWxWYWx1ZXM7
CiAgICAgICAgIFJlZlB0cjxTUUxTdGF0ZW1lbnRDYWxsYmFjaz4gY2FsbGJhY2soU3RhdGVtZW50
Q2FsbGJhY2s6OmNyZWF0ZShtX3JlcXVlc3RDYWxsYmFjay5nZXQoKSkpOwogICAgICAgICBSZWZQ
dHI8U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhTdGF0ZW1lbnRFcnJv
ckNhbGxiYWNrOjpjcmVhdGUobV9yZXF1ZXN0Q2FsbGJhY2suZ2V0KCkpKTsKLSAgICAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIHRyYW5zYWN0aW9uLT5leGVjdXRlU1FMKG1fc3Fs
U3RhdGVtZW50LCBzcWxWYWx1ZXMsIGNhbGxiYWNrLnJlbGVhc2UoKSwgZXJyb3JDYWxsYmFjay5y
ZWxlYXNlKCksIGVjKTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPmV4ZWN1dGVTUUwobV9zcWxTdGF0
ZW1lbnQsIHNxbFZhbHVlcywgY2FsbGJhY2sucmVsZWFzZSgpLCBlcnJvckNhbGxiYWNrLnJlbGVh
c2UoKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQuY3BwCmluZGV4IDNhNzhhMmIwM2ZhODc5ZThkYTM1NDRlZDVhYzJkYjdiYzM3
YzEzODUuLjJiMGQ2NDQzMTlmOTRkYjExZjM3MTZiMzI4NzE5ZThmN2Q0MTI2MGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQu
Y3BwCkBAIC00OTgsOCArNDk4LDcgQEAgYm9vbCBGaWxlQ29udGVudFJlcXVlc3Q6OmRpZEdldEZp
bGUoRmlsZSogZmlsZSkKICAgICBtX3JlYWRlci0+c2V0T25sb2FkKHRoaXMpOwogICAgIG1fcmVh
ZGVyLT5zZXRPbmVycm9yKHRoaXMpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
bV9yZWFkZXItPnJlYWRBc0FycmF5QnVmZmVyKGJsb2IuZ2V0KCksIGVjKTsKKyAgICBtX3JlYWRl
ci0+cmVhZEFzQXJyYXlCdWZmZXIoYmxvYi5nZXQoKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2Vs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCAy
ZDMxOTJiNmIzOTgyM2M4OTIzMTkwNTlmZTYwODA1MzE5MTkzNDZlLi43Njc4OWI0MjFlMGFjNDBk
ZDM4M2E1ZGMxN2RmNzUwNGE4MDJjMDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24u
Y3BwCkBAIC0zOTcsMTEgKzM5NywxMCBAQCB2b2lkIERPTVNlbGVjdGlvbjo6YWRkUmFuZ2UoUmFu
Z2UqIHIpCiAgICAgfQogCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGlvbi0+c2Vs
ZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBpZiAoci0+Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlOjpTVEFSVF9UT19TVEFSVCwg
cmFuZ2UuZ2V0KCksIGVjKSA9PSAtMSkgeworICAgIGlmIChyLT5jb21wYXJlQm91bmRhcnlQb2lu
dHMoUmFuZ2U6OlNUQVJUX1RPX1NUQVJULCByYW5nZS5nZXQoKSwgSUdOT1JFX0VYQ0VQVElPTikg
PT0gLTEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBkaXNjb250aWd1b3VzIHNlbGVj
dGlvbi4gV2UgZG9uJ3QgZG8gYW55dGhpbmcgaWYgciBhbmQgcmFuZ2UgZG9uJ3QgaW50ZXJzZWN0
LgotICAgICAgICBpZiAoci0+Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlOjpTVEFSVF9UT19F
TkQsIHJhbmdlLmdldCgpLCBlYykgPiAtMSkgewotICAgICAgICAgICAgaWYgKHItPmNvbXBhcmVC
b3VuZGFyeVBvaW50cyhSYW5nZTo6RU5EX1RPX0VORCwgcmFuZ2UuZ2V0KCksIGVjKSA9PSAtMSkK
KyAgICAgICAgaWYgKHItPmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZTo6U1RBUlRfVE9fRU5E
LCByYW5nZS5nZXQoKSwgSUdOT1JFX0VYQ0VQVElPTikgPiAtMSkgeworICAgICAgICAgICAgaWYg
KHItPmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZTo6RU5EX1RPX0VORCwgcmFuZ2UuZ2V0KCks
IElHTk9SRV9FWENFUFRJT04pID09IC0xKQogICAgICAgICAgICAgICAgIC8vIFRoZSBvcmlnaW5h
bCByYW5nZSBhbmQgciBpbnRlcnNlY3QuCiAgICAgICAgICAgICAgICAgc2VsZWN0aW9uLT5zZXRT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyLT5zdGFydFBvc2l0aW9uKCksIHJhbmdlLT5lbmRQ
b3NpdGlvbigpLCBET1dOU1RSRUFNKSk7CiAgICAgICAgICAgICBlbHNlCkBAIC00MTAsOCArNDA5
LDkgQEAgdm9pZCBET01TZWxlY3Rpb246OmFkZFJhbmdlKFJhbmdlKiByKQogICAgICAgICB9CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBkaXNjb250aWd1b3VzIHNl
bGVjdGlvbi4gV2UgZG9uJ3QgZG8gYW55dGhpbmcgaWYgciBhbmQgcmFuZ2UgZG9uJ3QgaW50ZXJz
ZWN0LgorICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgaWYgKHItPmNvbXBh
cmVCb3VuZGFyeVBvaW50cyhSYW5nZTo6RU5EX1RPX1NUQVJULCByYW5nZS5nZXQoKSwgZWMpIDwg
MSAmJiAhZWMpIHsKLSAgICAgICAgICAgIGlmIChyLT5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFu
Z2U6OkVORF9UT19FTkQsIHJhbmdlLmdldCgpLCBlYykgPT0gLTEpCisgICAgICAgICAgICBpZiAo
ci0+Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlOjpFTkRfVE9fRU5ELCByYW5nZS5nZXQoKSwg
SUdOT1JFX0VYQ0VQVElPTikgPT0gLTEpCiAgICAgICAgICAgICAgICAgLy8gVGhlIG9yaWdpbmFs
IHJhbmdlIGNvbnRhaW5zIHIuCiAgICAgICAgICAgICAgICAgc2VsZWN0aW9uLT5zZXRTZWxlY3Rp
b24oVmlzaWJsZVNlbGVjdGlvbihyYW5nZS5nZXQoKSkpOwogICAgICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBhOGE4MDAyODAzMTUzNzY2ZWU3
NmYzNWFiNTI0ODE2NjE5YmRiODNmLi4wNjU3MTJkN2E2YjVlN2FjY2QzZDY1ZGIxOTMzZjE5ZTg1
NzNmOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNDM5LDgg
KzQzOSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3Io
RnJhbWUqIGlubmVyRnJhbWUsIERyYWdEYXRhKiBkcmFnCiAgICAgQVNTRVJUKG1fcGFnZS0+ZHJh
Z0NhcmV0Q29udHJvbGxlcigpLT5oYXNDYXJldCgpKTsKICAgICBTdHJpbmcgdGV4dCA9IG1fcGFn
ZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpID8gIiIg
OiBkcmFnRGF0YS0+YXNQbGFpblRleHQoaW5uZXJGcmFtZSk7CiAgICAgTm9kZSogdGFyZ2V0ID0g
aW5uZXJGcmFtZS0+ZWRpdG9yKCktPmZpbmRFdmVudFRhcmdldEZyb20obV9wYWdlLT5kcmFnQ2Fy
ZXRDb250cm9sbGVyKCktPmNhcmV0UG9zaXRpb24oKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgcmV0dXJuIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZv
ckRyb3AoaW5uZXJGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRleHQpLCBlYyk7Cisg
ICAgcmV0dXJuIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3Ao
aW5uZXJGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRleHQpLCBJR05PUkVfRVhDRVBU
SU9OKTsKIH0KIAogYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhEcmFnRGF0
YSogZHJhZ0RhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMDg3YTBh
YTBjYzE1MTJiMmEyMmZhMmQ1YzVmZjBiODQ4NDRjNTFlYS4uZmI2MzFmN2IxMWI4ODc3ZTUwZjgy
NWU2ZTFhODczNzkxNWM4MTZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtMjI2MCwxMCArMjI2MCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIHRhcmdlCiAgICAgICAgICAg
ICAgICAgLy8gbm9kZSBvbiBtb3VzZSBkb3duIGlmIGl0J3Mgc2VsZWN0ZWQgYW5kIGluc2lkZSBh
IGZvY3VzZWQgbm9kZS4gSXQgd2lsbCBiZQogICAgICAgICAgICAgICAgIC8vIGZvY3VzZWQgaWYg
dGhlIHVzZXIgZG9lcyBhIG1vdXNldXAgb3ZlciBpdCwgaG93ZXZlciwgYmVjYXVzZSB0aGUgbW91
c2V1cAogICAgICAgICAgICAgICAgIC8vIHdpbGwgc2V0IGEgc2VsZWN0aW9uIGluc2lkZSBpdCwg
d2hpY2ggd2lsbCBjYWxsIHNldEZvY3VzZU5vZGVJZk5lZWRlZC4KLSAgICAgICAgICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgICAgICAgICBOb2RlKiBuID0gbm9kZS0+aXNT
aGFkb3dSb290KCkgPyB0b1NoYWRvd1Jvb3Qobm9kZSktPmhvc3QoKSA6IG5vZGU7CiAgICAgICAg
ICAgICAgICAgaWYgKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5pc1JhbmdlKCkKLSAgICAgICAgICAg
ICAgICAgICAgJiYgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCktPmNv
bXBhcmVOb2RlKG4sIGVjKSA9PSBSYW5nZTo6Tk9ERV9JTlNJREUKKyAgICAgICAgICAgICAgICAg
ICAgJiYgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCktPmNvbXBhcmVO
b2RlKG4sIElHTk9SRV9FWENFUFRJT04pID09IFJhbmdlOjpOT0RFX0lOU0lERQogICAgICAgICAg
ICAgICAgICAgICAmJiBuLT5pc0Rlc2NlbmRhbnRPZihtX2ZyYW1lLT5kb2N1bWVudCgpLT5mb2N1
c2VkTm9kZSgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIApAQCAtMzk5MSw4ICszOTkwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgICAg
ICAgICBUb3VjaEV2ZW50OjpjcmVhdGUoZWZmZWN0aXZlVG91Y2hlcy5nZXQoKSwgdGFyZ2V0VG91
Y2hlcy5nZXQoKSwgY2hhbmdlZFRvdWNoZXNbc3RhdGVdLm1fdG91Y2hlcy5nZXQoKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVOYW1lLCB0b3VjaEV2ZW50VGFyZ2V0
LT50b05vZGUoKS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgZXZlbnQuY3RybEtleSgpLCBldmVudC5hbHRL
ZXkoKSwgZXZlbnQuc2hpZnRLZXkoKSwgZXZlbnQubWV0YUtleSgpKTsKLSAgICAgICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgdG91Y2hFdmVudFRhcmdldC0+ZGlzcGF0
Y2hFdmVudCh0b3VjaEV2ZW50LmdldCgpLCBlYyk7CisgICAgICAgICAgICB0b3VjaEV2ZW50VGFy
Z2V0LT5kaXNwYXRjaEV2ZW50KHRvdWNoRXZlbnQuZ2V0KCksIElHTk9SRV9FWENFUFRJT04pOwog
ICAgICAgICAgICAgc3dhbGxvd2VkRXZlbnQgPSBzd2FsbG93ZWRFdmVudCB8fCB0b3VjaEV2ZW50
LT5kZWZhdWx0UHJldmVudGVkKCkgfHwgdG91Y2hFdmVudC0+ZGVmYXVsdEhhbmRsZWQoKTsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVBY3Rp
b25TY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZUFjdGlvblNjaGVkdWxl
ci5jcHAKaW5kZXggY2YxOTNjYzg0ZTk2NmVjNDQ3MjU2YzdlMWEzNThhYjQyNWViOWRhMC4uNDJi
NTBiNzEwYjgyNWRlNGIyZWQwMWYyMTg1ZGY4MmM0NjI5ZGI5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZUFjdGlvblNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZUFjdGlvblNjaGVkdWxlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJGcmFtZUFjdGlvblNjaGVkdWxlci5oIgogCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00Myw5ICs0NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZmlyZSgpCiAgICAgewogICAgICAgICAvLyBPbmx5IGRpc3BhdGNoIGV2ZW50cyB0
byBub2RlcyB0aGF0IGFyZSBpbiB0aGUgZG9jdW1lbnQKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgICAgIGlmIChtX2V2ZW50VGFyZ2V0LT5pbkRvY3VtZW50KCkpCi0gICAgICAg
ICAgICBtX2V2ZW50VGFyZ2V0LT5kaXNwYXRjaEV2ZW50KG1fZXZlbnQsIGVjKTsKKyAgICAgICAg
ICAgIG1fZXZlbnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQobV9ldmVudCwgSUdOT1JFX0VYQ0VQVElP
Tik7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggYmU3M2I3
YjI0ZGIzNDM4YzI0OGU0NjlhNjVlMmZhNTkxOGUxOWRiNC4uZjRlZmFjZWYzMjc5NmRmYzM0YzU4
ZDI0NGM2MzU4MDEyM2ViOWJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC04NzcsOCAr
ODc3LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRX
YWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICAgICAgdW5zaWduZWQga2V5VVJJ
U2l6ZSA9IGtleVVSSS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcik7CiAgICAgICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gaW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlV
UklTaXplLCAxKTsKICAgICAgICAgUmVmUHRyPERhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBEYXRh
Vmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGluaXREYXRhVmll
dy0+c2V0VWludDMyKDAsIGtleVVSSVNpemUsIHRydWUsIGVjKTsKKyAgICAgICAgaW5pdERhdGFW
aWV3LT5zZXRVaW50MzIoMCwga2V5VVJJU2l6ZSwgdHJ1ZSwgSUdOT1JFX0VYQ0VQVElPTik7CiAK
ICAgICAgICAgUmVmUHRyPFVpbnQxNkFycmF5PiBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5Ojpj
cmVhdGUoaW5pdERhdGFCdWZmZXIsIDQsIGtleVVSSS5sZW5ndGgoKSk7CiAgICAgICAgIGtleVVS
SUFycmF5LT5zZXRSYW5nZShrZXlVUkkuY2hhcmFjdGVycygpLCBrZXlVUkkubGVuZ3RoKCkgLyBz
aXplb2YodW5zaWduZWQgY2hhciksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKaW5k
ZXggZmY3NzRkMmVhOTg4ZGZkZjMwOWZjNDYzYjBiODM4NjA4N2I4ZmMzNi4uMWIzYTUxNzQwNDI1
YmVlM2E1MjMwZmYwZjc4ZWM2MjQyMDVhN2I5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQu
Y3BwCkBAIC01MiwyMCArNTIsMTggQEAgU1ZHU1ZHRWxlbWVudCogU1ZHRG9jdW1lbnQ6OnJvb3RF
bGVtZW50KCkgY29uc3QKIAogdm9pZCBTVkdEb2N1bWVudDo6ZGlzcGF0Y2hab29tRXZlbnQoZmxv
YXQgcHJldlNjYWxlLCBmbG9hdCBuZXdTY2FsZSkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBSZWZQdHI8U1ZHWm9vbUV2ZW50PiBldmVudCA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8
U1ZHWm9vbUV2ZW50PihjcmVhdGVFdmVudCgiU1ZHWm9vbUV2ZW50cyIsIGVjKSk7CisgICAgUmVm
UHRyPFNWR1pvb21FdmVudD4gZXZlbnQgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR1pvb21FdmVu
dD4oY3JlYXRlRXZlbnQoIlNWR1pvb21FdmVudHMiLCBJR05PUkVfRVhDRVBUSU9OKSk7CiAgICAg
ZXZlbnQtPmluaXRFdmVudChldmVudE5hbWVzKCkuem9vbUV2ZW50LCB0cnVlLCBmYWxzZSk7CiAg
ICAgZXZlbnQtPnNldFByZXZpb3VzU2NhbGUocHJldlNjYWxlKTsKICAgICBldmVudC0+c2V0TmV3
U2NhbGUobmV3U2NhbGUpOwotICAgIHJvb3RFbGVtZW50KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQu
cmVsZWFzZSgpLCBlYyk7CisgICAgcm9vdEVsZW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChldmVudC5y
ZWxlYXNlKCksIElHTk9SRV9FWENFUFRJT04pOwogfQogCiB2b2lkIFNWR0RvY3VtZW50OjpkaXNw
YXRjaFNjcm9sbEV2ZW50KCkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQ
dHI8RXZlbnQ+IGV2ZW50ID0gY3JlYXRlRXZlbnQoIlNWR0V2ZW50cyIsIGVjKTsKKyAgICBSZWZQ
dHI8RXZlbnQ+IGV2ZW50ID0gY3JlYXRlRXZlbnQoIlNWR0V2ZW50cyIsIElHTk9SRV9FWENFUFRJ
T04pOwogICAgIGV2ZW50LT5pbml0RXZlbnQoZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50LCB0cnVl
LCBmYWxzZSk7Ci0gICAgcm9vdEVsZW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChldmVudC5yZWxlYXNl
KCksIGVjKTsKKyAgICByb290RWxlbWVudCgpLT5kaXNwYXRjaEV2ZW50KGV2ZW50LnJlbGVhc2Uo
KSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKIGJvb2wgU1ZHRG9jdW1lbnQ6Onpvb21BbmRQYW5F
bmFibGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGgu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5jcHAKaW5kZXggMzRhNDE5NTRhNDli
ZjAwNTNjNDhhZTE3MTgwMWVmYThmNDZlOGIxZC4uMDYwYmFlNGIzMjNjNTY4MGZiYzk5ZmM1MGZk
NjQzODY5MmJhNjZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5jcHAKQEAgLTEyNSw4ICsxMjUs
NyBAQCBTVkdMZW5ndGg6OlNWR0xlbmd0aChTVkdMZW5ndGhNb2RlIG1vZGUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWVBc1N0cmluZykKICAgICA6IG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKDApCiAgICAg
LCBtX3VuaXQoc3RvcmVVbml0KG1vZGUsIExlbmd0aFR5cGVOdW1iZXIpKQogewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZywgZWMp
OworICAgIHNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZywgSUdOT1JFX0VYQ0VQVElPTik7
CiB9CiAKIFNWR0xlbmd0aDo6U1ZHTGVuZ3RoKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHZhbHVlLCBTVkdMZW5ndGhNb2RlIG1vZGUsIFNWR0xlbmd0aFR5cGUgdW5pdFR5
cGUpCkBAIC0xODcsOCArMTg2LDcgQEAgU1ZHTGVuZ3RoTW9kZSBTVkdMZW5ndGg6OnVuaXRNb2Rl
KCkgY29uc3QKIAogZmxvYXQgU1ZHTGVuZ3RoOjp2YWx1ZShjb25zdCBTVkdMZW5ndGhDb250ZXh0
JiBjb250ZXh0KSBjb25zdAogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHJldHVy
biB2YWx1ZShjb250ZXh0LCBlYyk7CisgICAgcmV0dXJuIHZhbHVlKGNvbnRleHQsIElHTk9SRV9F
WENFUFRJT04pOwogfQogCiBmbG9hdCBTVkdMZW5ndGg6OnZhbHVlKGNvbnN0IFNWR0xlbmd0aENv
bnRleHQmIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA0NDdhYjFlZjJjM2U5
MGRjYTcwYTZkMGVlODhkMWZlNTQ1YzQxN2YzLi40ZTEzNTBlMzQ2MzhlODgwYjg3Yzc1ZDZmN2Yy
MTQ1NmVhNWY4YjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyLmNwcApAQCAtMTY3LDggKzE2Nyw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6
OmV4aXRUZXh0KCkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgIVVTRShRWE1MU1RSRUFNKQotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIG1fbGVhZlRleHROb2RlLT5hcHBlbmREYXRhKHRv
U3RyaW5nKG1fYnVmZmVyZWRUZXh0LmRhdGEoKSwgbV9idWZmZXJlZFRleHQuc2l6ZSgpKSwgZWMp
OworICAgIG1fbGVhZlRleHROb2RlLT5hcHBlbmREYXRhKHRvU3RyaW5nKG1fYnVmZmVyZWRUZXh0
LmRhdGEoKSwgbV9idWZmZXJlZFRleHQuc2l6ZSgpKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAg
VmVjdG9yPHhtbENoYXI+IGVtcHR5OwogICAgIG1fYnVmZmVyZWRUZXh0LnN3YXAoZW1wdHkpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
clF0LmNwcAppbmRleCBhMmVkNTI0M2VlZWNhMmZhOTUwNzQ1ZjYwYmVkNjhkNWViNWYwMmMwLi5h
YzkwNDRjZTJhMDA5NmJiZTRlNDU4ZjZmYjk3ZjJkM2VlYWM4MGQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJRdC5jcHAKQEAgLTQwMyw5ICs0
MDMsOCBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZSgpCiAgICAgICAgICAgICAgICAg
UVN0cmluZyBlbnRpdHkgPSBtX3N0cmVhbS5uYW1lKCkudG9TdHJpbmcoKTsKICAgICAgICAgICAg
ICAgICBpZiAoIW1fbGVhZlRleHROb2RlKQogICAgICAgICAgICAgICAgICAgICBlbnRlclRleHQo
KTsKLSAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgICAgICAg
ICAvLyBxRGVidWcoKTw8IiAtLS0tLS0tIGFkZGluZyBlbnRpdHkgIjw8c3RyOwotICAgICAgICAg
ICAgICAgIG1fbGVhZlRleHROb2RlLT5hcHBlbmREYXRhKGRlY29kZU5hbWVkRW50aXR5KGVudGl0
eSksIGVjKTsKKyAgICAgICAgICAgICAgICBtX2xlYWZUZXh0Tm9kZS0+YXBwZW5kRGF0YShkZWNv
ZGVOYW1lZEVudGl0eShlbnRpdHkpLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC00MjcsMTQgKzQyNiwxMyBAQCB2b2lk
IFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZSgpCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpzdGFy
dERvY3VtZW50KCkKIHsKICAgICBpbml0aWFsaXplUGFyc2VyQ29udGV4dCgpOwotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogCiAgICAgaWYgKCFtX3BhcnNpbmdGcmFnbWVudCkgewotICAgICAg
ICBkb2N1bWVudCgpLT5zZXRYTUxTdGFuZGFsb25lKG1fc3RyZWFtLmlzU3RhbmRhbG9uZURvY3Vt
ZW50KCksIGVjKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0WE1MU3RhbmRhbG9uZShtX3N0cmVh
bS5pc1N0YW5kYWxvbmVEb2N1bWVudCgpLCBJR05PUkVfRVhDRVBUSU9OKTsKIAogICAgICAgICBR
U3RyaW5nUmVmIHZlcnNpb24gPSBtX3N0cmVhbS5kb2N1bWVudFZlcnNpb24oKTsKICAgICAgICAg
aWYgKCF2ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGRvY3VtZW50KCktPnNldFhNTFZl
cnNpb24odmVyc2lvbiwgZWMpOworICAgICAgICAgICAgZG9jdW1lbnQoKS0+c2V0WE1MVmVyc2lv
bih2ZXJzaW9uLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAgUVN0cmluZ1JlZiBlbmNvZGlu
ZyA9IG1fc3RyZWFtLmRvY3VtZW50RW5jb2RpbmcoKTsKICAgICAgICAgaWYgKCFlbmNvZGluZy5p
c0VtcHR5KCkpCiAgICAgICAgICAgICBkb2N1bWVudCgpLT5zZXRYTUxFbmNvZGluZyhlbmNvZGlu
Zyk7CkBAIC01NjQsOCArNTYyLDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VDaGFy
YWN0ZXJzKCkKIHsKICAgICBpZiAoIW1fbGVhZlRleHROb2RlKQogICAgICAgICBlbnRlclRleHQo
KTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBtX2xlYWZUZXh0Tm9kZS0+YXBwZW5k
RGF0YShtX3N0cmVhbS50ZXh0KCksIGVjKTsKKyAgICBtX2xlYWZUZXh0Tm9kZS0+YXBwZW5kRGF0
YShtX3N0cmVhbS50ZXh0KCksIElHTk9SRV9FWENFUFRJT04pOwogfQogCiB2b2lkIFhNTERvY3Vt
ZW50UGFyc2VyOjpwYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbigpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>