<?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>214928</bug_id>
          
          <creation_ts>2020-07-29 11:57:55 -0700</creation_ts>
          <short_desc>Support HDR decode in SW VP9</short_desc>
          <delta_ts>2020-07-29 18:01:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1676076</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-29 11:57:55 -0700</bug_when>
    <thetext>Support HDR decode in SW VP9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676077</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-29 11:58:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/66284848&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676080</commentid>
    <comment_count>2</comment_count>
      <attachid>405480</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-29 12:07:12 -0700</bug_when>
    <thetext>Created attachment 405480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676085</commentid>
    <comment_count>3</comment_count>
      <attachid>405481</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-29 12:19:46 -0700</bug_when>
    <thetext>Created attachment 405481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676095</commentid>
    <comment_count>4</comment_count>
      <attachid>405480</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-07-29 12:45:32 -0700</bug_when>
    <thetext>Comment on attachment 405480
Patch

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

r=me once the bots are happy

&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp:277
&gt; +        CFTypeRef configurationRecord = CFDictionaryGetValue((CFDictionaryRef)extensionAtoms, CFSTR(&quot;vpcC&quot;));

`auto configurationRecord = static_cast&lt;CFDataRef&gt;(CFDictionaryGetValue(...`

&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp:281
&gt; +        auto configurationRecordSize = CFDataGetLength((CFDataRef)configurationRecord);

The cast isn&apos;t necessary with the above.

&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp:285
&gt; +        auto configurationRecordData = CFDataGetBytePtr((CFDataRef)configurationRecord);

Ditto

&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp:305
&gt; +        CFMutableArrayRef cfPixelFormats = CFArrayCreateMutable(kCFAllocatorDefault, 2, &amp;kCFTypeArrayCallBacks);

&apos;auto cfPixelFormats = ...`

&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp:310
&gt; +        CFNumberRef borderPixelsValue = createNumber(32);

`auto borderPixelsValue = ...`

&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp:326
&gt; +        CFDictionaryRef attributes = CFDictionaryCreate(kCFAllocatorDefault, keys, values, std::size(keys), &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks);

`auto attributes = ...`

&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp:342
&gt; +    CFRelease(pixelBufferAttributes);

Double release!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676100</commentid>
    <comment_count>5</comment_count>
      <attachid>405480</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-29 12:51:54 -0700</bug_when>
    <thetext>Comment on attachment 405480
Patch

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

&gt;&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp:305
&gt;&gt; +        CFMutableArrayRef cfPixelFormats = CFArrayCreateMutable(kCFAllocatorDefault, 2, &amp;kCFTypeArrayCallBacks);
&gt; 
&gt; &apos;auto cfPixelFormats = ...`

Why not use CFArrayCreate instead of CRArrayCreateMutable?

&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp:308
&gt; +        CFRelease(formatNumber);

If this was WebKit code, not libwebtrc, I would suggest using adoptCF instead of CFRelease. It’s hard to get reference counting right the old manual way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676101</commentid>
    <comment_count>6</comment_count>
      <attachid>405489</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-29 12:51:55 -0700</bug_when>
    <thetext>Created attachment 405489
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676103</commentid>
    <comment_count>7</comment_count>
      <attachid>405480</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-29 12:53:09 -0700</bug_when>
    <thetext>Comment on attachment 405480
Patch

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

&gt;&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp:277
&gt;&gt; +        CFTypeRef configurationRecord = CFDictionaryGetValue((CFDictionaryRef)extensionAtoms, CFSTR(&quot;vpcC&quot;));
&gt; 
&gt; `auto configurationRecord = static_cast&lt;CFDataRef&gt;(CFDictionaryGetValue(...`

Yeah, much better.

&gt;&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp:305
&gt;&gt; +        CFMutableArrayRef cfPixelFormats = CFArrayCreateMutable(kCFAllocatorDefault, 2, &amp;kCFTypeArrayCallBacks);
&gt; 
&gt; &apos;auto cfPixelFormats = ...`

Ok.

&gt;&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp:310
&gt;&gt; +        CFNumberRef borderPixelsValue = createNumber(32);
&gt; 
&gt; `auto borderPixelsValue = ...`

Ok.

&gt;&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp:326
&gt;&gt; +        CFDictionaryRef attributes = CFDictionaryCreate(kCFAllocatorDefault, keys, values, std::size(keys), &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks);
&gt; 
&gt; `auto attributes = ...`

Ok.

&gt;&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp:342
&gt;&gt; +    CFRelease(pixelBufferAttributes);
&gt; 
&gt; Double release!

Ooh, that&apos;s bad!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676108</commentid>
    <comment_count>8</comment_count>
      <attachid>405489</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-07-29 13:20:47 -0700</bug_when>
    <thetext>Comment on attachment 405489
Patch for landing.

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        CMFormatDescription attached to each incoming video fram.

Nit: s/fram/frame.

&gt; Source/WebCore/ChangeLog:13
&gt; +        in this situations.

Nit: s/this/those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676125</commentid>
    <comment_count>9</comment_count>
      <attachid>405499</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-29 14:17:15 -0700</bug_when>
    <thetext>Created attachment 405499
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676143</commentid>
    <comment_count>10</comment_count>
      <attachid>405503</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-29 14:37:14 -0700</bug_when>
    <thetext>Created attachment 405503
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676269</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-29 18:01:10 -0700</bug_when>
    <thetext>Committed r265073: &lt;https://trac.webkit.org/changeset/265073&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 405503.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405480</attachid>
            <date>2020-07-29 12:07:12 -0700</date>
            <delta_ts>2020-07-29 12:45:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214928-20200729120711.patch</filename>
            <type>text/plain</type>
            <size>24748</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBiMDU1NWMzNzdkZDY0ZmJmMGM3ODU0N2RkNDdmNDQxNTYyZDY5YTIxLi40MGUz
NDcyMDZiYjQxNDliYWJkNzM0ZDgwYTdhNmI1MDkzMzA4YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMC0wNy0yOSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IEhEUiBkZWNvZGUgaW4g
U1cgVlA5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTQ5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
dXBwb3J0IGNvbnZlcnRpbmcgSTAxMCBidWZmZXJzIChmdWxsLXBsYW5hciwgMTAtYml0IGRhdGEg
cGFja2VkIGludG8gdGhlIExTQiBvZiBhIDE2LWJpdCBpbnQpCisgICAgICAgIGludG8gQ1ZQaXhl
bEJ1ZmZlcnMgKGJpLXBsYW5hciwgMTAtYml0IGRhdGEgcGFja2VkIGludG8gdGhlIE1TQiBvZiBh
IDE2LWJpdCBpbnQpLiBUaGlzIHJlcXVpcmVzCisgICAgICAgIHVzaW5nIGZ1bmN0aW9ucyBmcm9t
IGxpYnl1diB0byBtZXJnZSBhbmQgc2NhbGUgMTYtYml0IHBsYW5hciBkYXRhLCBvcHRpbWl6ZWQg
Zm9yIEFWWDIuIFRvIGtub3cKKyAgICAgICAgdGhhdCBpbmNvbWluZyBidWZmZXJzIGFyZSAxMC1i
aXQsIGFuZCB3aGV0aGVyIHRoZXkncmUgZnVsbC1yYW5nZSwgcGFyc2UgdGhlICd2cGNDJyBhdG9t
IGF0dGFjaGVkCisgICAgICAgIHRvIHRoZSBDTUZvcm1hdERlc2NyaXB0aW9uLgorCisgICAgICAg
ICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbToKKyAgICAgICAg
KHdlYnJ0Yzo6TWVyZ2VVVlBsYW5lXzE2KToKKyAgICAgICAgKHdlYnJ0Yzo6Q29weVBsYW5lXzE2
KToKKyAgICAgICAgKHdlYnJ0Yzo6Q29weVZpZGVvRnJhbWVUb1BpeGVsQnVmZmVyKToKKyAgICAg
ICAgKHdlYnJ0Yzo6cGl4ZWxCdWZmZXJGcm9tRnJhbWUpOgorICAgICAgICAqIFNvdXJjZS93ZWJy
dGMvc2RrL1dlYktpdC9XZWJLaXRWUDlEZWNvZGVyLmNwcDoKKyAgICAgICAgKHdlYnJ0Yzo6Y3Jl
YXRlV2ViS2l0VlA5RGVjb2Rlcik6CisgICAgICAgICh3ZWJydGM6OnN0YXJ0VlA5RGVjb2RlclNl
c3Npb24pOgorICAgICAgICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OmNyZWF0
ZVBpeGVsQnVmZmVyUG9vbEZvckZvcm1hdERlc2NyaXB0aW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6
V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKToKKwogMjAyMC0wNy0yMiAgQ29ucmFk
IFNodWx0eiAgPGNvbnJhZF9zaHVsdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBtYWNP
UyBWZXJzaW9uIG1hY3JvcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDUyYjhhNzFjNTAzNzQ1OTQwZDE1MzEyMzIy
ZWJkYjY1Yjc1Y2M1YjguLjVhM2Y3YWE4YmU3YzczYTVkMDZhOTBiZjkwNDRjYzMwMGViYmNhOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0wNy0yOSAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IEhEUiBkZWNvZGUgaW4gU1cgVlA5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ5MjgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0
IHRoZSBpbmNvbWluZyBwcm9wZXJ0aWVzIHBhcnNlZCBmcm9tIHRoZSBWUDkgaGVhZGVyIGludG8g
ZXh0ZW5zaW9ucyB0byBvdXIKKyAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvbiBhdHRhY2hlZCB0
byBlYWNoIGluY29taW5nIHZpZGVvIGZyYW0uCisKKyAgICAgICAgRHJpdmUtYnkgZml4OiBGaWxl
cyBpbiB0aGUgd2lsZCB3aWxsIGhhdmUgaW5jb3JyZWN0IHZhbHVlcyBmb3Igd2hldGhlciBhIGdp
dmVuCisgICAgICAgIGZyYW1lIGlzIGEga2V5ZnJhbWUgb3Igbm90LiBUcnVzdCB0aGUgVlA5IGhl
YWRlciBwYXJzZXIgcmF0aGVyIHRoYW4gdGhlIGNvbnRhaW5lcgorICAgICAgICBpbiB0aGlzIHNp
dHVhdGlvbnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0NNQ29sb3JQcmlt
YXJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ01UcmFuc2ZlckZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0NNWUNiQ1JNYXRyaXgpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA5SGVhZGVyUGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRnJhbWUpOgorCiAyMDIwLTA3
LTI2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0g
TWFrZSBEZWNvZGVyVGVzdCBydW4gYWdhaW5zdCAubXA0IGZpbGVzOyBhZGQgcmF0ZS1saW1pdGlu
Zy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0KaW5kZXggOWZm
MDNiN2Q5ODQyOTc5N2Q2MDFmYWYwZDE0YTg0NjVlNTg1NDc4Zi4uNTQzNGUzNzU4MTkxODEyZDlm
MWEzNjRkMmMzOGJiN2U1NWJmY2M4MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0KKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJL
aXRVdGlsaXRpZXMubW0KQEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1ZGUgIm5hdGl2ZS9zcmMv
b2JqY19mcmFtZV9idWZmZXIuaCIKICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVk
ZS9saWJ5dXYvY29udmVydF9mcm9tLmgiCisjaW5jbHVkZSAibGlieXV2L2NwdV9pZC5oIgorI2lu
Y2x1ZGUgImxpYnl1di9yb3cuaCIKICNpbmNsdWRlICJGcmFtZXdvcmsvSGVhZGVycy9XZWJSVEMv
UlRDVmlkZW9GcmFtZUJ1ZmZlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTc3LDE0ICs3
OSwxMzUgQEAgc3RhdGljIGJvb2wgQ29weVZpZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGNvbnN0IHdl
YnJ0Yzo6STQyMEJ1ZmZlckludGVyZmFjZSogZnJhbWUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
Ly8gTWVyZ2VVVlBsYW5lXzE2IG1lcmdlcyB0d28gc2VwYXJhdGUgVSBhbmQgViBwbGFuZXMgaW50
byBhIHNpbmdsZSwgaW50ZXJsZWF2ZWQKKy8vIHBsYW5lLCB3aGlsZSBzaW11bHRhbmVvdXNseSBz
Y2FsaW5nIHRoZSBvdXRwdXQuIFVzZSAnNjQnIGluIHRoZSBzY2FsZSBmaWVsZCB0bworLy8gc2hp
ZnQgMTAtYml0IGRhdGEgZnJvbSB0aGUgTFNCIG9mIHRoZSAxNi1iaXQgaW50IHRvIHRoZSBNU0Iu
CisvLyBOT1RFOiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvbiBsaWJ5dXY6Ok1lcmdlVVZQbGFuZS4g
SWYgbGlieXV2IGV2ZXIgc3VwcG9ydHMKKy8vIHRoaXMgb3BlcmF0aW9uIGRpcmVjdGx5LCB3ZSBz
aG91bGQgcmVwbGFjZSB0aGUgYmVsb3cgd2l0aCBpdC4KKy8vIE5PVEU6IGxpYnl1diBvbmx5IGhh
cyBhbiBvcG1pdGl6YXRpb24gb2YgTWVyZ2VVVlJvd18xNiBmb3IgQVZYMiBpbnRyaW5zaWNzLgor
Ly8gQ2FsbGluZyB0aGlzIG1ldGhvZCBvbiBhIENQVSB3aXRob3V0IEFWWDIgd2lsbCBmYWxsIGJh
Y2sgdG8gYSBzdGFuZGFyZCBDCisvLyBpbXBsZW1lbnRhdGlvbiwgYW5kIHdpbGwgcHJvYmFibHkg
YmUgc3VwZXIgc2xvdy4gQWRkIG5ldyBNZXJnZVVWUm93XzE2CisvLyBpbXBsZW1lbnRhdGlvbnMg
YXMgdGhleSBiZWNvbWUgYXZhaWxhYmxlIGluIGxpYnl1di4KK3ZvaWQgTWVyZ2VVVlBsYW5lXzE2
KGNvbnN0IHVpbnQxNl90KiBzcmNfdSwgaW50IHNyY19zdHJpZGVfdSwgY29uc3QgdWludDE2X3Qq
IHNyY192LCBpbnQgc3JjX3N0cmlkZV92LCB1aW50MTZfdCogZHN0X3V2LCBpbnQgZHN0X3N0cmlk
ZV91diwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgc2NhbGUpIHsKKyAgICB2b2lkICgqTWVy
Z2VVVlJvd18xNikoY29uc3QgdWludDE2X3QqIHNyY191LCBjb25zdCB1aW50MTZfdCogc3JjX3Ys
IHVpbnQxNl90KiBkc3RfdXYsIGludCBzY2FsZSwgaW50IHdpZHRoKSA9IGxpYnl1djo6TWVyZ2VV
VlJvd18xNl9DOworICAgIC8vIE5lZ2F0aXZlIGhlaWdodCBtZWFucyBpbnZlcnQgdGhlIGltYWdl
LgorICAgIGlmIChoZWlnaHQgPCAwKSB7CisgICAgICAgIGhlaWdodCA9IC1oZWlnaHQ7CisgICAg
ICAgIGRzdF91diA9IGRzdF91diArIChoZWlnaHQgLSAxKSAqIGRzdF9zdHJpZGVfdXY7CisgICAg
ICAgIGRzdF9zdHJpZGVfdXYgPSAtZHN0X3N0cmlkZV91djsKKyAgICB9CisgICAgLy8gQ29hbGVz
Y2Ugcm93cy4KKyAgICBpZiAoc3JjX3N0cmlkZV91ID09IHdpZHRoICYmIHNyY19zdHJpZGVfdiA9
PSB3aWR0aCAmJiBkc3Rfc3RyaWRlX3V2ID09IHdpZHRoICogMikgeworICAgICAgICB3aWR0aCAq
PSBoZWlnaHQ7CisgICAgICAgIGhlaWdodCA9IDE7CisgICAgICAgIHNyY19zdHJpZGVfdSA9IHNy
Y19zdHJpZGVfdiA9IGRzdF9zdHJpZGVfdXYgPSAwOworICAgIH0KKyNpZiBkZWZpbmVkKEhBU19N
RVJHRVVWUk9XXzE2X0FWWDIpCisgICAgaWYgKGxpYnl1djo6VGVzdENwdUZsYWcobGlieXV2Ojpr
Q3B1SGFzQVZYMikpCisgICAgICAgIE1lcmdlVVZSb3dfMTYgPSBsaWJ5dXY6Ok1lcmdlVVZSb3df
MTZfQVZYMjsKKyNlbmRpZgorCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkg
eworICAgICAgICAvLyBNZXJnZSBhIHJvdyBvZiBVIGFuZCBWIGludG8gYSByb3cgb2YgVVYuCisg
ICAgICAgIE1lcmdlVVZSb3dfMTYoc3JjX3UsIHNyY192LCBkc3RfdXYsIHNjYWxlLCB3aWR0aCk7
CisgICAgICAgIHNyY191ICs9IHNyY19zdHJpZGVfdSAvIHNpemVvZih1aW50MTZfdCk7CisgICAg
ICAgIHNyY192ICs9IHNyY19zdHJpZGVfdiAvIHNpemVvZih1aW50MTZfdCk7CisgICAgICAgIGRz
dF91diArPSBkc3Rfc3RyaWRlX3V2IC8gc2l6ZW9mKHVpbnQxNl90KTsKKyAgICB9Cit9CisKKy8v
IENvcHlQbGFuZV8xNiB3aWxsIGNvcHkgYSBwbGFuZSBvZiAxNi1iaXQgZGF0YSBmcm9tIG9uZSBs
b2NhdGlvbiB0byBhbm90aGVyLAorLy8gd2hpbGUgc2ltdWx0YW5lb3VzbHkgc2NhbGluZyB0aGUg
b3V0cHV0LiBVc2UgJzY0JyBpbiB0aGUgc2NhbGUgZmllbGQgdG8KKy8vIHNoaWZ0IDEwLWJpdCBk
YXRhIGZyb20gdGhlIExTQiBvZiBhIDE2LWJpdCBpbnQgdG8gdGhlIE1TQi4KKy8vIE5PVEU6IFRo
aXMgbWV0aG9kIGlzIGJhc2VkIG9uIE1lcmdlVVZQbGFuZV8xNiBhYm92ZSwgYnV0IG9wZXJhdGVz
IG9uIGEKKy8vIHNpbmdsZSBwbGFuZSwgcmF0ZXIgdGhhbiBpbnRlcmxlYXZpbmcgdHdvIHBsYW5l
cy4gSWYgbGlieXV2IGV2ZXIgc3VwcG9ydHMKKy8vIHRoaXMgb3BlcmF0aW9uIGRpcmVjdGx5LCB3
ZSBzaG91bGQgcmVwbGFjZSB0aGUgYmVsb3cgd2l0aCBpdC4KKy8vIE5PVEU6IGxpYnl1diBvbmx5
IGhhcyBhbiBvcG1pdGl6YXRpb24gb2YgTWVyZ2VVVlJvd18xNiBmb3IgQVZYMiBpbnRyaW5zaWNz
LgorLy8gQ2FsbGluZyB0aGlzIG1ldGhvZCBvbiBhIENQVSB3aXRob3V0IEFWWDIgd2lsbCBmYWxs
IGJhY2sgdG8gYSBzdGFuZGFyZCBDCisvLyBpbXBsZW1lbnRhdGlvbiwgYW5kIHdpbGwgcHJvYmFi
bHkgYmUgc3VwZXIgc2xvdy4gQWRkIG5ldyBNZXJnZVVWUm93XzE2CisvLyBpbXBsZW1lbnRhdGlv
bnMgYXMgdGhleSBiZWNvbWUgYXZhaWxhYmxlIGluIGxpYnl1di4KK3ZvaWQgQ29weVBsYW5lXzE2
KGNvbnN0IHVpbnQxNl90KiBzcmMsIGludCBzcmNfc3RyaWRlLCB1aW50MTZfdCogZHN0LCBpbnQg
ZHN0X3N0cmlkZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgc2NhbGUpCit7CisgICAgdm9p
ZCAoKk11bHRpcGx5Um93XzE2KShjb25zdCB1aW50MTZfdCogc3JjX3ksIHVpbnQxNl90KiBkc3Rf
eSwgaW50IHNjYWxlLCBpbnQgd2lkdGgpID0gbGlieXV2OjpNdWx0aXBseVJvd18xNl9DOworICAg
IC8vIE5lZ2F0aXZlIGhlaWdodCBtZWFucyBpbnZlcnQgdGhlIGltYWdlLgorICAgIGlmIChoZWln
aHQgPCAwKSB7CisgICAgICAgIGhlaWdodCA9IC1oZWlnaHQ7CisgICAgICAgIGRzdCA9IGRzdCAr
IChoZWlnaHQgLSAxKSAqIGRzdF9zdHJpZGU7CisgICAgICAgIGRzdF9zdHJpZGUgPSAtZHN0X3N0
cmlkZTsKKyAgICB9CisgICAgLy8gQ29hbGVzY2Ugcm93cy4KKyAgICBpZiAoc3JjX3N0cmlkZSA9
PSB3aWR0aCAmJiBkc3Rfc3RyaWRlID09IHdpZHRoICogMikgeworICAgICAgICB3aWR0aCAqPSBo
ZWlnaHQ7CisgICAgICAgIGhlaWdodCA9IDE7CisgICAgICAgIHNyY19zdHJpZGUgPSBkc3Rfc3Ry
aWRlID0gMDsKKyAgICB9CisjaWYgZGVmaW5lZChIQVNfTUVSR0VVVlJPV18xNl9BVlgyKQorICAg
IGlmIChsaWJ5dXY6OlRlc3RDcHVGbGFnKGxpYnl1djo6a0NwdUhhc0FWWDIpKQorICAgICAgICBN
dWx0aXBseVJvd18xNiA9IGxpYnl1djo6TXVsdGlwbHlSb3dfMTZfQVZYMjsKKyNlbmRpZgorCisg
ICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgeworICAgICAgICBNdWx0aXBseVJv
d18xNihzcmMsIGRzdCwgc2NhbGUsIHdpZHRoKTsKKyAgICAgICAgc3JjICs9IHNyY19zdHJpZGUg
LyBzaXplb2YodWludDE2X3QpOworICAgICAgICBkc3QgKz0gZHN0X3N0cmlkZSAvIHNpemVvZih1
aW50MTZfdCk7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBDb3B5VmlkZW9GcmFtZVRvUGl4ZWxC
dWZmZXIoY29uc3Qgd2VicnRjOjpJMDEwQnVmZmVySW50ZXJmYWNlKiBmcmFtZSwgQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbF9idWZmZXIpCit7CisgICAgUlRDX0RDSEVDSyhwaXhlbF9idWZmZXIpOwor
ICAgIFJUQ19EQ0hFQ0soQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbF9idWZm
ZXIpID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyVmlkZW9SYW5nZSB8
fCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsX2J1ZmZlcikgPT0ga0NWUGl4
ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2UpOworICAgIFJUQ19EQ0hF
Q0tfRVEoQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodE9mUGxhbmUocGl4ZWxfYnVmZmVyLCAwKSwgc3Rh
dGljX2Nhc3Q8c2l6ZV90PihmcmFtZS0+aGVpZ2h0KCkpKTsKKyAgICBSVENfRENIRUNLX0VRKENW
UGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUocGl4ZWxfYnVmZmVyLCAwKSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihmcmFtZS0+d2lkdGgoKSkpOworCisgICAgaWYgKENWUGl4ZWxCdWZmZXJMb2NrQmFz
ZUFkZHJlc3MocGl4ZWxfYnVmZmVyLCAwKSAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHNyY195ID0gY29uc3RfY2FzdDx1aW50MTZfdCo+KGZy
YW1lLT5EYXRhWSgpKTsKKyAgICBhdXRvIHNyY191ID0gY29uc3RfY2FzdDx1aW50MTZfdCo+KGZy
YW1lLT5EYXRhVSgpKTsKKyAgICBhdXRvIHNyY192ID0gY29uc3RfY2FzdDx1aW50MTZfdCo+KGZy
YW1lLT5EYXRhVigpKTsKKyAgICBhdXRvIHNyY193aWR0aF95ID0gZnJhbWUtPndpZHRoKCk7Cisg
ICAgYXV0byBzcmNfaGVpZ2h0X3kgPSBmcmFtZS0+aGVpZ2h0KCk7CisgICAgYXV0byBzcmNfc3Ry
aWRlX3kgPSBmcmFtZS0+U3RyaWRlWSgpICogc2l6ZW9mKHVpbnQxNl90KTsKKyAgICBhdXRvIHNy
Y193aWR0aF91diA9IGZyYW1lLT5DaHJvbWFXaWR0aCgpOworICAgIGF1dG8gc3JjX2hlaWdodF91
diA9IGZyYW1lLT5DaHJvbWFIZWlnaHQoKTsKKyAgICBhdXRvIHNyY19zdHJpZGVfdSA9IGZyYW1l
LT5TdHJpZGVVKCkgKiBzaXplb2YodWludDE2X3QpOworICAgIGF1dG8gc3JjX3N0cmlkZV92ID0g
ZnJhbWUtPlN0cmlkZVYoKSAqIHNpemVvZih1aW50MTZfdCk7CisKKyAgICBhdXRvKiBkc3RfeSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NP
ZlBsYW5lKHBpeGVsX2J1ZmZlciwgMCkpOworICAgIGF1dG8gZHN0X3N0cmlkZV95ID0gQ1ZQaXhl
bEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbF9idWZmZXIsIDApOworICAgIGF1dG8g
ZHN0X3dpZHRoX3kgPSBDVlBpeGVsQnVmZmVyR2V0V2lkdGhPZlBsYW5lKHBpeGVsX2J1ZmZlciwg
MCk7CisgICAgYXV0byBkc3RfaGVpZ2h0X3kgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQbGFu
ZShwaXhlbF9idWZmZXIsIDApOworCisgICAgYXV0byogZHN0X3V2ID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50MTZfdCo+KENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUocGl4ZWxfYnVm
ZmVyLCAxKSk7CisgICAgYXV0byBkc3Rfc3RyaWRlX3V2ID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVz
UGVyUm93T2ZQbGFuZShwaXhlbF9idWZmZXIsIDEpOworICAgIGF1dG8gZHN0X3dpZHRoX3V2ID0g
Q1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFuZShwaXhlbF9idWZmZXIsIDEpOworICAgIGF1dG8g
ZHN0X2hlaWdodF91diA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVsX2J1ZmZl
ciwgMSk7CisKKyAgICBpZiAoc3JjX3dpZHRoX3kgIT0gZHN0X3dpZHRoX3kKKyAgICAgICAgfHwg
c3JjX2hlaWdodF95ICE9IGRzdF9oZWlnaHRfeQorICAgICAgICB8fCBzcmNfd2lkdGhfdXYgIT0g
ZHN0X3dpZHRoX3V2CisgICAgICAgIHx8IHNyY19oZWlnaHRfdXYgIT0gZHN0X2hlaWdodF91dikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ29weVBsYW5lXzE2KHNyY195LCBzcmNfc3Ry
aWRlX3ksIGRzdF95LCBkc3Rfc3RyaWRlX3ksIGRzdF93aWR0aF95LCBkc3RfaGVpZ2h0X3ksIDY0
KTsKKyAgICBNZXJnZVVWUGxhbmVfMTYoc3JjX3UsIHNyY19zdHJpZGVfdSwgc3JjX3YsIHNyY19z
dHJpZGVfdiwgZHN0X3V2LCBkc3Rfc3RyaWRlX3V2LCBkc3Rfd2lkdGhfdXYsIGRzdF9oZWlnaHRf
dXYsIDY0KTsKKworICAgIENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhwaXhlbF9idWZm
ZXIsIDApOworICAgIHJldHVybiB0cnVlOworfQorCiBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVm
ZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBzdGQ6OmZ1bmN0aW9u
PENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QpPiYgbWFrZVBpeGVsQnVmZmVyKQogewog
ICAgIGlmIChmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKS0+dHlwZSgpICE9IFZpZGVvRnJhbWVC
dWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKLSAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPGNvbnN0
IEk0MjBCdWZmZXJJbnRlcmZhY2U+IGJ1ZmZlciA9IGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigp
LT5HZXRJNDIwKCk7CisgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBtYWtlUGl4ZWxCdWZmZXIo
ZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCktPndpZHRoKCksIGZyYW1lLnZpZGVvX2ZyYW1lX2J1
ZmZlcigpLT5oZWlnaHQoKSk7CisgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gbWFrZVBpeGVs
QnVmZmVyKGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVyLT5oZWlnaHQoKSk7Ci0gICAgICAgIGlmIChw
aXhlbEJ1ZmZlcikKKyAgICAgICAgaWYgKGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLT50eXBl
KCkgPT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjApCiAgICAgICAgICAgICBDb3B5Vmlk
ZW9GcmFtZVRvUGl4ZWxCdWZmZXIoZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCktPkdldEk0MjAo
KSwgcGl4ZWxCdWZmZXIpOworICAgICAgICBlbHNlIGlmIChmcmFtZS52aWRlb19mcmFtZV9idWZm
ZXIoKS0+dHlwZSgpID09IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJMDEwKQorICAgICAgICAg
ICAgQ29weVZpZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigp
LT5HZXRJMDEwKCksIHBpeGVsQnVmZmVyKTsKICAgICAgICAgcmV0dXJuIHBpeGVsQnVmZmVyOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDlEZWNvZGVyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHAK
aW5kZXggZTk0Yjk3NmY4YTE3YWMyYzFlYjViZTdjNzIwNjU1ODU3NTk3YTQ1OC4uMWQ4MDQyZWJk
NjY2ZjE3NmQ5MjliZmI4MDJhMmUzMzgwMjZiMTg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDlEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
V2ViS2l0L1dlYktpdFZQOURlY29kZXIuY3BwCkBAIC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEN1cnJlbnRGcmFtZShWVFZpZGVvRGVjb2RlckZyYW1lIGN1cnJlbnRGcmFtZSkg
eyBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsgfQogICAgIE9TU3RhdHVzIGRlY29kZXJG
YWlsZWQoaW50IGVycm9yKTsKIAorICAgIHZvaWQgY3JlYXRlUGl4ZWxCdWZmZXJQb29sRm9yRm9y
bWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZik7CisKIHByaXZhdGU6CiAgICAg
aW50MzJfdCBEZWNvZGVkKFZpZGVvRnJhbWUmKSBmaW5hbDsKICAgICBpbnQzMl90IERlY29kZWQo
VmlkZW9GcmFtZSYsIGludDY0X3QgZGVjb2RlX3RpbWVfbXMpIGZpbmFsOwpAQCAtMTY5LDYgKzE3
MSw3IEBAIE9TU3RhdHVzIHN0YXJ0VlA5RGVjb2RlclNlc3Npb24oVlRWaWRlb0RlY29kZXJSZWYg
aW5zdGFuY2UsIFZUVmlkZW9EZWNvZGVyU2Vzc2lvCiAKICAgICBkZWNvZGVyLT5tX2luc3RhbmNl
ID0gc3RkOjptYWtlX3VuaXF1ZTxWUDlEZWNvZGVySW1wbD4oKTsKICAgICBkZWNvZGVyLT5tX3Jl
Y2VpdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI+KHNlc3Np
b24pOworICAgIGRlY29kZXItPm1fcmVjZWl2ZXItPmNyZWF0ZVBpeGVsQnVmZmVyUG9vbEZvckZv
cm1hdERlc2NyaXB0aW9uKGZvcm1hdERlc2NyaXB0aW9uKTsKIAogICAgIGRlY29kZXItPm1faW5z
dGFuY2UtPlJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjayhkZWNvZGVyLT5tX3JlY2VpdmVy
LmdldCgpKTsKIApAQCAtMjUzLDYgKzI1Niw5NCBAQCBXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6
On5XZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXIoKQogICAgICAgICBDRlJlbGVhc2UobV9waXhlbEJ1
ZmZlclBvb2wpOwogfQogCit2b2lkIFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6Y3JlYXRlUGl4
ZWxCdWZmZXJQb29sRm9yRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBm
b3JtYXREZXNjcmlwdGlvbikKK3sKKyAgICAvLyBDb3JlQW5pbWF0aW9uIGRvZXNuJ3Qgc3VwcG9y
dCBmdWxsLXBsYW5hciBZVVYsIHNvIHdlIG11c3QgY29udmVydCB0aGUgYnVmZmVycyBvdXRwdXQK
KyAgICAvLyBieSBsaWJ2cHggdG8gYmktcGxhbmFyIFlVVi4gQ3JlYXRlIHBpeGVsIGJ1ZmZlciBh
dHRyaWJ1dGVzIGFuZCBnaXZlIHRob3NlIHRvIHRoZQorICAgIC8vIGRlY29kZXIgc2Vzc2lvbiBm
b3IgdXNlIGluIGNyZWF0aW5nIGl0cyBvd24gaW50ZXJuYWwgQ1ZQaXhlbEJ1ZmZlclBvb2wsIHdo
aWNoIHdlCisgICAgLy8gd2lsbCB1c2UgcG9zdC1kZWNvZGUuCisgICAgYm9vbCBpc0Z1bGxSYW5n
ZSA9IGZhbHNlOworICAgIGJvb2wgaXMxMEJpdCA9IGZhbHNlOworCisgICAgZG8geworICAgICAg
ICBhdXRvIGV4dGVuc2lvbnMgPSBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucyhmb3Jt
YXREZXNjcmlwdGlvbik7CisgICAgICAgIGlmICghZXh0ZW5zaW9ucykKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIENGVHlwZVJlZiBleHRlbnNpb25BdG9tcyA9IENGRGljdGlvbmFyeUdl
dFZhbHVlKGV4dGVuc2lvbnMsIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURl
c2NyaXB0aW9uRXh0ZW5zaW9uQXRvbXMpOworICAgICAgICBpZiAoIWV4dGVuc2lvbkF0b21zIHx8
IENGR2V0VHlwZUlEKGV4dGVuc2lvbkF0b21zKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIENGVHlwZVJlZiBjb25maWd1cmF0aW9uUmVj
b3JkID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoKENGRGljdGlvbmFyeVJlZilleHRlbnNpb25BdG9t
cywgQ0ZTVFIoInZwY0MiKSk7CisgICAgICAgIGlmICghY29uZmlndXJhdGlvblJlY29yZCB8fCBD
RkdldFR5cGVJRChjb25maWd1cmF0aW9uUmVjb3JkKSAhPSBDRkRhdGFHZXRUeXBlSUQoKSkKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZFNpemUg
PSBDRkRhdGFHZXRMZW5ndGgoKENGRGF0YVJlZiljb25maWd1cmF0aW9uUmVjb3JkKTsKKyAgICAg
ICAgaWYgKGNvbmZpZ3VyYXRpb25SZWNvcmRTaXplIDwgMTIpCisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmREYXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0
cigoQ0ZEYXRhUmVmKWNvbmZpZ3VyYXRpb25SZWNvcmQpOworICAgICAgICBhdXRvIGJpdERlcHRo
Q2hyb21hQW5kUmFuZ2UgPSAqKGNvbmZpZ3VyYXRpb25SZWNvcmREYXRhICsgNik7CisKKyAgICAg
ICAgaWYgKChiaXREZXB0aENocm9tYUFuZFJhbmdlID4+IDQpID09IDEwKQorICAgICAgICAgICAg
aXMxMEJpdCA9IHRydWU7CisKKyAgICAgICAgaWYgKGJpdERlcHRoQ2hyb21hQW5kUmFuZ2UgJiAw
eDEpCisgICAgICAgICAgICBpc0Z1bGxSYW5nZSA9IHRydWU7CisgICAgfSB3aGlsZSAoZmFsc2Up
OworCisgICAgT1NUeXBlIHBpeGVsRm9ybWF0OworICAgIGlmIChpczEwQml0KQorICAgICAgICBw
aXhlbEZvcm1hdCA9IGlzRnVsbFJhbmdlID8ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEw
QmlQbGFuYXJGdWxsUmFuZ2UgOiBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5h
clZpZGVvUmFuZ2U7CisgICAgZWxzZQorICAgICAgICBwaXhlbEZvcm1hdCA9IGlzRnVsbFJhbmdl
ID8ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZSA6IGtDVlBp
eGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJWaWRlb1JhbmdlOworCisgICAgYXV0byBj
cmVhdGVQaXhlbEZvcm1hdEF0dHJpYnV0ZXMgPSBbXSAoT1NUeXBlIHBpeGVsRm9ybWF0LCBpbnQz
Ml90IGJvcmRlclBpeGVscykgeworICAgICAgICBhdXRvIGNyZWF0ZU51bWJlciA9IFtdIChpbnQz
Ml90IGZvcm1hdCkgLT4gQ0ZOdW1iZXJSZWYgeworICAgICAgICAgICAgcmV0dXJuIENGTnVtYmVy
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJbnQzMlR5cGUsICZmb3JtYXQp
OworICAgICAgICB9OworICAgICAgICBDRk11dGFibGVBcnJheVJlZiBjZlBpeGVsRm9ybWF0cyA9
IENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDIsICZrQ0ZUeXBlQXJy
YXlDYWxsQmFja3MpOworICAgICAgICBhdXRvIGZvcm1hdE51bWJlciA9IGNyZWF0ZU51bWJlcihw
aXhlbEZvcm1hdCk7CisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjZlBpeGVsRm9ybWF0cywg
Zm9ybWF0TnVtYmVyKTsKKyAgICAgICAgQ0ZSZWxlYXNlKGZvcm1hdE51bWJlcik7CisKKyAgICAg
ICAgQ0ZOdW1iZXJSZWYgYm9yZGVyUGl4ZWxzVmFsdWUgPSBjcmVhdGVOdW1iZXIoMzIpOworCisg
ICAgICAgIGNvbnN0IHZvaWQqIGtleXNbXSA9IHsKKyAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVy
UGl4ZWxGb3JtYXRUeXBlS2V5LAorICAgICAgICAgICAga0NWUGl4ZWxCdWZmZXJFeHRlbmRlZFBp
eGVsc0xlZnRLZXksCisgICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzUmln
aHRLZXksCisgICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzVG9wS2V5LAor
ICAgICAgICAgICAga0NWUGl4ZWxCdWZmZXJFeHRlbmRlZFBpeGVsc0JvdHRvbUtleSwKKyAgICAg
ICAgfTsKKyAgICAgICAgY29uc3Qgdm9pZCogdmFsdWVzW10gPSB7CisgICAgICAgICAgICBjZlBp
eGVsRm9ybWF0cywKKyAgICAgICAgICAgIGJvcmRlclBpeGVsc1ZhbHVlLAorICAgICAgICAgICAg
Ym9yZGVyUGl4ZWxzVmFsdWUsCisgICAgICAgICAgICBib3JkZXJQaXhlbHNWYWx1ZSwKKyAgICAg
ICAgICAgIGJvcmRlclBpeGVsc1ZhbHVlLAorICAgICAgICB9OworICAgICAgICBDRkRpY3Rpb25h
cnlSZWYgYXR0cmlidXRlcyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBrZXlzLCB2YWx1ZXMsIHN0ZDo6c2l6ZShrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgICAgIENGUmVs
ZWFzZShib3JkZXJQaXhlbHNWYWx1ZSk7CisgICAgICAgIENGUmVsZWFzZShjZlBpeGVsRm9ybWF0
cyk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgIH07CisKKyAgICBhdXRvIHBpeGVs
QnVmZmVyQXR0cmlidXRlcyA9IGNyZWF0ZVBpeGVsRm9ybWF0QXR0cmlidXRlcyhwaXhlbEZvcm1h
dCwgMzIpOworICAgIFZURGVjb2RlclNlc3Npb25TZXRQaXhlbEJ1ZmZlckF0dHJpYnV0ZXMobV9z
ZXNzaW9uLCBwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOworICAgIENGUmVsZWFzZShwaXhlbEJ1ZmZl
ckF0dHJpYnV0ZXMpOworCisgICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKSB7CisgICAgICAgIENG
UmVsZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJQb29sID0g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBtX3BpeGVsQnVmZmVyUG9vbCA9IFZURGVjb2RlclNlc3Np
b25HZXRQaXhlbEJ1ZmZlclBvb2wobV9zZXNzaW9uKTsKKyAgICBDRlJlbGVhc2UocGl4ZWxCdWZm
ZXJBdHRyaWJ1dGVzKTsKKyAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpCisgICAgICAgIENGUmV0
YWluKG1fcGl4ZWxCdWZmZXJQb29sKTsKK30KKwogT1NTdGF0dXMgV2ViS2l0VlA5RGVjb2RlclJl
Y2VpdmVyOjpkZWNvZGVyRmFpbGVkKGludCBlcnJvcikKIHsKICAgICBPU1N0YXR1cyB2dEVycm9y
ID0ga1ZUVmlkZW9EZWNvZGVyQmFkRGF0YUVycjsKQEAgLTI3MSwzMyArMzYyLDE3IEBAIE9TU3Rh
dHVzIFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZChpbnQgZXJyb3IpCiAK
IGludDMyX3QgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZy
YW1lKQogewotICAgIENWUGl4ZWxCdWZmZXJSZWYgbmV3UGl4ZWxCdWZmZXIgeyBudWxscHRyIH07
Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lLCBbdGhp
cywgJm5ld1BpeGVsQnVmZmVyXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpIC0+IENWUGl4
ZWxCdWZmZXJSZWYgewotICAgICAgICBpZiAoIW1fcGl4ZWxCdWZmZXJQb29sIHx8IG1fcGl4ZWxC
dWZmZXJXaWR0aCAhPSB3aWR0aCB8fCBtX3BpeGVsQnVmZmVySGVpZ2h0ICE9IGhlaWdodCkgewot
ICAgICAgICAgICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKQotICAgICAgICAgICAgICAgIENGUmVs
ZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7Ci0gICAgICAgICAgICBtX3BpeGVsQnVmZmVyUG9vbCA9
IGNyZWF0ZVBpeGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgICAgIGlmICgh
bV9waXhlbEJ1ZmZlclBvb2wpIHsKLSAgICAgICAgICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8
PCAiVlA5IGRlY29kZXI6IHVuYWJsZSB0byBjcmVhdGUgcGl4ZWwgYnVmZmVyIHBvb2wiOwotICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
bV9waXhlbEJ1ZmZlcldpZHRoID0gd2lkdGg7Ci0gICAgICAgICAgICBtX3BpeGVsQnVmZmVySGVp
Z2h0ID0gaGVpZ2h0OwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVs
QnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4ZWxC
dWZmZXJQb29sLCAmbmV3UGl4ZWxCdWZmZXIpOwotICAgICAgICBpZiAoc3RhdHVzICE9IGtDVlJl
dHVyblN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDkgZGVj
b2RlcjogdW5hYmxlIHRvIGNyZWF0ZSBwaXhlbCBidWZmZXIgZnJvbSBwb29sIjsKLSAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG5ld1BpeGVs
QnVmZmVyOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFt
ZSwgW3RoaXNdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkgLT4gQ1ZQaXhlbEJ1ZmZlclJl
ZiB7CisgICAgICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBudWxscHRyOworICAg
ICAgICBpZiAoQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGVQaXhlbEJ1ZmZlcihrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBtX3BpeGVsQnVmZmVyUG9vbCwgJnBpeGVsQnVmZmVyKSA9PSBrQ1ZSZXR1cm5TdWNj
ZXNzKQorICAgICAgICAgICAgcmV0dXJuIHBpeGVsQnVmZmVyOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9KTsKIAogICAgIFZURGVjb2RlclNlc3Npb25FbWl0RGVjb2RlZEZyYW1lKG1f
c2Vzc2lvbiwgbV9jdXJyZW50RnJhbWUsIHBpeGVsQnVmZmVyID8gbm9FcnIgOiAtMSwgMCwgcGl4
ZWxCdWZmZXIpOwogICAgIG1fY3VycmVudEZyYW1lID0gbnVsbHB0cjsKLSAgICBpZiAobmV3UGl4
ZWxCdWZmZXIpCi0gICAgICAgIENGUmVsZWFzZShuZXdQaXhlbEJ1ZmZlcik7CisgICAgaWYgKHBp
eGVsQnVmZmVyKQorICAgICAgICBDRlJlbGVhc2UocGl4ZWxCdWZmZXIpOwogICAgIHJldHVybiAw
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDQwYzdlODQ4Mjcz
YzVjMmEyMjA0YWY3NGE1MjdkOGVhMTUwNGQ1NGQuLmQwNjkwZTc4ZjdmMDI2ZDNmZjNlMWU5MjUx
NzdmZTVlMzMwODk0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC01
MzMsNiArNTMzLDI3IEBAIHN0YXRpYyB1aW50OF90IGNvbnZlcnRUb0NvbG9yUHJpbWFyaWVzKGNv
bnN0IFByaW1hcmllcyYgY29lZmZpY2llbnRzKQogICAgIH0KIH0KIAorc3RhdGljIENGU3RyaW5n
UmVmIGNvbnZlcnRUb0NNQ29sb3JQcmltYXJpZXModWludDhfdCBwcmltYXJpZXMpCit7CisgICAg
c3dpdGNoIChwcmltYXJpZXMpIHsKKyAgICBjYXNlIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFy
aWVzOjpCVF83MDlfNjoKKyAgICAgICAgcmV0dXJuIGtDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQ
cmltYXJpZXNfSVRVX1JfNzA5XzI7CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1h
cmllczo6RUJVX1RlY2hfMzIxM19FOgorICAgICAgICByZXR1cm4ga0NNRm9ybWF0RGVzY3JpcHRp
b25Db2xvclByaW1hcmllc19FQlVfMzIxMzsKKyAgICBjYXNlIFZQQ29uZmlndXJhdGlvbkNvbG9y
UHJpbWFyaWVzOjpCVF82MDFfNzoKKyAgICBjYXNlIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFy
aWVzOjpTTVBURV9TVF8yNDA6CisgICAgICAgIHJldHVybiBrQ01Gb3JtYXREZXNjcmlwdGlvbkNv
bG9yUHJpbWFyaWVzX1NNUFRFX0M7CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1h
cmllczo6U01QVEVfUlBfNDMxXzI6CisgICAgICAgIHJldHVybiBrQ01Gb3JtYXREZXNjcmlwdGlv
bkNvbG9yUHJpbWFyaWVzX0RDSV9QMzsKKyAgICBjYXNlIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJp
bWFyaWVzOjpTTVBURV9FR180MzJfMToKKyAgICAgICAgcmV0dXJuIGtDTUZvcm1hdERlc2NyaXB0
aW9uQ29sb3JQcmltYXJpZXNfUDNfRDY1OworICAgIGNhc2UgVlBDb25maWd1cmF0aW9uQ29sb3JQ
cmltYXJpZXM6OkJUXzIwMjBfTm9uY29uc3RhbnRfTHVtaW5hbmNlOgorICAgICAgICByZXR1cm4g
a0NNRm9ybWF0RGVzY3JpcHRpb25Db2xvclByaW1hcmllc19JVFVfUl8yMDIwOworICAgIH0KKwor
ICAgIHJldHVybiBudWxscHRyOworfQorCiBzdGF0aWMgdWludDhfdCBjb252ZXJ0VG9UcmFuc2Zl
ckNoYXJhY3RlcmlzdGljcyhjb25zdCBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyYgY2hhcmFjdGVy
aXN0aWNzKQogewogICAgIHN3aXRjaCAoY2hhcmFjdGVyaXN0aWNzKSB7CkBAIC01NzMsNiArNTk0
LDMxIEBAIHN0YXRpYyB1aW50OF90IGNvbnZlcnRUb1RyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKGNv
bnN0IFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzJiBjCiAgICAgfQogfQogCitzdGF0aWMgQ0ZTdHJp
bmdSZWYgY29udmVydFRvQ01UcmFuc2ZlckZ1bmN0aW9uKHVpbnQ4X3QgY2hhcmFjdGVyaXN0aWNz
KQoreworICAgIHN3aXRjaCAoY2hhcmFjdGVyaXN0aWNzKSB7CisgICAgY2FzZSBWUENvbmZpZ3Vy
YXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfNzA5XzY6CisgICAgICAgIHJldHVybiBr
Q01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fSVRVX1JfNzA5XzI7CisgICAgY2Fz
ZSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6U01QVEVfU1RfMjQwOgor
ICAgICAgICByZXR1cm4ga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NNUFRF
XzI0ME1fMTk5NTsKKyAgICBjYXNlIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0
aWNzOjpTTVBURV9TVF8yMDg0OgorICAgICAgICByZXR1cm4ga0NNRm9ybWF0RGVzY3JpcHRpb25U
cmFuc2ZlckZ1bmN0aW9uX1NNUFRFX1NUXzIwODRfUFE7CisgICAgY2FzZSBWUENvbmZpZ3VyYXRp
b25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfMjAyMF8xMGJpdDoKKyAgICBjYXNlIFZQQ29u
ZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF8yMDIwXzEyYml0OgorICAgICAg
ICByZXR1cm4ga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzIwMjA7
CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6U01QVEVf
U1RfNDI4XzE6CisgICAgICAgIHJldHVybiBrQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVu
Y3Rpb25fU01QVEVfU1RfNDI4XzE7CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNo
YXJhY3RlcmlzdGljczo6QlRfMjEwMF9ITEc6CisgICAgICAgIHJldHVybiBrQ01Gb3JtYXREZXNj
cmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fSVRVX1JfMjEwMF9ITEc7CisgICAgY2FzZSBWUENvbmZp
Z3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6SUVDXzYxOTY2XzJfMToKKyAgICAgICAg
cmV0dXJuIGtDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9zUkdCOworICAgIGNh
c2UgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkxpbmVhcjoKKyAgICAg
ICAgcmV0dXJuIGtDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9MaW5lYXI7Cisg
ICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHN0YXRpYyB1aW50OF90IGNvbnZlcnRU
b01hdHJpeENvZWZmaWNpZW50cyhjb25zdCBNYXRyaXhDb2VmZmljaWVudHMmIGNvZWZmaWNpZW50
cykKIHsKICAgICBzd2l0Y2ggKGNvZWZmaWNpZW50cykgewpAQCAtNTk5LDYgKzY0NSwyMyBAQCBz
dGF0aWMgdWludDhfdCBjb252ZXJ0VG9NYXRyaXhDb2VmZmljaWVudHMoY29uc3QgTWF0cml4Q29l
ZmZpY2llbnRzJiBjb2VmZmljaWVudAogICAgIH0KIH0KIAorc3RhdGljIENGU3RyaW5nUmVmIGNv
bnZlcnRUb0NNWUNiQ1JNYXRyaXgodWludDhfdCBjb2VmZmljaWVudHMpCit7CisgICAgc3dpdGNo
IChjb2VmZmljaWVudHMpIHsKKyAgICBjYXNlIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNp
ZW50czo6QlRfMjAyMF9Ob25jb25zdGFudF9MdW1pbmFuY2U6CisgICAgICAgIHJldHVybiBrQ01G
b3JtYXREZXNjcmlwdGlvbllDYkNyTWF0cml4X0lUVV9SXzIwMjA7CisgICAgY2FzZSBWUENvbmZp
Z3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkJUXzQ3MF83X0JHOgorICAgIGNhc2UgVlBDb25m
aWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpCVF82MDFfNzoKKyAgICAgICAgcmV0dXJuIGtD
TUZvcm1hdERlc2NyaXB0aW9uWUNiQ3JNYXRyaXhfSVRVX1JfNjAxXzQ7CisgICAgY2FzZSBWUENv
bmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkJUXzcwOV82OgorICAgICAgICByZXR1cm4g
a0NNRm9ybWF0RGVzY3JpcHRpb25ZQ2JDck1hdHJpeF9JVFVfUl83MDlfMjsKKyAgICBjYXNlIFZQ
Q29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6U01QVEVfU1RfMjQwOgorICAgICAgICBy
ZXR1cm4ga0NNRm9ybWF0RGVzY3JpcHRpb25ZQ2JDck1hdHJpeF9TTVBURV8yNDBNXzE5OTU7Cisg
ICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHN0YXRpYyB1aW50OF90IGNvbnZlcnRT
dWJzYW1wbGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyh1aW50NjRfdCB4LCB1aW50NjRfdCB5KQog
ewogICAgIGlmICh4ICYgeSkKQEAgLTY5MSwxMiArNzU0LDMzIEBAIHN0YXRpYyBSZXRhaW5QdHI8
Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA5SGVh
ZGVyUGFyCiAgICAgQ0ZUeXBlUmVmIGNvbmZpZ3VyYXRpb25WYWx1ZXNbXSA9IHsgZGF0YS5nZXQo
KSB9OwogICAgIGF1dG8gY29uZmlndXJhdGlvbkRpY3QgPSBhZG9wdENGKENGRGljdGlvbmFyeUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjb25maWd1cmF0aW9uS2V5cywgY29uZmlndXJhdGlv
blZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChjb25maWd1cmF0aW9uS2V5cyksICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
IAotICAgIFZlY3RvcjxDRlR5cGVSZWY+IGF0b21zS2V5cyB7IGtDTUZvcm1hdERlc2NyaXB0aW9u
RXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRvbXMgfTsKLSAgICBWZWN0b3I8
Q0ZUeXBlUmVmPiBhdG9tc1ZhbHVlcyA9IHsgY29uZmlndXJhdGlvbkRpY3QuZ2V0KCkgfTsKLSAg
ICBhdXRvIGF0b21zID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgYXRvbXNLZXlzLmRhdGEoKSwgYXRvbXNWYWx1ZXMuZGF0YSgpLCBhdG9tc0tleXMuc2l6
ZSgpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CisgICAgVmVjdG9yPENGVHlwZVJlZj4gZXh0ZW5zaW9uc0tleXMgeyBr
Q01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNjcmlwdGlvbkV4dGVuc2lvbkF0
b21zIH07CisgICAgVmVjdG9yPENGVHlwZVJlZj4gZXh0ZW5zaW9uc1ZhbHVlcyA9IHsgY29uZmln
dXJhdGlvbkRpY3QuZ2V0KCkgfTsKKworICAgIGlmIChyZWNvcmQudmlkZW9GdWxsUmFuZ2VGbGFn
ID09IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxsUmFuZ2UpIHsKKyAgICAgICAgZXh0ZW5zaW9u
c0tleXMuYXBwZW5kKGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX0Z1bGxSYW5nZVZpZGVv
KTsKKyAgICAgICAgZXh0ZW5zaW9uc1ZhbHVlcy5hcHBlbmQoa0NGQm9vbGVhblRydWUpOworICAg
IH0KKworICAgIGlmIChhdXRvIGNtQ29sb3JQcmltYXJpZXMgPSBjb252ZXJ0VG9DTUNvbG9yUHJp
bWFyaWVzKHJlY29yZC5jb2xvclByaW1hcmllcykpIHsKKyAgICAgICAgZXh0ZW5zaW9uc0tleXMu
YXBwZW5kKGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX0NvbG9yUHJpbWFyaWVzKTsKKyAg
ICAgICAgZXh0ZW5zaW9uc1ZhbHVlcy5hcHBlbmQoY21Db2xvclByaW1hcmllcyk7CisgICAgfQor
CisgICAgaWYgKGF1dG8gY21UcmFuc2ZlckZ1bmN0aW9uID0gY29udmVydFRvQ01UcmFuc2ZlckZ1
bmN0aW9uKHJlY29yZC50cmFuc2ZlckNoYXJhY3RlcmlzdGljcykpIHsKKyAgICAgICAgZXh0ZW5z
aW9uc0tleXMuYXBwZW5kKGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1RyYW5zZmVyRnVu
Y3Rpb24pOworICAgICAgICBleHRlbnNpb25zVmFsdWVzLmFwcGVuZChjbVRyYW5zZmVyRnVuY3Rp
b24pOworICAgIH0KKworICAgIGlmIChhdXRvIGNtTWF0cml4ID0gY29udmVydFRvQ01ZQ2JDUk1h
dHJpeChyZWNvcmQubWF0cml4Q29lZmZpY2llbnRzKSkgeworICAgICAgICBleHRlbnNpb25zS2V5
cy5hcHBlbmQoa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fWUNiQ3JNYXRyaXgpOworICAg
ICAgICBleHRlbnNpb25zVmFsdWVzLmFwcGVuZChjbU1hdHJpeCk7CisgICAgfQorCisgICAgYXV0
byBleHRlbnNpb25zID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgZXh0ZW5zaW9uc0tleXMuZGF0YSgpLCBleHRlbnNpb25zVmFsdWVzLmRhdGEoKSwgZXh0
ZW5zaW9uc0tleXMuc2l6ZSgpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZU
eXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKICAgICBDTVZpZGVvRm9ybWF0RGVzY3Jp
cHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24gPSBudWxscHRyOwotICAgIGlmIChub0VyciAhPSBD
TVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NNVmlk
ZW9Db2RlY1R5cGVfVlA5LCBwYXJzZXIud2lkdGgoKSwgcGFyc2VyLmhlaWdodCgpLCBhdG9tcy5n
ZXQoKSwgJmZvcm1hdERlc2NyaXB0aW9uKSkKKyAgICBpZiAobm9FcnIgIT0gQ01WaWRlb0Zvcm1h
dERlc2NyaXB0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDTVZpZGVvQ29kZWNUeXBl
X1ZQOSwgcGFyc2VyLndpZHRoKCksIHBhcnNlci5oZWlnaHQoKSwgZXh0ZW5zaW9ucy5nZXQoKSwg
JmZvcm1hdERlc2NyaXB0aW9uKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJu
IGFkb3B0Q0YoZm9ybWF0RGVzY3JpcHRpb24pOwogfQpAQCAtNzIxLDEyICs4MDUsNiBAQCB3ZWJt
OjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZShjb25zdCBGcmFtZU1ldGFk
YXRhJiBtZXRhZGF0YSwgUmVhZAogICAgIGlmICghYmxvY2spCiAgICAgICAgIHJldHVybiBTdGF0
dXMoU3RhdHVzOjprSW52YWxpZEVsZW1lbnRJZCk7CiAKLSAgICBhdXRvIGlzU3luYyA9IFdURjo6
c3dpdGNoT24oKm1fY3VycmVudEJsb2NrLCBbXShCbG9jayYpIHsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0sIFtdKFNpbXBsZUJsb2NrJiBibG9jaykgewotICAgICAgICByZXR1cm4gYmxv
Y2suaXNfa2V5X2ZyYW1lOwotICAgIH0pOwotCiAgICAgYXV0byB0cmFja051bWJlciA9IGJsb2Nr
LT50cmFja19udW1iZXI7CiAKICAgICBhdXRvKiB0cmFja0RhdGEgPSB0cmFja0RhdGFGb3JUcmFj
a051bWJlcih0cmFja051bWJlcik7CkBAIC03OTgsNyArODc2LDcgQEAgd2VibTo6U3RhdHVzIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRnJhbWUoY29uc3QgRnJhbWVNZXRhZGF0YSYgbWV0YWRh
dGEsIFJlYWQKICAgICAgICAgdHJhY2tEYXRhLT5jdXJyZW50QmxvY2tCdWZmZXIgPSBudWxscHRy
OwogICAgICAgICB0cmFja0RhdGEtPmN1cnJlbnRCbG9ja0J1ZmZlclBvc2l0aW9uID0gMDsKIAot
ICAgICAgICBpZiAoIWlzU3luYykgeworICAgICAgICBpZiAoIWhlYWRlclBhcnNlci5rZXkoKSkg
ewogICAgICAgICAgICAgYXV0byBhdHRhY2htZW50c0FycmF5ID0gQ01TYW1wbGVCdWZmZXJHZXRT
YW1wbGVBdHRhY2htZW50c0FycmF5KHNhbXBsZUJ1ZmZlci5nZXQoKSwgdHJ1ZSk7CiAgICAgICAg
ICAgICBBU1NFUlQoYXR0YWNobWVudHNBcnJheSk7CiAgICAgICAgICAgICBpZiAoIWF0dGFjaG1l
bnRzQXJyYXkpCg==
</data>
<flag name="review"
          id="420885"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405481</attachid>
            <date>2020-07-29 12:19:46 -0700</date>
            <delta_ts>2020-07-29 12:51:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214928-20200729121945.patch</filename>
            <type>text/plain</type>
            <size>37800</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBiMDU1NWMzNzdkZDY0ZmJmMGM3ODU0N2RkNDdmNDQxNTYyZDY5YTIxLi40MGUz
NDcyMDZiYjQxNDliYWJkNzM0ZDgwYTdhNmI1MDkzMzA4YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMC0wNy0yOSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IEhEUiBkZWNvZGUgaW4g
U1cgVlA5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTQ5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
dXBwb3J0IGNvbnZlcnRpbmcgSTAxMCBidWZmZXJzIChmdWxsLXBsYW5hciwgMTAtYml0IGRhdGEg
cGFja2VkIGludG8gdGhlIExTQiBvZiBhIDE2LWJpdCBpbnQpCisgICAgICAgIGludG8gQ1ZQaXhl
bEJ1ZmZlcnMgKGJpLXBsYW5hciwgMTAtYml0IGRhdGEgcGFja2VkIGludG8gdGhlIE1TQiBvZiBh
IDE2LWJpdCBpbnQpLiBUaGlzIHJlcXVpcmVzCisgICAgICAgIHVzaW5nIGZ1bmN0aW9ucyBmcm9t
IGxpYnl1diB0byBtZXJnZSBhbmQgc2NhbGUgMTYtYml0IHBsYW5hciBkYXRhLCBvcHRpbWl6ZWQg
Zm9yIEFWWDIuIFRvIGtub3cKKyAgICAgICAgdGhhdCBpbmNvbWluZyBidWZmZXJzIGFyZSAxMC1i
aXQsIGFuZCB3aGV0aGVyIHRoZXkncmUgZnVsbC1yYW5nZSwgcGFyc2UgdGhlICd2cGNDJyBhdG9t
IGF0dGFjaGVkCisgICAgICAgIHRvIHRoZSBDTUZvcm1hdERlc2NyaXB0aW9uLgorCisgICAgICAg
ICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbToKKyAgICAgICAg
KHdlYnJ0Yzo6TWVyZ2VVVlBsYW5lXzE2KToKKyAgICAgICAgKHdlYnJ0Yzo6Q29weVBsYW5lXzE2
KToKKyAgICAgICAgKHdlYnJ0Yzo6Q29weVZpZGVvRnJhbWVUb1BpeGVsQnVmZmVyKToKKyAgICAg
ICAgKHdlYnJ0Yzo6cGl4ZWxCdWZmZXJGcm9tRnJhbWUpOgorICAgICAgICAqIFNvdXJjZS93ZWJy
dGMvc2RrL1dlYktpdC9XZWJLaXRWUDlEZWNvZGVyLmNwcDoKKyAgICAgICAgKHdlYnJ0Yzo6Y3Jl
YXRlV2ViS2l0VlA5RGVjb2Rlcik6CisgICAgICAgICh3ZWJydGM6OnN0YXJ0VlA5RGVjb2RlclNl
c3Npb24pOgorICAgICAgICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OmNyZWF0
ZVBpeGVsQnVmZmVyUG9vbEZvckZvcm1hdERlc2NyaXB0aW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6
V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKToKKwogMjAyMC0wNy0yMiAgQ29ucmFk
IFNodWx0eiAgPGNvbnJhZF9zaHVsdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBtYWNP
UyBWZXJzaW9uIG1hY3JvcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDUyYjhhNzFjNTAzNzQ1OTQwZDE1MzEyMzIy
ZWJkYjY1Yjc1Y2M1YjguLjVhM2Y3YWE4YmU3YzczYTVkMDZhOTBiZjkwNDRjYzMwMGViYmNhOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0wNy0yOSAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IEhEUiBkZWNvZGUgaW4gU1cgVlA5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ5MjgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0
IHRoZSBpbmNvbWluZyBwcm9wZXJ0aWVzIHBhcnNlZCBmcm9tIHRoZSBWUDkgaGVhZGVyIGludG8g
ZXh0ZW5zaW9ucyB0byBvdXIKKyAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvbiBhdHRhY2hlZCB0
byBlYWNoIGluY29taW5nIHZpZGVvIGZyYW0uCisKKyAgICAgICAgRHJpdmUtYnkgZml4OiBGaWxl
cyBpbiB0aGUgd2lsZCB3aWxsIGhhdmUgaW5jb3JyZWN0IHZhbHVlcyBmb3Igd2hldGhlciBhIGdp
dmVuCisgICAgICAgIGZyYW1lIGlzIGEga2V5ZnJhbWUgb3Igbm90LiBUcnVzdCB0aGUgVlA5IGhl
YWRlciBwYXJzZXIgcmF0aGVyIHRoYW4gdGhlIGNvbnRhaW5lcgorICAgICAgICBpbiB0aGlzIHNp
dHVhdGlvbnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0NNQ29sb3JQcmlt
YXJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ01UcmFuc2ZlckZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0NNWUNiQ1JNYXRyaXgpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA5SGVhZGVyUGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRnJhbWUpOgorCiAyMDIwLTA3
LTI2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0g
TWFrZSBEZWNvZGVyVGVzdCBydW4gYWdhaW5zdCAubXA0IGZpbGVzOyBhZGQgcmF0ZS1saW1pdGlu
Zy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGYyZDE5ODFhODFjMzNiMTlhZDQzOWE2NTEzZjAzNDll
NzNjMjdhMTQuLmJjYjgzZmE2NzBmNzk5ZWZlNWE0MTY0YmNjOTZiZjc0YTIxMzMzYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA3LTI5ICBKZXIgTm9ibGUgIDxq
ZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgSERSIGRlY29kZSBpbiBTVyBW
UDkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDky
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjYyODQ4NDg+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsu
Y3BwOgorICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oOgorCiAyMDIwLTA3LTIy
ICBDb25yYWQgU2h1bHR6ICA8Y29ucmFkX3NodWx0ekBhcHBsZS5jb20+CiAKICAgICAgICAgVXBk
YXRlIG1hY09TIFZlcnNpb24gbWFjcm9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0
VXRpbGl0aWVzLm1tCmluZGV4IDlmZjAzYjdkOTg0Mjk3OTdkNjAxZmFmMGQxNGE4NDY1ZTU4NTQ3
OGYuLjU0MzRlMzc1ODE5MTgxMmQ5ZjFhMzY0ZDJjMzhiYjdlNTViZmNjODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2Vi
S2l0VXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCkBAIC0yNyw2ICsyNyw4IEBACiAK
ICNpbmNsdWRlICJuYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmgiCiAjaW5jbHVkZSAidGhp
cmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZlcnRfZnJvbS5oIgorI2luY2x1ZGUg
ImxpYnl1di9jcHVfaWQuaCIKKyNpbmNsdWRlICJsaWJ5dXYvcm93LmgiCiAjaW5jbHVkZSAiRnJh
bWV3b3JrL0hlYWRlcnMvV2ViUlRDL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CkBAIC03NywxNCArNzksMTM1IEBAIHN0YXRpYyBib29sIENvcHlWaWRlb0ZyYW1l
VG9QaXhlbEJ1ZmZlcihjb25zdCB3ZWJydGM6Okk0MjBCdWZmZXJJbnRlcmZhY2UqIGZyYW1lCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIE1lcmdlVVZQbGFuZV8xNiBtZXJnZXMgdHdvIHNlcGFy
YXRlIFUgYW5kIFYgcGxhbmVzIGludG8gYSBzaW5nbGUsIGludGVybGVhdmVkCisvLyBwbGFuZSwg
d2hpbGUgc2ltdWx0YW5lb3VzbHkgc2NhbGluZyB0aGUgb3V0cHV0LiBVc2UgJzY0JyBpbiB0aGUg
c2NhbGUgZmllbGQgdG8KKy8vIHNoaWZ0IDEwLWJpdCBkYXRhIGZyb20gdGhlIExTQiBvZiB0aGUg
MTYtYml0IGludCB0byB0aGUgTVNCLgorLy8gTk9URTogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24g
bGlieXV2OjpNZXJnZVVWUGxhbmUuIElmIGxpYnl1diBldmVyIHN1cHBvcnRzCisvLyB0aGlzIG9w
ZXJhdGlvbiBkaXJlY3RseSwgd2Ugc2hvdWxkIHJlcGxhY2UgdGhlIGJlbG93IHdpdGggaXQuCisv
LyBOT1RFOiBsaWJ5dXYgb25seSBoYXMgYW4gb3BtaXRpemF0aW9uIG9mIE1lcmdlVVZSb3dfMTYg
Zm9yIEFWWDIgaW50cmluc2ljcy4KKy8vIENhbGxpbmcgdGhpcyBtZXRob2Qgb24gYSBDUFUgd2l0
aG91dCBBVlgyIHdpbGwgZmFsbCBiYWNrIHRvIGEgc3RhbmRhcmQgQworLy8gaW1wbGVtZW50YXRp
b24sIGFuZCB3aWxsIHByb2JhYmx5IGJlIHN1cGVyIHNsb3cuIEFkZCBuZXcgTWVyZ2VVVlJvd18x
NgorLy8gaW1wbGVtZW50YXRpb25zIGFzIHRoZXkgYmVjb21lIGF2YWlsYWJsZSBpbiBsaWJ5dXYu
Cit2b2lkIE1lcmdlVVZQbGFuZV8xNihjb25zdCB1aW50MTZfdCogc3JjX3UsIGludCBzcmNfc3Ry
aWRlX3UsIGNvbnN0IHVpbnQxNl90KiBzcmNfdiwgaW50IHNyY19zdHJpZGVfdiwgdWludDE2X3Qq
IGRzdF91diwgaW50IGRzdF9zdHJpZGVfdXYsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHNj
YWxlKSB7CisgICAgdm9pZCAoKk1lcmdlVVZSb3dfMTYpKGNvbnN0IHVpbnQxNl90KiBzcmNfdSwg
Y29uc3QgdWludDE2X3QqIHNyY192LCB1aW50MTZfdCogZHN0X3V2LCBpbnQgc2NhbGUsIGludCB3
aWR0aCkgPSBsaWJ5dXY6Ok1lcmdlVVZSb3dfMTZfQzsKKyAgICAvLyBOZWdhdGl2ZSBoZWlnaHQg
bWVhbnMgaW52ZXJ0IHRoZSBpbWFnZS4KKyAgICBpZiAoaGVpZ2h0IDwgMCkgeworICAgICAgICBo
ZWlnaHQgPSAtaGVpZ2h0OworICAgICAgICBkc3RfdXYgPSBkc3RfdXYgKyAoaGVpZ2h0IC0gMSkg
KiBkc3Rfc3RyaWRlX3V2OworICAgICAgICBkc3Rfc3RyaWRlX3V2ID0gLWRzdF9zdHJpZGVfdXY7
CisgICAgfQorICAgIC8vIENvYWxlc2NlIHJvd3MuCisgICAgaWYgKHNyY19zdHJpZGVfdSA9PSB3
aWR0aCAmJiBzcmNfc3RyaWRlX3YgPT0gd2lkdGggJiYgZHN0X3N0cmlkZV91diA9PSB3aWR0aCAq
IDIpIHsKKyAgICAgICAgd2lkdGggKj0gaGVpZ2h0OworICAgICAgICBoZWlnaHQgPSAxOworICAg
ICAgICBzcmNfc3RyaWRlX3UgPSBzcmNfc3RyaWRlX3YgPSBkc3Rfc3RyaWRlX3V2ID0gMDsKKyAg
ICB9CisjaWYgZGVmaW5lZChIQVNfTUVSR0VVVlJPV18xNl9BVlgyKQorICAgIGlmIChsaWJ5dXY6
OlRlc3RDcHVGbGFnKGxpYnl1djo6a0NwdUhhc0FWWDIpKQorICAgICAgICBNZXJnZVVWUm93XzE2
ID0gbGlieXV2OjpNZXJnZVVWUm93XzE2X0FWWDI7CisjZW5kaWYKKworICAgIGZvciAoaW50IHkg
PSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAgICAgICAgLy8gTWVyZ2UgYSByb3cgb2YgVSBhbmQg
ViBpbnRvIGEgcm93IG9mIFVWLgorICAgICAgICBNZXJnZVVWUm93XzE2KHNyY191LCBzcmNfdiwg
ZHN0X3V2LCBzY2FsZSwgd2lkdGgpOworICAgICAgICBzcmNfdSArPSBzcmNfc3RyaWRlX3UgLyBz
aXplb2YodWludDE2X3QpOworICAgICAgICBzcmNfdiArPSBzcmNfc3RyaWRlX3YgLyBzaXplb2Yo
dWludDE2X3QpOworICAgICAgICBkc3RfdXYgKz0gZHN0X3N0cmlkZV91diAvIHNpemVvZih1aW50
MTZfdCk7CisgICAgfQorfQorCisvLyBDb3B5UGxhbmVfMTYgd2lsbCBjb3B5IGEgcGxhbmUgb2Yg
MTYtYml0IGRhdGEgZnJvbSBvbmUgbG9jYXRpb24gdG8gYW5vdGhlciwKKy8vIHdoaWxlIHNpbXVs
dGFuZW91c2x5IHNjYWxpbmcgdGhlIG91dHB1dC4gVXNlICc2NCcgaW4gdGhlIHNjYWxlIGZpZWxk
IHRvCisvLyBzaGlmdCAxMC1iaXQgZGF0YSBmcm9tIHRoZSBMU0Igb2YgYSAxNi1iaXQgaW50IHRv
IHRoZSBNU0IuCisvLyBOT1RFOiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvbiBNZXJnZVVWUGxhbmVf
MTYgYWJvdmUsIGJ1dCBvcGVyYXRlcyBvbiBhCisvLyBzaW5nbGUgcGxhbmUsIHJhdGVyIHRoYW4g
aW50ZXJsZWF2aW5nIHR3byBwbGFuZXMuIElmIGxpYnl1diBldmVyIHN1cHBvcnRzCisvLyB0aGlz
IG9wZXJhdGlvbiBkaXJlY3RseSwgd2Ugc2hvdWxkIHJlcGxhY2UgdGhlIGJlbG93IHdpdGggaXQu
CisvLyBOT1RFOiBsaWJ5dXYgb25seSBoYXMgYW4gb3BtaXRpemF0aW9uIG9mIE1lcmdlVVZSb3df
MTYgZm9yIEFWWDIgaW50cmluc2ljcy4KKy8vIENhbGxpbmcgdGhpcyBtZXRob2Qgb24gYSBDUFUg
d2l0aG91dCBBVlgyIHdpbGwgZmFsbCBiYWNrIHRvIGEgc3RhbmRhcmQgQworLy8gaW1wbGVtZW50
YXRpb24sIGFuZCB3aWxsIHByb2JhYmx5IGJlIHN1cGVyIHNsb3cuIEFkZCBuZXcgTWVyZ2VVVlJv
d18xNgorLy8gaW1wbGVtZW50YXRpb25zIGFzIHRoZXkgYmVjb21lIGF2YWlsYWJsZSBpbiBsaWJ5
dXYuCit2b2lkIENvcHlQbGFuZV8xNihjb25zdCB1aW50MTZfdCogc3JjLCBpbnQgc3JjX3N0cmlk
ZSwgdWludDE2X3QqIGRzdCwgaW50IGRzdF9zdHJpZGUsIGludCB3aWR0aCwgaW50IGhlaWdodCwg
aW50IHNjYWxlKQoreworICAgIHZvaWQgKCpNdWx0aXBseVJvd18xNikoY29uc3QgdWludDE2X3Qq
IHNyY195LCB1aW50MTZfdCogZHN0X3ksIGludCBzY2FsZSwgaW50IHdpZHRoKSA9IGxpYnl1djo6
TXVsdGlwbHlSb3dfMTZfQzsKKyAgICAvLyBOZWdhdGl2ZSBoZWlnaHQgbWVhbnMgaW52ZXJ0IHRo
ZSBpbWFnZS4KKyAgICBpZiAoaGVpZ2h0IDwgMCkgeworICAgICAgICBoZWlnaHQgPSAtaGVpZ2h0
OworICAgICAgICBkc3QgPSBkc3QgKyAoaGVpZ2h0IC0gMSkgKiBkc3Rfc3RyaWRlOworICAgICAg
ICBkc3Rfc3RyaWRlID0gLWRzdF9zdHJpZGU7CisgICAgfQorICAgIC8vIENvYWxlc2NlIHJvd3Mu
CisgICAgaWYgKHNyY19zdHJpZGUgPT0gd2lkdGggJiYgZHN0X3N0cmlkZSA9PSB3aWR0aCAqIDIp
IHsKKyAgICAgICAgd2lkdGggKj0gaGVpZ2h0OworICAgICAgICBoZWlnaHQgPSAxOworICAgICAg
ICBzcmNfc3RyaWRlID0gZHN0X3N0cmlkZSA9IDA7CisgICAgfQorI2lmIGRlZmluZWQoSEFTX01F
UkdFVVZST1dfMTZfQVZYMikKKyAgICBpZiAobGlieXV2OjpUZXN0Q3B1RmxhZyhsaWJ5dXY6OmtD
cHVIYXNBVlgyKSkKKyAgICAgICAgTXVsdGlwbHlSb3dfMTYgPSBsaWJ5dXY6Ok11bHRpcGx5Um93
XzE2X0FWWDI7CisjZW5kaWYKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kp
IHsKKyAgICAgICAgTXVsdGlwbHlSb3dfMTYoc3JjLCBkc3QsIHNjYWxlLCB3aWR0aCk7CisgICAg
ICAgIHNyYyArPSBzcmNfc3RyaWRlIC8gc2l6ZW9mKHVpbnQxNl90KTsKKyAgICAgICAgZHN0ICs9
IGRzdF9zdHJpZGUgLyBzaXplb2YodWludDE2X3QpOworICAgIH0KK30KKworc3RhdGljIGJvb2wg
Q29weVZpZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGNvbnN0IHdlYnJ0Yzo6STAxMEJ1ZmZlckludGVy
ZmFjZSogZnJhbWUsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxfYnVmZmVyKQoreworICAgIFJUQ19E
Q0hFQ0socGl4ZWxfYnVmZmVyKTsKKyAgICBSVENfRENIRUNLKENWUGl4ZWxCdWZmZXJHZXRQaXhl
bEZvcm1hdFR5cGUocGl4ZWxfYnVmZmVyKSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNy
MTBCaVBsYW5hclZpZGVvUmFuZ2UgfHwgQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShw
aXhlbF9idWZmZXIpID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVs
bFJhbmdlKTsKKyAgICBSVENfRENIRUNLX0VRKENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5l
KHBpeGVsX2J1ZmZlciwgMCksIHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWUtPmhlaWdodCgpKSk7
CisgICAgUlRDX0RDSEVDS19FUShDVlBpeGVsQnVmZmVyR2V0V2lkdGhPZlBsYW5lKHBpeGVsX2J1
ZmZlciwgMCksIHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWUtPndpZHRoKCkpKTsKKworICAgIGlm
IChDVlBpeGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNzKHBpeGVsX2J1ZmZlciwgMCkgIT0ga0NWUmV0
dXJuU3VjY2VzcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBzcmNfeSA9IGNv
bnN0X2Nhc3Q8dWludDE2X3QqPihmcmFtZS0+RGF0YVkoKSk7CisgICAgYXV0byBzcmNfdSA9IGNv
bnN0X2Nhc3Q8dWludDE2X3QqPihmcmFtZS0+RGF0YVUoKSk7CisgICAgYXV0byBzcmNfdiA9IGNv
bnN0X2Nhc3Q8dWludDE2X3QqPihmcmFtZS0+RGF0YVYoKSk7CisgICAgYXV0byBzcmNfd2lkdGhf
eSA9IGZyYW1lLT53aWR0aCgpOworICAgIGF1dG8gc3JjX2hlaWdodF95ID0gZnJhbWUtPmhlaWdo
dCgpOworICAgIGF1dG8gc3JjX3N0cmlkZV95ID0gZnJhbWUtPlN0cmlkZVkoKSAqIHNpemVvZih1
aW50MTZfdCk7CisgICAgYXV0byBzcmNfd2lkdGhfdXYgPSBmcmFtZS0+Q2hyb21hV2lkdGgoKTsK
KyAgICBhdXRvIHNyY19oZWlnaHRfdXYgPSBmcmFtZS0+Q2hyb21hSGVpZ2h0KCk7CisgICAgYXV0
byBzcmNfc3RyaWRlX3UgPSBmcmFtZS0+U3RyaWRlVSgpICogc2l6ZW9mKHVpbnQxNl90KTsKKyAg
ICBhdXRvIHNyY19zdHJpZGVfdiA9IGZyYW1lLT5TdHJpZGVWKCkgKiBzaXplb2YodWludDE2X3Qp
OworCisgICAgYXV0byogZHN0X3kgPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oQ1ZQaXhl
bEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShwaXhlbF9idWZmZXIsIDApKTsKKyAgICBhdXRv
IGRzdF9zdHJpZGVfeSA9IENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09mUGxhbmUocGl4ZWxf
YnVmZmVyLCAwKTsKKyAgICBhdXRvIGRzdF93aWR0aF95ID0gQ1ZQaXhlbEJ1ZmZlckdldFdpZHRo
T2ZQbGFuZShwaXhlbF9idWZmZXIsIDApOworICAgIGF1dG8gZHN0X2hlaWdodF95ID0gQ1ZQaXhl
bEJ1ZmZlckdldEhlaWdodE9mUGxhbmUocGl4ZWxfYnVmZmVyLCAwKTsKKworICAgIGF1dG8qIGRz
dF91diA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihDVlBpeGVsQnVmZmVyR2V0QmFzZUFk
ZHJlc3NPZlBsYW5lKHBpeGVsX2J1ZmZlciwgMSkpOworICAgIGF1dG8gZHN0X3N0cmlkZV91diA9
IENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09mUGxhbmUocGl4ZWxfYnVmZmVyLCAxKTsKKyAg
ICBhdXRvIGRzdF93aWR0aF91diA9IENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUocGl4ZWxf
YnVmZmVyLCAxKTsKKyAgICBhdXRvIGRzdF9oZWlnaHRfdXYgPSBDVlBpeGVsQnVmZmVyR2V0SGVp
Z2h0T2ZQbGFuZShwaXhlbF9idWZmZXIsIDEpOworCisgICAgaWYgKHNyY193aWR0aF95ICE9IGRz
dF93aWR0aF95CisgICAgICAgIHx8IHNyY19oZWlnaHRfeSAhPSBkc3RfaGVpZ2h0X3kKKyAgICAg
ICAgfHwgc3JjX3dpZHRoX3V2ICE9IGRzdF93aWR0aF91dgorICAgICAgICB8fCBzcmNfaGVpZ2h0
X3V2ICE9IGRzdF9oZWlnaHRfdXYpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENvcHlQ
bGFuZV8xNihzcmNfeSwgc3JjX3N0cmlkZV95LCBkc3RfeSwgZHN0X3N0cmlkZV95LCBkc3Rfd2lk
dGhfeSwgZHN0X2hlaWdodF95LCA2NCk7CisgICAgTWVyZ2VVVlBsYW5lXzE2KHNyY191LCBzcmNf
c3RyaWRlX3UsIHNyY192LCBzcmNfc3RyaWRlX3YsIGRzdF91diwgZHN0X3N0cmlkZV91diwgZHN0
X3dpZHRoX3V2LCBkc3RfaGVpZ2h0X3V2LCA2NCk7CisKKyAgICBDVlBpeGVsQnVmZmVyVW5sb2Nr
QmFzZUFkZHJlc3MocGl4ZWxfYnVmZmVyLCAwKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogQ1ZQ
aXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFt
ZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90KT4m
IG1ha2VQaXhlbEJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCkt
PnR5cGUoKSAhPSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKSB7Ci0gICAgICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCBJNDIwQnVmZmVySW50ZXJmYWNlPiBidWZmZXIgPSBmcmFt
ZS52aWRlb19mcmFtZV9idWZmZXIoKS0+R2V0STQyMCgpOworICAgICAgICBhdXRvIHBpeGVsQnVm
ZmVyID0gbWFrZVBpeGVsQnVmZmVyKGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLT53aWR0aCgp
LCBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKS0+aGVpZ2h0KCkpOworICAgICAgICBpZiAoIXBp
eGVsQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byBw
aXhlbEJ1ZmZlciA9IG1ha2VQaXhlbEJ1ZmZlcihidWZmZXItPndpZHRoKCksIGJ1ZmZlci0+aGVp
Z2h0KCkpOwotICAgICAgICBpZiAocGl4ZWxCdWZmZXIpCisgICAgICAgIGlmIChmcmFtZS52aWRl
b19mcmFtZV9idWZmZXIoKS0+dHlwZSgpID09IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJNDIw
KQogICAgICAgICAgICAgQ29weVZpZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGZyYW1lLnZpZGVvX2Zy
YW1lX2J1ZmZlcigpLT5HZXRJNDIwKCksIHBpeGVsQnVmZmVyKTsKKyAgICAgICAgZWxzZSBpZiAo
ZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCktPnR5cGUoKSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpU
eXBlOjprSTAxMCkKKyAgICAgICAgICAgIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcihmcmFt
ZS52aWRlb19mcmFtZV9idWZmZXIoKS0+R2V0STAxMCgpLCBwaXhlbEJ1ZmZlcik7CiAgICAgICAg
IHJldHVybiBwaXhlbEJ1ZmZlcjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdFZQOURlY29kZXIuY3BwCmluZGV4IGU5NGI5NzZmOGExN2FjMmMxZWI1YmU3YzcyMDY1
NTg1NzU5N2E0NTguLjFkODA0MmViZDY2NmYxNzZkOTI5YmZiODAyYTJlMzM4MDI2YjE4OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDlEZWNvZGVyLmNwcApAQCAtNTgs
NiArNTgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJyZW50RnJhbWUoVlRWaWRlb0RlY29k
ZXJGcmFtZSBjdXJyZW50RnJhbWUpIHsgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7IH0K
ICAgICBPU1N0YXR1cyBkZWNvZGVyRmFpbGVkKGludCBlcnJvcik7CiAKKyAgICB2b2lkIGNyZWF0
ZVBpeGVsQnVmZmVyUG9vbEZvckZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25S
ZWYpOworCiBwcml2YXRlOgogICAgIGludDMyX3QgRGVjb2RlZChWaWRlb0ZyYW1lJikgZmluYWw7
CiAgICAgaW50MzJfdCBEZWNvZGVkKFZpZGVvRnJhbWUmLCBpbnQ2NF90IGRlY29kZV90aW1lX21z
KSBmaW5hbDsKQEAgLTE2OSw2ICsxNzEsNyBAQCBPU1N0YXR1cyBzdGFydFZQOURlY29kZXJTZXNz
aW9uKFZUVmlkZW9EZWNvZGVyUmVmIGluc3RhbmNlLCBWVFZpZGVvRGVjb2RlclNlc3NpbwogCiAg
ICAgZGVjb2Rlci0+bV9pbnN0YW5jZSA9IHN0ZDo6bWFrZV91bmlxdWU8VlA5RGVjb2RlckltcGw+
KCk7CiAgICAgZGVjb2Rlci0+bV9yZWNlaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0VlA5
RGVjb2RlclJlY2VpdmVyPihzZXNzaW9uKTsKKyAgICBkZWNvZGVyLT5tX3JlY2VpdmVyLT5jcmVh
dGVQaXhlbEJ1ZmZlclBvb2xGb3JGb3JtYXREZXNjcmlwdGlvbihmb3JtYXREZXNjcmlwdGlvbik7
CiAKICAgICBkZWNvZGVyLT5tX2luc3RhbmNlLT5SZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJh
Y2soZGVjb2Rlci0+bV9yZWNlaXZlci5nZXQoKSk7CiAKQEAgLTI1Myw2ICsyNTYsOTQgQEAgV2Vi
S2l0VlA5RGVjb2RlclJlY2VpdmVyOjp+V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyKCkKICAgICAg
ICAgQ0ZSZWxlYXNlKG1fcGl4ZWxCdWZmZXJQb29sKTsKIH0KIAordm9pZCBXZWJLaXRWUDlEZWNv
ZGVyUmVjZWl2ZXI6OmNyZWF0ZVBpeGVsQnVmZmVyUG9vbEZvckZvcm1hdERlc2NyaXB0aW9uKENN
Rm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCit7CisgICAgLy8gQ29yZUFu
aW1hdGlvbiBkb2Vzbid0IHN1cHBvcnQgZnVsbC1wbGFuYXIgWVVWLCBzbyB3ZSBtdXN0IGNvbnZl
cnQgdGhlIGJ1ZmZlcnMgb3V0cHV0CisgICAgLy8gYnkgbGlidnB4IHRvIGJpLXBsYW5hciBZVVYu
IENyZWF0ZSBwaXhlbCBidWZmZXIgYXR0cmlidXRlcyBhbmQgZ2l2ZSB0aG9zZSB0byB0aGUKKyAg
ICAvLyBkZWNvZGVyIHNlc3Npb24gZm9yIHVzZSBpbiBjcmVhdGluZyBpdHMgb3duIGludGVybmFs
IENWUGl4ZWxCdWZmZXJQb29sLCB3aGljaCB3ZQorICAgIC8vIHdpbGwgdXNlIHBvc3QtZGVjb2Rl
LgorICAgIGJvb2wgaXNGdWxsUmFuZ2UgPSBmYWxzZTsKKyAgICBib29sIGlzMTBCaXQgPSBmYWxz
ZTsKKworICAgIGRvIHsKKyAgICAgICAgYXV0byBleHRlbnNpb25zID0gQ01Gb3JtYXREZXNjcmlw
dGlvbkdldEV4dGVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOworICAgICAgICBpZiAoIWV4dGVu
c2lvbnMpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBDRlR5cGVSZWYgZXh0ZW5zaW9u
QXRvbXMgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25zLCBrQ01Gb3JtYXREZXNjcmlw
dGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNjcmlwdGlvbkV4dGVuc2lvbkF0b21zKTsKKyAgICAgICAg
aWYgKCFleHRlbnNpb25BdG9tcyB8fCBDRkdldFR5cGVJRChleHRlbnNpb25BdG9tcykgIT0gQ0ZE
aWN0aW9uYXJ5R2V0VHlwZUlEKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBDRlR5
cGVSZWYgY29uZmlndXJhdGlvblJlY29yZCA9IENGRGljdGlvbmFyeUdldFZhbHVlKChDRkRpY3Rp
b25hcnlSZWYpZXh0ZW5zaW9uQXRvbXMsIENGU1RSKCJ2cGNDIikpOworICAgICAgICBpZiAoIWNv
bmZpZ3VyYXRpb25SZWNvcmQgfHwgQ0ZHZXRUeXBlSUQoY29uZmlndXJhdGlvblJlY29yZCkgIT0g
Q0ZEYXRhR2V0VHlwZUlEKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIGNv
bmZpZ3VyYXRpb25SZWNvcmRTaXplID0gQ0ZEYXRhR2V0TGVuZ3RoKChDRkRhdGFSZWYpY29uZmln
dXJhdGlvblJlY29yZCk7CisgICAgICAgIGlmIChjb25maWd1cmF0aW9uUmVjb3JkU2l6ZSA8IDEy
KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3Jk
RGF0YSA9IENGRGF0YUdldEJ5dGVQdHIoKENGRGF0YVJlZiljb25maWd1cmF0aW9uUmVjb3JkKTsK
KyAgICAgICAgYXV0byBiaXREZXB0aENocm9tYUFuZFJhbmdlID0gKihjb25maWd1cmF0aW9uUmVj
b3JkRGF0YSArIDYpOworCisgICAgICAgIGlmICgoYml0RGVwdGhDaHJvbWFBbmRSYW5nZSA+PiA0
KSA9PSAxMCkKKyAgICAgICAgICAgIGlzMTBCaXQgPSB0cnVlOworCisgICAgICAgIGlmIChiaXRE
ZXB0aENocm9tYUFuZFJhbmdlICYgMHgxKQorICAgICAgICAgICAgaXNGdWxsUmFuZ2UgPSB0cnVl
OworICAgIH0gd2hpbGUgKGZhbHNlKTsKKworICAgIE9TVHlwZSBwaXhlbEZvcm1hdDsKKyAgICBp
ZiAoaXMxMEJpdCkKKyAgICAgICAgcGl4ZWxGb3JtYXQgPSBpc0Z1bGxSYW5nZSA/IGtDVlBpeGVs
Rm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlIDoga0NWUGl4ZWxGb3JtYXRU
eXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJWaWRlb1JhbmdlOworICAgIGVsc2UKKyAgICAgICAgcGl4
ZWxGb3JtYXQgPSBpc0Z1bGxSYW5nZSA/IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQ
bGFuYXJGdWxsUmFuZ2UgOiBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlk
ZW9SYW5nZTsKKworICAgIGF1dG8gY3JlYXRlUGl4ZWxGb3JtYXRBdHRyaWJ1dGVzID0gW10gKE9T
VHlwZSBwaXhlbEZvcm1hdCwgaW50MzJfdCBib3JkZXJQaXhlbHMpIHsKKyAgICAgICAgYXV0byBj
cmVhdGVOdW1iZXIgPSBbXSAoaW50MzJfdCBmb3JtYXQpIC0+IENGTnVtYmVyUmVmIHsKKyAgICAg
ICAgICAgIHJldHVybiBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJTSW50MzJUeXBlLCAmZm9ybWF0KTsKKyAgICAgICAgfTsKKyAgICAgICAgQ0ZNdXRhYmxlQXJy
YXlSZWYgY2ZQaXhlbEZvcm1hdHMgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAyLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKKyAgICAgICAgYXV0byBmb3JtYXRO
dW1iZXIgPSBjcmVhdGVOdW1iZXIocGl4ZWxGb3JtYXQpOworICAgICAgICBDRkFycmF5QXBwZW5k
VmFsdWUoY2ZQaXhlbEZvcm1hdHMsIGZvcm1hdE51bWJlcik7CisgICAgICAgIENGUmVsZWFzZShm
b3JtYXROdW1iZXIpOworCisgICAgICAgIENGTnVtYmVyUmVmIGJvcmRlclBpeGVsc1ZhbHVlID0g
Y3JlYXRlTnVtYmVyKDMyKTsKKworICAgICAgICBjb25zdCB2b2lkKiBrZXlzW10gPSB7CisgICAg
ICAgICAgICBrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleSwKKyAgICAgICAgICAgIGtD
VlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNMZWZ0S2V5LAorICAgICAgICAgICAga0NWUGl4ZWxC
dWZmZXJFeHRlbmRlZFBpeGVsc1JpZ2h0S2V5LAorICAgICAgICAgICAga0NWUGl4ZWxCdWZmZXJF
eHRlbmRlZFBpeGVsc1RvcEtleSwKKyAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQ
aXhlbHNCb3R0b21LZXksCisgICAgICAgIH07CisgICAgICAgIGNvbnN0IHZvaWQqIHZhbHVlc1td
ID0geworICAgICAgICAgICAgY2ZQaXhlbEZvcm1hdHMsCisgICAgICAgICAgICBib3JkZXJQaXhl
bHNWYWx1ZSwKKyAgICAgICAgICAgIGJvcmRlclBpeGVsc1ZhbHVlLAorICAgICAgICAgICAgYm9y
ZGVyUGl4ZWxzVmFsdWUsCisgICAgICAgICAgICBib3JkZXJQaXhlbHNWYWx1ZSwKKyAgICAgICAg
fTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMgPSBDRkRpY3Rpb25hcnlDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVzLCBzdGQ6OnNpemUoa2V5cyksICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpOworICAgICAgICBDRlJlbGVhc2UoYm9yZGVyUGl4ZWxzVmFsdWUpOworICAgICAgICBD
RlJlbGVhc2UoY2ZQaXhlbEZvcm1hdHMpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlczsKKyAg
ICB9OworCisgICAgYXV0byBwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMgPSBjcmVhdGVQaXhlbEZvcm1h
dEF0dHJpYnV0ZXMocGl4ZWxGb3JtYXQsIDMyKTsKKyAgICBWVERlY29kZXJTZXNzaW9uU2V0UGl4
ZWxCdWZmZXJBdHRyaWJ1dGVzKG1fc2Vzc2lvbiwgcGl4ZWxCdWZmZXJBdHRyaWJ1dGVzKTsKKyAg
ICBDRlJlbGVhc2UocGl4ZWxCdWZmZXJBdHRyaWJ1dGVzKTsKKworICAgIGlmIChtX3BpeGVsQnVm
ZmVyUG9vbCkgeworICAgICAgICBDRlJlbGVhc2UobV9waXhlbEJ1ZmZlclBvb2wpOworICAgICAg
ICBtX3BpeGVsQnVmZmVyUG9vbCA9IG51bGxwdHI7CisgICAgfQorCisgICAgbV9waXhlbEJ1ZmZl
clBvb2wgPSBWVERlY29kZXJTZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sKG1fc2Vzc2lvbik7Cisg
ICAgQ0ZSZWxlYXNlKHBpeGVsQnVmZmVyQXR0cmlidXRlcyk7CisgICAgaWYgKG1fcGl4ZWxCdWZm
ZXJQb29sKQorICAgICAgICBDRlJldGFpbihtX3BpeGVsQnVmZmVyUG9vbCk7Cit9CisKIE9TU3Rh
dHVzIFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZChpbnQgZXJyb3IpCiB7
CiAgICAgT1NTdGF0dXMgdnRFcnJvciA9IGtWVFZpZGVvRGVjb2RlckJhZERhdGFFcnI7CkBAIC0y
NzEsMzMgKzM2MiwxNyBAQCBPU1N0YXR1cyBXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OmRlY29k
ZXJGYWlsZWQoaW50IGVycm9yKQogCiBpbnQzMl90IFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6
RGVjb2RlZChWaWRlb0ZyYW1lJiBmcmFtZSkKIHsKLSAgICBDVlBpeGVsQnVmZmVyUmVmIG5ld1Bp
eGVsQnVmZmVyIHsgbnVsbHB0ciB9OwotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBwaXhlbEJ1ZmZl
ckZyb21GcmFtZShmcmFtZSwgW3RoaXMsICZuZXdQaXhlbEJ1ZmZlcl0oc2l6ZV90IHdpZHRoLCBz
aXplX3QgaGVpZ2h0KSAtPiBDVlBpeGVsQnVmZmVyUmVmIHsKLSAgICAgICAgaWYgKCFtX3BpeGVs
QnVmZmVyUG9vbCB8fCBtX3BpeGVsQnVmZmVyV2lkdGggIT0gd2lkdGggfHwgbV9waXhlbEJ1ZmZl
ckhlaWdodCAhPSBoZWlnaHQpIHsKLSAgICAgICAgICAgIGlmIChtX3BpeGVsQnVmZmVyUG9vbCkK
LSAgICAgICAgICAgICAgICBDRlJlbGVhc2UobV9waXhlbEJ1ZmZlclBvb2wpOwotICAgICAgICAg
ICAgbV9waXhlbEJ1ZmZlclBvb2wgPSBjcmVhdGVQaXhlbEJ1ZmZlclBvb2wod2lkdGgsIGhlaWdo
dCk7Ci0gICAgICAgICAgICBpZiAoIW1fcGl4ZWxCdWZmZXJQb29sKSB7Ci0gICAgICAgICAgICAg
ICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlZQOSBkZWNvZGVyOiB1bmFibGUgdG8gY3JlYXRlIHBp
eGVsIGJ1ZmZlciBwb29sIjsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIG1fcGl4ZWxCdWZmZXJXaWR0aCA9IHdpZHRoOwotICAgICAg
ICAgICAgbV9waXhlbEJ1ZmZlckhlaWdodCA9IGhlaWdodDsKLSAgICAgICAgfQotCi0gICAgICAg
IGF1dG8gc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGVQaXhlbEJ1ZmZlcihrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBtX3BpeGVsQnVmZmVyUG9vbCwgJm5ld1BpeGVsQnVmZmVyKTsKLSAgICAg
ICAgaWYgKHN0YXR1cyAhPSBrQ1ZSZXR1cm5TdWNjZXNzKSB7Ci0gICAgICAgICAgICBSVENfTE9H
KExTX0VSUk9SKSA8PCAiVlA5IGRlY29kZXI6IHVuYWJsZSB0byBjcmVhdGUgcGl4ZWwgYnVmZmVy
IGZyb20gcG9vbCI7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotCi0g
ICAgICAgIHJldHVybiBuZXdQaXhlbEJ1ZmZlcjsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGl4
ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWln
aHQpIC0+IENWUGl4ZWxCdWZmZXJSZWYgeworICAgICAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVs
QnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKENWUGl4ZWxCdWZmZXJQb29sQ3JlYXRlUGl4
ZWxCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9waXhlbEJ1ZmZlclBvb2wsICZwaXhlbEJ1
ZmZlcikgPT0ga0NWUmV0dXJuU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBwaXhlbEJ1ZmZl
cjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfSk7CiAKICAgICBWVERlY29kZXJTZXNz
aW9uRW1pdERlY29kZWRGcmFtZShtX3Nlc3Npb24sIG1fY3VycmVudEZyYW1lLCBwaXhlbEJ1ZmZl
ciA/IG5vRXJyIDogLTEsIDAsIHBpeGVsQnVmZmVyKTsKICAgICBtX2N1cnJlbnRGcmFtZSA9IG51
bGxwdHI7Ci0gICAgaWYgKG5ld1BpeGVsQnVmZmVyKQotICAgICAgICBDRlJlbGVhc2UobmV3UGl4
ZWxCdWZmZXIpOworICAgIGlmIChwaXhlbEJ1ZmZlcikKKyAgICAgICAgQ0ZSZWxlYXNlKHBpeGVs
QnVmZmVyKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcAppbmRleCA5MmVhNzY4ZmZkZTE4ZWViZjE0ODY0Yzk3
ZjE0OTkyNzJiMDRmOTc1Li4yOGIxZjM1N2I0ZGYxNTJkNWRmZmExNDMxZjBiNzVhOTI3YjMyZDI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5r
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNw
cApAQCAtNjQsNiArNjQsMjcgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNVGltZVJhbmdlTWFrZSwgQ01UaW0KIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTVRpbWVSYW5n
ZUVxdWFsLCBCb29sZWFuLCAoQ01UaW1lUmFuZ2UgcmFuZ2UxLCBDTVRpbWVSYW5nZSByYW5nZTIp
LCAocmFuZ2UxLCByYW5nZTIpLCBQQUxfRVhQT1JUKQogCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25F
eHRlbnNpb25fU2FtcGxlRGVzY3JpcHRpb25FeHRlbnNpb25BdG9tcywgQ0ZTdHJpbmdSZWYsIFBB
TF9FWFBPUlQpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25Db2xvclByaW1hcmllc19EQ0lfUDMsIENG
U3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJp
ZXNfRUJVXzMyMTMsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0
aW9uQ29sb3JQcmltYXJpZXNfSVRVX1JfMjAyMCwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQpCitT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwg
a0NNRm9ybWF0RGVzY3JpcHRpb25Db2xvclByaW1hcmllc19JVFVfUl83MDlfMiwgQ0ZTdHJpbmdS
ZWYsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25Db2xvclByaW1hcmllc19QM19E
NjUsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQ
cmltYXJpZXNfU01QVEVfQywgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVz
Y3JpcHRpb25FeHRlbnNpb25fQ29sb3JQcmltYXJpZXMsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JU
KQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVk
aWEsIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX0Z1bGxSYW5nZVZpZGVvLCBDRlN0cmlu
Z1JlZiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9UcmFuc2Zl
ckZ1bmN0aW9uLCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DT05TVEFOVF9G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlv
bkV4dGVuc2lvbl9ZQ2JDck1hdHJpeCwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQpCitTT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NNRm9y
bWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzIwMjAsIENGU3RyaW5nUmVmLCBQ
QUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9JVFVfUl8y
MTAwX0hMRywgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25U
cmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzcwOV8yLCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKK1NP
RlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBr
Q01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fTGluZWFyLCBDRlN0cmluZ1JlZiwg
UEFMX0VYUE9SVCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fU01QVEVf
MjQwTV8xOTk1LCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DT05TVEFOVF9G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlv
blRyYW5zZmVyRnVuY3Rpb25fU01QVEVfU1RfMjA4NF9QUSwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBP
UlQpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVN
ZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NNUFRFX1NUXzQyOF8x
LCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbllDYkNyTWF0
cml4X0lUVV9SXzIwMjAsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2Ny
aXB0aW9uWUNiQ3JNYXRyaXhfSVRVX1JfNjAxXzQsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQor
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEs
IGtDTUZvcm1hdERlc2NyaXB0aW9uWUNiQ3JNYXRyaXhfSVRVX1JfNzA5XzIsIENGU3RyaW5nUmVm
LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQo
UEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0aW9uWUNiQ3JNYXRyaXhfU01QVEVfMjQw
TV8xOTk1LCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1Jf
U09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQWxpZ25tZW50
VHlwZV9FbmQsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBbGlnbm1l
bnRUeXBlX01pZGRsZSwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEFs
aWdubWVudFR5cGVfU3RhcnQsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQpAQCAtMTc2LDcgKzE5
Nyw3IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29y
ZU1lZGlhLCBDTUNsb2NrR2V0VGltZSwgQ01UaW1lCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJDYWxsRm9yRWFj
aFNhbXBsZSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBPU1N0YXR1cyAoKiBD
TVNBTVBMRUJVRkZFUkNBTExfTk9FU0NBUEUgY2FsbGJhY2spKCBDTVNhbXBsZUJ1ZmZlclJlZiBz
YW1wbGVCdWZmZXIsIENNSXRlbUNvdW50IGluZGV4LCB2b2lkICpyZWZjb24pLCB2b2lkICpyZWZj
b24pLCAoc2J1ZiwgY2FsbGJhY2ssIHJlZmNvbiksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZm
ZXJDYWxsQmxvY2tGb3JFYWNoU2FtcGxlLCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNi
dWYsIE9TU3RhdHVzICheIENNU0FNUExFQlVGRkVSQ0FMTF9OT0VTQ0FQRSBoYW5kbGVyKShDTVNh
bXBsZUJ1ZmZlclJlZiwgQ01JdGVtQ291bnQpKSwgKHNidWYsIGhhbmRsZXIpLCBQQUxfRVhQT1JU
KQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRl
bnRPcmlnaW5hbEZvcm1hdCwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQpCi0KK1NPRlRfTElOS19D
T05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBr
Q01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fc1JHQiwgQ0ZTdHJpbmdSZWYsIFBB
TF9FWFBPUlQpCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFT
b2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5o
CmluZGV4IDg0MjkzMzI5MjMxNGQ4MDNiMmRmMTYzOTRlMmJiZGI4NmFkNTc4MTMuLjc1MDk4YWMy
MzhhZTRhN2U1Mjg0N2UxNzY2MmViNGJlM2EwZmY2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKQEAgLTg2LDggKzg2LDUyIEBAIFNPRlRfTElO
S19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVRpbWVSYW5nZUVxdWFsLCBC
b29sZWFuLCAoQ01UaW1lCiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNjcmlwdGlvbkV4
dGVuc2lvbkF0b21zLCBDRlN0cmluZ1JlZikKICNkZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRpb25F
eHRlbnNpb25fU2FtcGxlRGVzY3JpcHRpb25FeHRlbnNpb25BdG9tcyBnZXRfQ29yZU1lZGlhX2tD
TUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRv
bXMoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTUZv
cm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfRENJX1AzLCBDRlN0cmluZ1JlZikKKyNkZWZp
bmUga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25Db2xv
clByaW1hcmllc19EQ0lfUDMgZ2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVu
c2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX0RDSV9QMygpCitTT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRp
b25Db2xvclByaW1hcmllc19FQlVfMzIxMywgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTUZvcm1h
dERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNf
RUJVXzMyMTMgZ2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01G
b3JtYXREZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX0VCVV8zMjEzKCkKK1NPRlRfTElOS19DT05T
VEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkNvbG9y
UHJpbWFyaWVzX0lUVV9SXzIwMjAsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ01Gb3JtYXREZXNj
cmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX0lUVV9S
XzIwMjAgZ2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3Jt
YXREZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX0lUVV9SXzIwMjAoKQorU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQ
cmltYXJpZXNfSVRVX1JfNzA5XzIsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ01Gb3JtYXREZXNj
cmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX0lUVV9S
XzcwOV8yIGdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9y
bWF0RGVzY3JpcHRpb25Db2xvclByaW1hcmllc19JVFVfUl83MDlfMigpCitTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25Db2xv
clByaW1hcmllc19QM19ENjUsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ01Gb3JtYXREZXNjcmlw
dGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX1AzX0Q2NSBn
ZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2Ny
aXB0aW9uQ29sb3JQcmltYXJpZXNfUDNfRDY1KCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVB
REVSKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX1NN
UFRFX0MsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lv
bl9rQ01Gb3JtYXREZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX1NNUFRFX0MgZ2V0X0NvcmVNZWRp
YV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvbkNvbG9y
UHJpbWFyaWVzX1NNUFRFX0MoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBD
b3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX0NvbG9yUHJpbWFyaWVzLCBD
RlN0cmluZ1JlZikKKyNkZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9y
bWF0RGVzY3JpcHRpb25FeHRlbnNpb25fQ29sb3JQcmltYXJpZXMgZ2V0X0NvcmVNZWRpYV9rQ01G
b3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9D
b2xvclByaW1hcmllcygpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVN
ZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fRnVsbFJhbmdlVmlkZW8sIENGU3Ry
aW5nUmVmKQorI2RlZmluZSBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXRE
ZXNjcmlwdGlvbkV4dGVuc2lvbl9GdWxsUmFuZ2VWaWRlbyBnZXRfQ29yZU1lZGlhX2tDTUZvcm1h
dERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX0Z1bGxS
YW5nZVZpZGVvKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlh
LCBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9UcmFuc2ZlckZ1bmN0aW9uLCBDRlN0cmlu
Z1JlZikKKyNkZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVz
Y3JpcHRpb25FeHRlbnNpb25fVHJhbnNmZXJGdW5jdGlvbiBnZXRfQ29yZU1lZGlhX2tDTUZvcm1h
dERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1RyYW5z
ZmVyRnVuY3Rpb24oKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVk
aWEsIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1lDYkNyTWF0cml4LCBDRlN0cmluZ1Jl
ZikKKyNkZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3Jp
cHRpb25FeHRlbnNpb25fWUNiQ3JNYXRyaXggZ2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlw
dGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9ZQ2JDck1hdHJpeCgp
CitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0
RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzIwMjAsIENGU3RyaW5nUmVmKQorI2Rl
ZmluZSBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvblRy
YW5zZmVyRnVuY3Rpb25fSVRVX1JfMjAyMCBnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0
aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9JVFVfUl8y
MDIwKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01G
b3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fSVRVX1JfMjEwMF9ITEcsIENGU3RyaW5n
UmVmKQorI2RlZmluZSBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNj
cmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fSVRVX1JfMjEwMF9ITEcgZ2V0X0NvcmVNZWRpYV9rQ01G
b3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVu
Y3Rpb25fSVRVX1JfMjEwMF9ITEcoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFM
LCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9JVFVfUl83
MDlfMiwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9u
X2tDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9JVFVfUl83MDlfMiBnZXRfQ29y
ZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9u
VHJhbnNmZXJGdW5jdGlvbl9JVFVfUl83MDlfMigpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hF
QURFUihQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9u
X0xpbmVhciwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5z
aW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9MaW5lYXIgZ2V0X0NvcmVN
ZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvblRy
YW5zZmVyRnVuY3Rpb25fTGluZWFyKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBB
TCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fU01QVEVf
MjQwTV8xOTk1LCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRl
bnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NNUFRFXzI0ME1fMTk5
NSBnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERl
c2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9TTVBURV8yNDBNXzE5OTUoKQorU09GVF9MSU5LX0NP
TlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0aW9uVHJh
bnNmZXJGdW5jdGlvbl9TTVBURV9TVF8yMDg0X1BRLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NN
Rm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1
bmN0aW9uX1NNUFRFX1NUXzIwODRfUFEgZ2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlv
bkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fU01QVEVfU1Rf
MjA4NF9QUSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
a0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NNUFRFX1NUXzQyOF8xLCBDRlN0
cmluZ1JlZikKKyNkZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0
RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NNUFRFX1NUXzQyOF8xIGdldF9Db3JlTWVkaWFf
a0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2Zl
ckZ1bmN0aW9uX1NNUFRFX1NUXzQyOF8xKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbllDYkNyTWF0cml4X0lUVV9SXzIw
MjAsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9r
Q01Gb3JtYXREZXNjcmlwdGlvbllDYkNyTWF0cml4X0lUVV9SXzIwMjAgZ2V0X0NvcmVNZWRpYV9r
Q01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvbllDYkNyTWF0
cml4X0lUVV9SXzIwMjAoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3Jl
TWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0aW9uWUNiQ3JNYXRyaXhfSVRVX1JfNjAxXzQsIENGU3Ry
aW5nUmVmKQorI2RlZmluZSBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXRE
ZXNjcmlwdGlvbllDYkNyTWF0cml4X0lUVV9SXzYwMV80IGdldF9Db3JlTWVkaWFfa0NNRm9ybWF0
RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25ZQ2JDck1hdHJpeF9JVFVf
Ul82MDFfNCgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
a0NNRm9ybWF0RGVzY3JpcHRpb25ZQ2JDck1hdHJpeF9JVFVfUl83MDlfMiwgQ0ZTdHJpbmdSZWYp
CisjZGVmaW5lIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0
aW9uWUNiQ3JNYXRyaXhfSVRVX1JfNzA5XzIgZ2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlw
dGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvbllDYkNyTWF0cml4X0lUVV9SXzcwOV8y
KCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3Jt
YXREZXNjcmlwdGlvbllDYkNyTWF0cml4X1NNUFRFXzI0ME1fMTk5NSwgQ0ZTdHJpbmdSZWYpCisj
ZGVmaW5lIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9u
WUNiQ3JNYXRyaXhfU01QVEVfMjQwTV8xOTk1IGdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3Jp
cHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25ZQ2JDck1hdHJpeF9TTVBURV8yNDBN
XzE5OTUoKQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9IRUFERVIoUEFMLCBDb3Jl
TWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmln
aW5hbEZvcm1hdCwgQ0ZTdHJpbmdSZWYpCiAjZGVmaW5lIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0
ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCBnZXRfQ29yZU1lZGlhX2tDTUZv
cm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgp
CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
a0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX3NSR0IsIENGU3RyaW5nUmVmKQor
I2RlZmluZSBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlv
blRyYW5zZmVyRnVuY3Rpb25fc1JHQiBnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9u
RXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9zUkdCKCkKIFNP
RlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01UZXh0TWFya3Vw
QWxpZ25tZW50VHlwZV9FbmQsIENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01UZXh0TWFya3VwQWxp
Z25tZW50VHlwZV9FbmQgZ2V0X0NvcmVNZWRpYV9rQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9F
bmQoKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVRl
eHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRsZSwgQ0ZTdHJpbmdSZWYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDQwYzdlODQ4MjczYzVjMmEyMjA0YWY3NGE1MjdkOGVh
MTUwNGQ1NGQuLmM3NmRlZWNlMGQwY2ZiZTEzMGNjM2ExZjNhYjNlZDkzNDNkZTk1YWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC01MzMsNiArNTMzLDI3IEBAIHN0YXRp
YyB1aW50OF90IGNvbnZlcnRUb0NvbG9yUHJpbWFyaWVzKGNvbnN0IFByaW1hcmllcyYgY29lZmZp
Y2llbnRzKQogICAgIH0KIH0KIAorc3RhdGljIENGU3RyaW5nUmVmIGNvbnZlcnRUb0NNQ29sb3JQ
cmltYXJpZXModWludDhfdCBwcmltYXJpZXMpCit7CisgICAgc3dpdGNoIChwcmltYXJpZXMpIHsK
KyAgICBjYXNlIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF83MDlfNjoKKyAgICAg
ICAgcmV0dXJuIGtDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfSVRVX1JfNzA5XzI7
CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6RUJVX1RlY2hfMzIxM19F
OgorICAgICAgICByZXR1cm4ga0NNRm9ybWF0RGVzY3JpcHRpb25Db2xvclByaW1hcmllc19FQlVf
MzIxMzsKKyAgICBjYXNlIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF82MDFfNzoK
KyAgICBjYXNlIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpTTVBURV9TVF8yNDA6Cisg
ICAgICAgIHJldHVybiBrQ01Gb3JtYXREZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX1NNUFRFX0M7
CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6U01QVEVfUlBfNDMxXzI6
CisgICAgICAgIHJldHVybiBrQ01Gb3JtYXREZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX0RDSV9Q
MzsKKyAgICBjYXNlIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpTTVBURV9FR180MzJf
MToKKyAgICAgICAgcmV0dXJuIGtDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfUDNf
RDY1OworICAgIGNhc2UgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJUXzIwMjBfTm9u
Y29uc3RhbnRfTHVtaW5hbmNlOgorICAgICAgICByZXR1cm4ga0NNRm9ybWF0RGVzY3JpcHRpb25D
b2xvclByaW1hcmllc19JVFVfUl8yMDIwOworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOwor
fQorCiBzdGF0aWMgdWludDhfdCBjb252ZXJ0VG9UcmFuc2ZlckNoYXJhY3RlcmlzdGljcyhjb25z
dCBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyYgY2hhcmFjdGVyaXN0aWNzKQogewogICAgIHN3aXRj
aCAoY2hhcmFjdGVyaXN0aWNzKSB7CkBAIC01NzMsNiArNTk0LDMxIEBAIHN0YXRpYyB1aW50OF90
IGNvbnZlcnRUb1RyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKGNvbnN0IFRyYW5zZmVyQ2hhcmFjdGVy
aXN0aWNzJiBjCiAgICAgfQogfQogCitzdGF0aWMgQ0ZTdHJpbmdSZWYgY29udmVydFRvQ01UcmFu
c2ZlckZ1bmN0aW9uKHVpbnQ4X3QgY2hhcmFjdGVyaXN0aWNzKQoreworICAgIHN3aXRjaCAoY2hh
cmFjdGVyaXN0aWNzKSB7CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3Rl
cmlzdGljczo6QlRfNzA5XzY6CisgICAgICAgIHJldHVybiBrQ01Gb3JtYXREZXNjcmlwdGlvblRy
YW5zZmVyRnVuY3Rpb25fSVRVX1JfNzA5XzI7CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25UcmFu
c2ZlckNoYXJhY3RlcmlzdGljczo6U01QVEVfU1RfMjQwOgorICAgICAgICByZXR1cm4ga0NNRm9y
bWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NNUFRFXzI0ME1fMTk5NTsKKyAgICBjYXNl
IFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpTTVBURV9TVF8yMDg0Ogor
ICAgICAgICByZXR1cm4ga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NNUFRF
X1NUXzIwODRfUFE7CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3Rlcmlz
dGljczo6QlRfMjAyMF8xMGJpdDoKKyAgICBjYXNlIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzOjpCVF8yMDIwXzEyYml0OgorICAgICAgICByZXR1cm4ga0NNRm9ybWF0RGVz
Y3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzIwMjA7CisgICAgY2FzZSBWUENvbmZpZ3Vy
YXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6U01QVEVfU1RfNDI4XzE6CisgICAgICAgIHJl
dHVybiBrQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fU01QVEVfU1RfNDI4XzE7
CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfMjEw
MF9ITEc6CisgICAgICAgIHJldHVybiBrQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rp
b25fSVRVX1JfMjEwMF9ITEc7CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJh
Y3RlcmlzdGljczo6SUVDXzYxOTY2XzJfMToKKyAgICAgICAgcmV0dXJuIFBBTDo6Y2FuTG9hZF9D
b3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX3NSR0IgPyBrQ01G
b3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fc1JHQiA6IG51bGxwdHI7CisgICAgY2Fz
ZSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6TGluZWFyOgorICAgICAg
ICByZXR1cm4ga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX0xpbmVhcjsKKyAg
ICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogc3RhdGljIHVpbnQ4X3QgY29udmVydFRv
TWF0cml4Q29lZmZpY2llbnRzKGNvbnN0IE1hdHJpeENvZWZmaWNpZW50cyYgY29lZmZpY2llbnRz
KQogewogICAgIHN3aXRjaCAoY29lZmZpY2llbnRzKSB7CkBAIC01OTksNiArNjQ1LDIzIEBAIHN0
YXRpYyB1aW50OF90IGNvbnZlcnRUb01hdHJpeENvZWZmaWNpZW50cyhjb25zdCBNYXRyaXhDb2Vm
ZmljaWVudHMmIGNvZWZmaWNpZW50CiAgICAgfQogfQogCitzdGF0aWMgQ0ZTdHJpbmdSZWYgY29u
dmVydFRvQ01ZQ2JDUk1hdHJpeCh1aW50OF90IGNvZWZmaWNpZW50cykKK3sKKyAgICBzd2l0Y2gg
KGNvZWZmaWNpZW50cykgeworICAgIGNhc2UgVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2ll
bnRzOjpCVF8yMDIwX05vbmNvbnN0YW50X0x1bWluYW5jZToKKyAgICAgICAgcmV0dXJuIGtDTUZv
cm1hdERlc2NyaXB0aW9uWUNiQ3JNYXRyaXhfSVRVX1JfMjAyMDsKKyAgICBjYXNlIFZQQ29uZmln
dXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6QlRfNDcwXzdfQkc6CisgICAgY2FzZSBWUENvbmZp
Z3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkJUXzYwMV83OgorICAgICAgICByZXR1cm4ga0NN
Rm9ybWF0RGVzY3JpcHRpb25ZQ2JDck1hdHJpeF9JVFVfUl82MDFfNDsKKyAgICBjYXNlIFZQQ29u
ZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6QlRfNzA5XzY6CisgICAgICAgIHJldHVybiBr
Q01Gb3JtYXREZXNjcmlwdGlvbllDYkNyTWF0cml4X0lUVV9SXzcwOV8yOworICAgIGNhc2UgVlBD
b25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpTTVBURV9TVF8yNDA6CisgICAgICAgIHJl
dHVybiBrQ01Gb3JtYXREZXNjcmlwdGlvbllDYkNyTWF0cml4X1NNUFRFXzI0ME1fMTk5NTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogc3RhdGljIHVpbnQ4X3QgY29udmVydFN1
YnNhbXBsaW5nWFlUb0Nocm9tYVN1YnNhbXBsaW5nKHVpbnQ2NF90IHgsIHVpbnQ2NF90IHkpCiB7
CiAgICAgaWYgKHggJiB5KQpAQCAtNjkxLDEyICs3NTQsMzMgQEAgc3RhdGljIFJldGFpblB0cjxD
TUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFk
ZXJQYXIKICAgICBDRlR5cGVSZWYgY29uZmlndXJhdGlvblZhbHVlc1tdID0geyBkYXRhLmdldCgp
IH07CiAgICAgYXV0byBjb25maWd1cmF0aW9uRGljdCA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNvbmZpZ3VyYXRpb25LZXlzLCBjb25maWd1cmF0aW9u
VmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGNvbmZpZ3VyYXRpb25LZXlzKSwgJmtDRlR5cGVEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwog
Ci0gICAgVmVjdG9yPENGVHlwZVJlZj4gYXRvbXNLZXlzIHsga0NNRm9ybWF0RGVzY3JpcHRpb25F
eHRlbnNpb25fU2FtcGxlRGVzY3JpcHRpb25FeHRlbnNpb25BdG9tcyB9OwotICAgIFZlY3RvcjxD
RlR5cGVSZWY+IGF0b21zVmFsdWVzID0geyBjb25maWd1cmF0aW9uRGljdC5nZXQoKSB9OwotICAg
IGF1dG8gYXRvbXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBhdG9tc0tleXMuZGF0YSgpLCBhdG9tc1ZhbHVlcy5kYXRhKCksIGF0b21zS2V5cy5zaXpl
KCksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFs
dWVDYWxsQmFja3MpKTsKKyAgICBWZWN0b3I8Q0ZUeXBlUmVmPiBleHRlbnNpb25zS2V5cyB7IGtD
TUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRv
bXMgfTsKKyAgICBWZWN0b3I8Q0ZUeXBlUmVmPiBleHRlbnNpb25zVmFsdWVzID0geyBjb25maWd1
cmF0aW9uRGljdC5nZXQoKSB9OworCisgICAgaWYgKHJlY29yZC52aWRlb0Z1bGxSYW5nZUZsYWcg
PT0gVlBDb25maWd1cmF0aW9uUmFuZ2U6OkZ1bGxSYW5nZSkgeworICAgICAgICBleHRlbnNpb25z
S2V5cy5hcHBlbmQoa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fRnVsbFJhbmdlVmlkZW8p
OworICAgICAgICBleHRlbnNpb25zVmFsdWVzLmFwcGVuZChrQ0ZCb29sZWFuVHJ1ZSk7CisgICAg
fQorCisgICAgaWYgKGF1dG8gY21Db2xvclByaW1hcmllcyA9IGNvbnZlcnRUb0NNQ29sb3JQcmlt
YXJpZXMocmVjb3JkLmNvbG9yUHJpbWFyaWVzKSkgeworICAgICAgICBleHRlbnNpb25zS2V5cy5h
cHBlbmQoa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fQ29sb3JQcmltYXJpZXMpOworICAg
ICAgICBleHRlbnNpb25zVmFsdWVzLmFwcGVuZChjbUNvbG9yUHJpbWFyaWVzKTsKKyAgICB9CisK
KyAgICBpZiAoYXV0byBjbVRyYW5zZmVyRnVuY3Rpb24gPSBjb252ZXJ0VG9DTVRyYW5zZmVyRnVu
Y3Rpb24ocmVjb3JkLnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKSkgeworICAgICAgICBleHRlbnNp
b25zS2V5cy5hcHBlbmQoa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fVHJhbnNmZXJGdW5j
dGlvbik7CisgICAgICAgIGV4dGVuc2lvbnNWYWx1ZXMuYXBwZW5kKGNtVHJhbnNmZXJGdW5jdGlv
bik7CisgICAgfQorCisgICAgaWYgKGF1dG8gY21NYXRyaXggPSBjb252ZXJ0VG9DTVlDYkNSTWF0
cml4KHJlY29yZC5tYXRyaXhDb2VmZmljaWVudHMpKSB7CisgICAgICAgIGV4dGVuc2lvbnNLZXlz
LmFwcGVuZChrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9ZQ2JDck1hdHJpeCk7CisgICAg
ICAgIGV4dGVuc2lvbnNWYWx1ZXMuYXBwZW5kKGNtTWF0cml4KTsKKyAgICB9CisKKyAgICBhdXRv
IGV4dGVuc2lvbnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBleHRlbnNpb25zS2V5cy5kYXRhKCksIGV4dGVuc2lvbnNWYWx1ZXMuZGF0YSgpLCBleHRl
bnNpb25zS2V5cy5zaXplKCksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAogICAgIENNVmlkZW9Gb3JtYXREZXNjcmlw
dGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbiA9IG51bGxwdHI7Ci0gICAgaWYgKG5vRXJyICE9IENN
VmlkZW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ01WaWRl
b0NvZGVjVHlwZV9WUDksIHBhcnNlci53aWR0aCgpLCBwYXJzZXIuaGVpZ2h0KCksIGF0b21zLmdl
dCgpLCAmZm9ybWF0RGVzY3JpcHRpb24pKQorICAgIGlmIChub0VyciAhPSBDTVZpZGVvRm9ybWF0
RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NNVmlkZW9Db2RlY1R5cGVf
VlA5LCBwYXJzZXIud2lkdGgoKSwgcGFyc2VyLmhlaWdodCgpLCBleHRlbnNpb25zLmdldCgpLCAm
Zm9ybWF0RGVzY3JpcHRpb24pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4g
YWRvcHRDRihmb3JtYXREZXNjcmlwdGlvbik7CiB9CkBAIC03MjEsMTIgKzgwNSw2IEBAIHdlYm06
OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKGNvbnN0IEZyYW1lTWV0YWRh
dGEmIG1ldGFkYXRhLCBSZWFkCiAgICAgaWYgKCFibG9jaykKICAgICAgICAgcmV0dXJuIFN0YXR1
cyhTdGF0dXM6OmtJbnZhbGlkRWxlbWVudElkKTsKIAotICAgIGF1dG8gaXNTeW5jID0gV1RGOjpz
d2l0Y2hPbigqbV9jdXJyZW50QmxvY2ssIFtdKEJsb2NrJikgewotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfSwgW10oU2ltcGxlQmxvY2smIGJsb2NrKSB7Ci0gICAgICAgIHJldHVybiBibG9j
ay5pc19rZXlfZnJhbWU7Ci0gICAgfSk7Ci0KICAgICBhdXRvIHRyYWNrTnVtYmVyID0gYmxvY2st
PnRyYWNrX251bWJlcjsKIAogICAgIGF1dG8qIHRyYWNrRGF0YSA9IHRyYWNrRGF0YUZvclRyYWNr
TnVtYmVyKHRyYWNrTnVtYmVyKTsKQEAgLTc5OCw3ICs4NzYsNyBAQCB3ZWJtOjpTdGF0dXMgU291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZShjb25zdCBGcmFtZU1ldGFkYXRhJiBtZXRhZGF0
YSwgUmVhZAogICAgICAgICB0cmFja0RhdGEtPmN1cnJlbnRCbG9ja0J1ZmZlciA9IG51bGxwdHI7
CiAgICAgICAgIHRyYWNrRGF0YS0+Y3VycmVudEJsb2NrQnVmZmVyUG9zaXRpb24gPSAwOwogCi0g
ICAgICAgIGlmICghaXNTeW5jKSB7CisgICAgICAgIGlmICghaGVhZGVyUGFyc2VyLmtleSgpKSB7
CiAgICAgICAgICAgICBhdXRvIGF0dGFjaG1lbnRzQXJyYXkgPSBDTVNhbXBsZUJ1ZmZlckdldFNh
bXBsZUF0dGFjaG1lbnRzQXJyYXkoc2FtcGxlQnVmZmVyLmdldCgpLCB0cnVlKTsKICAgICAgICAg
ICAgIEFTU0VSVChhdHRhY2htZW50c0FycmF5KTsKICAgICAgICAgICAgIGlmICghYXR0YWNobWVu
dHNBcnJheSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405489</attachid>
            <date>2020-07-29 12:51:55 -0700</date>
            <delta_ts>2020-07-29 14:17:13 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-214928-20200729125154.patch</filename>
            <type>text/plain</type>
            <size>38100</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBiMDU1NWMzNzdkZDY0ZmJmMGM3ODU0N2RkNDdmNDQxNTYyZDY5YTIxLi44NTQ5
YjE5OTUyOGNjYWVkNGJlY2M5YTY0ZTUxMDBhMDNjNTY1OGRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMC0wNy0yOSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IEhEUiBkZWNvZGUgaW4g
U1cgVlA5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTQ5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgU3Vw
cG9ydCBjb252ZXJ0aW5nIEkwMTAgYnVmZmVycyAoZnVsbC1wbGFuYXIsIDEwLWJpdCBkYXRhIHBh
Y2tlZCBpbnRvIHRoZSBMU0Igb2YgYSAxNi1iaXQgaW50KQorICAgICAgICBpbnRvIENWUGl4ZWxC
dWZmZXJzIChiaS1wbGFuYXIsIDEwLWJpdCBkYXRhIHBhY2tlZCBpbnRvIHRoZSBNU0Igb2YgYSAx
Ni1iaXQgaW50KS4gVGhpcyByZXF1aXJlcworICAgICAgICB1c2luZyBmdW5jdGlvbnMgZnJvbSBs
aWJ5dXYgdG8gbWVyZ2UgYW5kIHNjYWxlIDE2LWJpdCBwbGFuYXIgZGF0YSwgb3B0aW1pemVkIGZv
ciBBVlgyLiBUbyBrbm93CisgICAgICAgIHRoYXQgaW5jb21pbmcgYnVmZmVycyBhcmUgMTAtYml0
LCBhbmQgd2hldGhlciB0aGV5J3JlIGZ1bGwtcmFuZ2UsIHBhcnNlIHRoZSAndnBjQycgYXRvbSBh
dHRhY2hlZAorICAgICAgICB0byB0aGUgQ01Gb3JtYXREZXNjcmlwdGlvbi4KKworICAgICAgICAq
IFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW06CisgICAgICAgICh3
ZWJydGM6Ok1lcmdlVVZQbGFuZV8xNik6CisgICAgICAgICh3ZWJydGM6OkNvcHlQbGFuZV8xNik6
CisgICAgICAgICh3ZWJydGM6OkNvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcik6CisgICAgICAg
ICh3ZWJydGM6OnBpeGVsQnVmZmVyRnJvbUZyYW1lKToKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHA6CisgICAgICAgICh3ZWJydGM6OmNyZWF0
ZVdlYktpdFZQOURlY29kZXIpOgorICAgICAgICAod2VicnRjOjpzdGFydFZQOURlY29kZXJTZXNz
aW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpjcmVhdGVQ
aXhlbEJ1ZmZlclBvb2xGb3JGb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAgICh3ZWJydGM6Oldl
YktpdFZQOURlY29kZXJSZWNlaXZlcjo6RGVjb2RlZCk6CisKIDIwMjAtMDctMjIgIENvbnJhZCBT
aHVsdHogIDxjb25yYWRfc2h1bHR6QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgbWFjT1Mg
VmVyc2lvbiBtYWNyb3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MmI4YTcxYzUwMzc0NTk0MGQxNTMxMjMyMmVi
ZGI2NWI3NWNjNWI4Li5kMTU2ZGEyMmMzMDljMmYwNmQyNTg4NzljN2QxZWJhNTkwM2U5NWNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMDctMjkgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBIRFIgZGVjb2RlIGluIFNXIFZQOQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0OTI4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIENvbnZlcnQgdGhl
IGluY29taW5nIHByb3BlcnRpZXMgcGFyc2VkIGZyb20gdGhlIFZQOSBoZWFkZXIgaW50byBleHRl
bnNpb25zIHRvIG91cgorICAgICAgICBDTUZvcm1hdERlc2NyaXB0aW9uIGF0dGFjaGVkIHRvIGVh
Y2ggaW5jb21pbmcgdmlkZW8gZnJhbS4KKworICAgICAgICBEcml2ZS1ieSBmaXg6IEZpbGVzIGlu
IHRoZSB3aWxkIHdpbGwgaGF2ZSBpbmNvcnJlY3QgdmFsdWVzIGZvciB3aGV0aGVyIGEgZ2l2ZW4K
KyAgICAgICAgZnJhbWUgaXMgYSBrZXlmcmFtZSBvciBub3QuIFRydXN0IHRoZSBWUDkgaGVhZGVy
IHBhcnNlciByYXRoZXIgdGhhbiB0aGUgY29udGFpbmVyCisgICAgICAgIGluIHRoaXMgc2l0dWF0
aW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ01Db2xvclByaW1hcmll
cyk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DTVRyYW5zZmVyRnVuY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ01ZQ2JDUk1hdHJpeCk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZSk6CisKIDIwMjAtMDctMjYg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBNYWtl
IERlY29kZXJUZXN0IHJ1biBhZ2FpbnN0IC5tcDQgZmlsZXM7IGFkZCByYXRlLWxpbWl0aW5nLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKaW5kZXggZjJkMTk4MWE4MWMzM2IxOWFkNDM5YTY1MTNmMDM0OWU3M2My
N2ExNC4uODRkMjU4YjZkMzA5OTU3MWVlMjY1ZGMxY2ZhNGVmZWU2OTNmNTNkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDctMjkgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBIRFIgZGVjb2RlIGluIFNXIFZQOQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0OTI4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NjI4NDg0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgKiBwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwOgor
ICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oOgorCiAyMDIwLTA3LTIyICBDb25y
YWQgU2h1bHR6ICA8Y29ucmFkX3NodWx0ekBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIG1h
Y09TIFZlcnNpb24gbWFjcm9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0
aWVzLm1tCmluZGV4IDlmZjAzYjdkOTg0Mjk3OTdkNjAxZmFmMGQxNGE4NDY1ZTU4NTQ3OGYuLjU0
MzRlMzc1ODE5MTgxMmQ5ZjFhMzY0ZDJjMzhiYjdlNTViZmNjODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRp
bGl0aWVzLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNs
dWRlICJuYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmgiCiAjaW5jbHVkZSAidGhpcmRfcGFy
dHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZlcnRfZnJvbS5oIgorI2luY2x1ZGUgImxpYnl1
di9jcHVfaWQuaCIKKyNpbmNsdWRlICJsaWJ5dXYvcm93LmgiCiAjaW5jbHVkZSAiRnJhbWV3b3Jr
L0hlYWRlcnMvV2ViUlRDL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CkBAIC03NywxNCArNzksMTM1IEBAIHN0YXRpYyBib29sIENvcHlWaWRlb0ZyYW1lVG9QaXhl
bEJ1ZmZlcihjb25zdCB3ZWJydGM6Okk0MjBCdWZmZXJJbnRlcmZhY2UqIGZyYW1lCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKKy8vIE1lcmdlVVZQbGFuZV8xNiBtZXJnZXMgdHdvIHNlcGFyYXRlIFUg
YW5kIFYgcGxhbmVzIGludG8gYSBzaW5nbGUsIGludGVybGVhdmVkCisvLyBwbGFuZSwgd2hpbGUg
c2ltdWx0YW5lb3VzbHkgc2NhbGluZyB0aGUgb3V0cHV0LiBVc2UgJzY0JyBpbiB0aGUgc2NhbGUg
ZmllbGQgdG8KKy8vIHNoaWZ0IDEwLWJpdCBkYXRhIGZyb20gdGhlIExTQiBvZiB0aGUgMTYtYml0
IGludCB0byB0aGUgTVNCLgorLy8gTk9URTogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24gbGlieXV2
OjpNZXJnZVVWUGxhbmUuIElmIGxpYnl1diBldmVyIHN1cHBvcnRzCisvLyB0aGlzIG9wZXJhdGlv
biBkaXJlY3RseSwgd2Ugc2hvdWxkIHJlcGxhY2UgdGhlIGJlbG93IHdpdGggaXQuCisvLyBOT1RF
OiBsaWJ5dXYgb25seSBoYXMgYW4gb3BtaXRpemF0aW9uIG9mIE1lcmdlVVZSb3dfMTYgZm9yIEFW
WDIgaW50cmluc2ljcy4KKy8vIENhbGxpbmcgdGhpcyBtZXRob2Qgb24gYSBDUFUgd2l0aG91dCBB
VlgyIHdpbGwgZmFsbCBiYWNrIHRvIGEgc3RhbmRhcmQgQworLy8gaW1wbGVtZW50YXRpb24sIGFu
ZCB3aWxsIHByb2JhYmx5IGJlIHN1cGVyIHNsb3cuIEFkZCBuZXcgTWVyZ2VVVlJvd18xNgorLy8g
aW1wbGVtZW50YXRpb25zIGFzIHRoZXkgYmVjb21lIGF2YWlsYWJsZSBpbiBsaWJ5dXYuCit2b2lk
IE1lcmdlVVZQbGFuZV8xNihjb25zdCB1aW50MTZfdCogc3JjX3UsIGludCBzcmNfc3RyaWRlX3Us
IGNvbnN0IHVpbnQxNl90KiBzcmNfdiwgaW50IHNyY19zdHJpZGVfdiwgdWludDE2X3QqIGRzdF91
diwgaW50IGRzdF9zdHJpZGVfdXYsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHNjYWxlKSB7
CisgICAgdm9pZCAoKk1lcmdlVVZSb3dfMTYpKGNvbnN0IHVpbnQxNl90KiBzcmNfdSwgY29uc3Qg
dWludDE2X3QqIHNyY192LCB1aW50MTZfdCogZHN0X3V2LCBpbnQgc2NhbGUsIGludCB3aWR0aCkg
PSBsaWJ5dXY6Ok1lcmdlVVZSb3dfMTZfQzsKKyAgICAvLyBOZWdhdGl2ZSBoZWlnaHQgbWVhbnMg
aW52ZXJ0IHRoZSBpbWFnZS4KKyAgICBpZiAoaGVpZ2h0IDwgMCkgeworICAgICAgICBoZWlnaHQg
PSAtaGVpZ2h0OworICAgICAgICBkc3RfdXYgPSBkc3RfdXYgKyAoaGVpZ2h0IC0gMSkgKiBkc3Rf
c3RyaWRlX3V2OworICAgICAgICBkc3Rfc3RyaWRlX3V2ID0gLWRzdF9zdHJpZGVfdXY7CisgICAg
fQorICAgIC8vIENvYWxlc2NlIHJvd3MuCisgICAgaWYgKHNyY19zdHJpZGVfdSA9PSB3aWR0aCAm
JiBzcmNfc3RyaWRlX3YgPT0gd2lkdGggJiYgZHN0X3N0cmlkZV91diA9PSB3aWR0aCAqIDIpIHsK
KyAgICAgICAgd2lkdGggKj0gaGVpZ2h0OworICAgICAgICBoZWlnaHQgPSAxOworICAgICAgICBz
cmNfc3RyaWRlX3UgPSBzcmNfc3RyaWRlX3YgPSBkc3Rfc3RyaWRlX3V2ID0gMDsKKyAgICB9Cisj
aWYgZGVmaW5lZChIQVNfTUVSR0VVVlJPV18xNl9BVlgyKQorICAgIGlmIChsaWJ5dXY6OlRlc3RD
cHVGbGFnKGxpYnl1djo6a0NwdUhhc0FWWDIpKQorICAgICAgICBNZXJnZVVWUm93XzE2ID0gbGli
eXV2OjpNZXJnZVVWUm93XzE2X0FWWDI7CisjZW5kaWYKKworICAgIGZvciAoaW50IHkgPSAwOyB5
IDwgaGVpZ2h0OyArK3kpIHsKKyAgICAgICAgLy8gTWVyZ2UgYSByb3cgb2YgVSBhbmQgViBpbnRv
IGEgcm93IG9mIFVWLgorICAgICAgICBNZXJnZVVWUm93XzE2KHNyY191LCBzcmNfdiwgZHN0X3V2
LCBzY2FsZSwgd2lkdGgpOworICAgICAgICBzcmNfdSArPSBzcmNfc3RyaWRlX3UgLyBzaXplb2Yo
dWludDE2X3QpOworICAgICAgICBzcmNfdiArPSBzcmNfc3RyaWRlX3YgLyBzaXplb2YodWludDE2
X3QpOworICAgICAgICBkc3RfdXYgKz0gZHN0X3N0cmlkZV91diAvIHNpemVvZih1aW50MTZfdCk7
CisgICAgfQorfQorCisvLyBDb3B5UGxhbmVfMTYgd2lsbCBjb3B5IGEgcGxhbmUgb2YgMTYtYml0
IGRhdGEgZnJvbSBvbmUgbG9jYXRpb24gdG8gYW5vdGhlciwKKy8vIHdoaWxlIHNpbXVsdGFuZW91
c2x5IHNjYWxpbmcgdGhlIG91dHB1dC4gVXNlICc2NCcgaW4gdGhlIHNjYWxlIGZpZWxkIHRvCisv
LyBzaGlmdCAxMC1iaXQgZGF0YSBmcm9tIHRoZSBMU0Igb2YgYSAxNi1iaXQgaW50IHRvIHRoZSBN
U0IuCisvLyBOT1RFOiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvbiBNZXJnZVVWUGxhbmVfMTYgYWJv
dmUsIGJ1dCBvcGVyYXRlcyBvbiBhCisvLyBzaW5nbGUgcGxhbmUsIHJhdGVyIHRoYW4gaW50ZXJs
ZWF2aW5nIHR3byBwbGFuZXMuIElmIGxpYnl1diBldmVyIHN1cHBvcnRzCisvLyB0aGlzIG9wZXJh
dGlvbiBkaXJlY3RseSwgd2Ugc2hvdWxkIHJlcGxhY2UgdGhlIGJlbG93IHdpdGggaXQuCisvLyBO
T1RFOiBsaWJ5dXYgb25seSBoYXMgYW4gb3BtaXRpemF0aW9uIG9mIE1lcmdlVVZSb3dfMTYgZm9y
IEFWWDIgaW50cmluc2ljcy4KKy8vIENhbGxpbmcgdGhpcyBtZXRob2Qgb24gYSBDUFUgd2l0aG91
dCBBVlgyIHdpbGwgZmFsbCBiYWNrIHRvIGEgc3RhbmRhcmQgQworLy8gaW1wbGVtZW50YXRpb24s
IGFuZCB3aWxsIHByb2JhYmx5IGJlIHN1cGVyIHNsb3cuIEFkZCBuZXcgTWVyZ2VVVlJvd18xNgor
Ly8gaW1wbGVtZW50YXRpb25zIGFzIHRoZXkgYmVjb21lIGF2YWlsYWJsZSBpbiBsaWJ5dXYuCit2
b2lkIENvcHlQbGFuZV8xNihjb25zdCB1aW50MTZfdCogc3JjLCBpbnQgc3JjX3N0cmlkZSwgdWlu
dDE2X3QqIGRzdCwgaW50IGRzdF9zdHJpZGUsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHNj
YWxlKQoreworICAgIHZvaWQgKCpNdWx0aXBseVJvd18xNikoY29uc3QgdWludDE2X3QqIHNyY195
LCB1aW50MTZfdCogZHN0X3ksIGludCBzY2FsZSwgaW50IHdpZHRoKSA9IGxpYnl1djo6TXVsdGlw
bHlSb3dfMTZfQzsKKyAgICAvLyBOZWdhdGl2ZSBoZWlnaHQgbWVhbnMgaW52ZXJ0IHRoZSBpbWFn
ZS4KKyAgICBpZiAoaGVpZ2h0IDwgMCkgeworICAgICAgICBoZWlnaHQgPSAtaGVpZ2h0OworICAg
ICAgICBkc3QgPSBkc3QgKyAoaGVpZ2h0IC0gMSkgKiBkc3Rfc3RyaWRlOworICAgICAgICBkc3Rf
c3RyaWRlID0gLWRzdF9zdHJpZGU7CisgICAgfQorICAgIC8vIENvYWxlc2NlIHJvd3MuCisgICAg
aWYgKHNyY19zdHJpZGUgPT0gd2lkdGggJiYgZHN0X3N0cmlkZSA9PSB3aWR0aCAqIDIpIHsKKyAg
ICAgICAgd2lkdGggKj0gaGVpZ2h0OworICAgICAgICBoZWlnaHQgPSAxOworICAgICAgICBzcmNf
c3RyaWRlID0gZHN0X3N0cmlkZSA9IDA7CisgICAgfQorI2lmIGRlZmluZWQoSEFTX01FUkdFVVZS
T1dfMTZfQVZYMikKKyAgICBpZiAobGlieXV2OjpUZXN0Q3B1RmxhZyhsaWJ5dXY6OmtDcHVIYXNB
VlgyKSkKKyAgICAgICAgTXVsdGlwbHlSb3dfMTYgPSBsaWJ5dXY6Ok11bHRpcGx5Um93XzE2X0FW
WDI7CisjZW5kaWYKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAg
ICAgICAgTXVsdGlwbHlSb3dfMTYoc3JjLCBkc3QsIHNjYWxlLCB3aWR0aCk7CisgICAgICAgIHNy
YyArPSBzcmNfc3RyaWRlIC8gc2l6ZW9mKHVpbnQxNl90KTsKKyAgICAgICAgZHN0ICs9IGRzdF9z
dHJpZGUgLyBzaXplb2YodWludDE2X3QpOworICAgIH0KK30KKworc3RhdGljIGJvb2wgQ29weVZp
ZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGNvbnN0IHdlYnJ0Yzo6STAxMEJ1ZmZlckludGVyZmFjZSog
ZnJhbWUsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxfYnVmZmVyKQoreworICAgIFJUQ19EQ0hFQ0so
cGl4ZWxfYnVmZmVyKTsKKyAgICBSVENfRENIRUNLKENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1h
dFR5cGUocGl4ZWxfYnVmZmVyKSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBs
YW5hclZpZGVvUmFuZ2UgfHwgQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbF9i
dWZmZXIpID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdl
KTsKKyAgICBSVENfRENIRUNLX0VRKENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVs
X2J1ZmZlciwgMCksIHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWUtPmhlaWdodCgpKSk7CisgICAg
UlRDX0RDSEVDS19FUShDVlBpeGVsQnVmZmVyR2V0V2lkdGhPZlBsYW5lKHBpeGVsX2J1ZmZlciwg
MCksIHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWUtPndpZHRoKCkpKTsKKworICAgIGlmIChDVlBp
eGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNzKHBpeGVsX2J1ZmZlciwgMCkgIT0ga0NWUmV0dXJuU3Vj
Y2VzcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBzcmNfeSA9IGNvbnN0X2Nh
c3Q8dWludDE2X3QqPihmcmFtZS0+RGF0YVkoKSk7CisgICAgYXV0byBzcmNfdSA9IGNvbnN0X2Nh
c3Q8dWludDE2X3QqPihmcmFtZS0+RGF0YVUoKSk7CisgICAgYXV0byBzcmNfdiA9IGNvbnN0X2Nh
c3Q8dWludDE2X3QqPihmcmFtZS0+RGF0YVYoKSk7CisgICAgYXV0byBzcmNfd2lkdGhfeSA9IGZy
YW1lLT53aWR0aCgpOworICAgIGF1dG8gc3JjX2hlaWdodF95ID0gZnJhbWUtPmhlaWdodCgpOwor
ICAgIGF1dG8gc3JjX3N0cmlkZV95ID0gZnJhbWUtPlN0cmlkZVkoKSAqIHNpemVvZih1aW50MTZf
dCk7CisgICAgYXV0byBzcmNfd2lkdGhfdXYgPSBmcmFtZS0+Q2hyb21hV2lkdGgoKTsKKyAgICBh
dXRvIHNyY19oZWlnaHRfdXYgPSBmcmFtZS0+Q2hyb21hSGVpZ2h0KCk7CisgICAgYXV0byBzcmNf
c3RyaWRlX3UgPSBmcmFtZS0+U3RyaWRlVSgpICogc2l6ZW9mKHVpbnQxNl90KTsKKyAgICBhdXRv
IHNyY19zdHJpZGVfdiA9IGZyYW1lLT5TdHJpZGVWKCkgKiBzaXplb2YodWludDE2X3QpOworCisg
ICAgYXV0byogZHN0X3kgPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oQ1ZQaXhlbEJ1ZmZl
ckdldEJhc2VBZGRyZXNzT2ZQbGFuZShwaXhlbF9idWZmZXIsIDApKTsKKyAgICBhdXRvIGRzdF9z
dHJpZGVfeSA9IENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09mUGxhbmUocGl4ZWxfYnVmZmVy
LCAwKTsKKyAgICBhdXRvIGRzdF93aWR0aF95ID0gQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFu
ZShwaXhlbF9idWZmZXIsIDApOworICAgIGF1dG8gZHN0X2hlaWdodF95ID0gQ1ZQaXhlbEJ1ZmZl
ckdldEhlaWdodE9mUGxhbmUocGl4ZWxfYnVmZmVyLCAwKTsKKworICAgIGF1dG8qIGRzdF91diA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NP
ZlBsYW5lKHBpeGVsX2J1ZmZlciwgMSkpOworICAgIGF1dG8gZHN0X3N0cmlkZV91diA9IENWUGl4
ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09mUGxhbmUocGl4ZWxfYnVmZmVyLCAxKTsKKyAgICBhdXRv
IGRzdF93aWR0aF91diA9IENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUocGl4ZWxfYnVmZmVy
LCAxKTsKKyAgICBhdXRvIGRzdF9oZWlnaHRfdXYgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQ
bGFuZShwaXhlbF9idWZmZXIsIDEpOworCisgICAgaWYgKHNyY193aWR0aF95ICE9IGRzdF93aWR0
aF95CisgICAgICAgIHx8IHNyY19oZWlnaHRfeSAhPSBkc3RfaGVpZ2h0X3kKKyAgICAgICAgfHwg
c3JjX3dpZHRoX3V2ICE9IGRzdF93aWR0aF91dgorICAgICAgICB8fCBzcmNfaGVpZ2h0X3V2ICE9
IGRzdF9oZWlnaHRfdXYpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENvcHlQbGFuZV8x
NihzcmNfeSwgc3JjX3N0cmlkZV95LCBkc3RfeSwgZHN0X3N0cmlkZV95LCBkc3Rfd2lkdGhfeSwg
ZHN0X2hlaWdodF95LCA2NCk7CisgICAgTWVyZ2VVVlBsYW5lXzE2KHNyY191LCBzcmNfc3RyaWRl
X3UsIHNyY192LCBzcmNfc3RyaWRlX3YsIGRzdF91diwgZHN0X3N0cmlkZV91diwgZHN0X3dpZHRo
X3V2LCBkc3RfaGVpZ2h0X3V2LCA2NCk7CisKKyAgICBDVlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFk
ZHJlc3MocGl4ZWxfYnVmZmVyLCAwKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgY29u
c3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90KT4mIG1ha2VQ
aXhlbEJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCktPnR5cGUo
KSAhPSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKSB7Ci0gICAgICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxjb25zdCBJNDIwQnVmZmVySW50ZXJmYWNlPiBidWZmZXIgPSBmcmFtZS52aWRl
b19mcmFtZV9idWZmZXIoKS0+R2V0STQyMCgpOworICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0g
bWFrZVBpeGVsQnVmZmVyKGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLT53aWR0aCgpLCBmcmFt
ZS52aWRlb19mcmFtZV9idWZmZXIoKS0+aGVpZ2h0KCkpOworICAgICAgICBpZiAoIXBpeGVsQnVm
ZmVyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byBwaXhlbEJ1
ZmZlciA9IG1ha2VQaXhlbEJ1ZmZlcihidWZmZXItPndpZHRoKCksIGJ1ZmZlci0+aGVpZ2h0KCkp
OwotICAgICAgICBpZiAocGl4ZWxCdWZmZXIpCisgICAgICAgIGlmIChmcmFtZS52aWRlb19mcmFt
ZV9idWZmZXIoKS0+dHlwZSgpID09IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJNDIwKQogICAg
ICAgICAgICAgQ29weVZpZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGZyYW1lLnZpZGVvX2ZyYW1lX2J1
ZmZlcigpLT5HZXRJNDIwKCksIHBpeGVsQnVmZmVyKTsKKyAgICAgICAgZWxzZSBpZiAoZnJhbWUu
dmlkZW9fZnJhbWVfYnVmZmVyKCktPnR5cGUoKSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjpr
STAxMCkKKyAgICAgICAgICAgIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcihmcmFtZS52aWRl
b19mcmFtZV9idWZmZXIoKS0+R2V0STAxMCgpLCBwaXhlbEJ1ZmZlcik7CiAgICAgICAgIHJldHVy
biBwaXhlbEJ1ZmZlcjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktp
dFZQOURlY29kZXIuY3BwCmluZGV4IGU5NGI5NzZmOGExN2FjMmMxZWI1YmU3YzcyMDY1NTg1NzU5
N2E0NTguLjExNDg1ODA2N2M0YTFiZjVlNjAwZmFlNjk1YTM3ZjBkOTY3N2RhY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VlA5RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDlEZWNvZGVyLmNwcApAQCAtNTgsNiArNTgs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJyZW50RnJhbWUoVlRWaWRlb0RlY29kZXJGcmFt
ZSBjdXJyZW50RnJhbWUpIHsgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7IH0KICAgICBP
U1N0YXR1cyBkZWNvZGVyRmFpbGVkKGludCBlcnJvcik7CiAKKyAgICB2b2lkIGNyZWF0ZVBpeGVs
QnVmZmVyUG9vbEZvckZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYpOwor
CiBwcml2YXRlOgogICAgIGludDMyX3QgRGVjb2RlZChWaWRlb0ZyYW1lJikgZmluYWw7CiAgICAg
aW50MzJfdCBEZWNvZGVkKFZpZGVvRnJhbWUmLCBpbnQ2NF90IGRlY29kZV90aW1lX21zKSBmaW5h
bDsKQEAgLTE2OSw2ICsxNzEsNyBAQCBPU1N0YXR1cyBzdGFydFZQOURlY29kZXJTZXNzaW9uKFZU
VmlkZW9EZWNvZGVyUmVmIGluc3RhbmNlLCBWVFZpZGVvRGVjb2RlclNlc3NpbwogCiAgICAgZGVj
b2Rlci0+bV9pbnN0YW5jZSA9IHN0ZDo6bWFrZV91bmlxdWU8VlA5RGVjb2RlckltcGw+KCk7CiAg
ICAgZGVjb2Rlci0+bV9yZWNlaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0VlA5RGVjb2Rl
clJlY2VpdmVyPihzZXNzaW9uKTsKKyAgICBkZWNvZGVyLT5tX3JlY2VpdmVyLT5jcmVhdGVQaXhl
bEJ1ZmZlclBvb2xGb3JGb3JtYXREZXNjcmlwdGlvbihmb3JtYXREZXNjcmlwdGlvbik7CiAKICAg
ICBkZWNvZGVyLT5tX2luc3RhbmNlLT5SZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2soZGVj
b2Rlci0+bV9yZWNlaXZlci5nZXQoKSk7CiAKQEAgLTI1Myw2ICsyNTYsOTMgQEAgV2ViS2l0VlA5
RGVjb2RlclJlY2VpdmVyOjp+V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyKCkKICAgICAgICAgQ0ZS
ZWxlYXNlKG1fcGl4ZWxCdWZmZXJQb29sKTsKIH0KIAordm9pZCBXZWJLaXRWUDlEZWNvZGVyUmVj
ZWl2ZXI6OmNyZWF0ZVBpeGVsQnVmZmVyUG9vbEZvckZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0
RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCit7CisgICAgLy8gQ29yZUFuaW1hdGlv
biBkb2Vzbid0IHN1cHBvcnQgZnVsbC1wbGFuYXIgWVVWLCBzbyB3ZSBtdXN0IGNvbnZlcnQgdGhl
IGJ1ZmZlcnMgb3V0cHV0CisgICAgLy8gYnkgbGlidnB4IHRvIGJpLXBsYW5hciBZVVYuIENyZWF0
ZSBwaXhlbCBidWZmZXIgYXR0cmlidXRlcyBhbmQgZ2l2ZSB0aG9zZSB0byB0aGUKKyAgICAvLyBk
ZWNvZGVyIHNlc3Npb24gZm9yIHVzZSBpbiBjcmVhdGluZyBpdHMgb3duIGludGVybmFsIENWUGl4
ZWxCdWZmZXJQb29sLCB3aGljaCB3ZQorICAgIC8vIHdpbGwgdXNlIHBvc3QtZGVjb2RlLgorICAg
IGJvb2wgaXNGdWxsUmFuZ2UgPSBmYWxzZTsKKyAgICBib29sIGlzMTBCaXQgPSBmYWxzZTsKKwor
ICAgIGRvIHsKKyAgICAgICAgYXV0byBleHRlbnNpb25zID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdl
dEV4dGVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOworICAgICAgICBpZiAoIWV4dGVuc2lvbnMp
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBDRlR5cGVSZWYgZXh0ZW5zaW9uQXRvbXMg
PSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25zLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4
dGVuc2lvbl9TYW1wbGVEZXNjcmlwdGlvbkV4dGVuc2lvbkF0b21zKTsKKyAgICAgICAgaWYgKCFl
eHRlbnNpb25BdG9tcyB8fCBDRkdldFR5cGVJRChleHRlbnNpb25BdG9tcykgIT0gQ0ZEaWN0aW9u
YXJ5R2V0VHlwZUlEKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIGNvbmZp
Z3VyYXRpb25SZWNvcmQgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZh
bHVlKChDRkRpY3Rpb25hcnlSZWYpZXh0ZW5zaW9uQXRvbXMsIENGU1RSKCJ2cGNDIikpKTsKKyAg
ICAgICAgaWYgKCFjb25maWd1cmF0aW9uUmVjb3JkIHx8IENGR2V0VHlwZUlEKGNvbmZpZ3VyYXRp
b25SZWNvcmQpICE9IENGRGF0YUdldFR5cGVJRCgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkU2l6ZSA9IENGRGF0YUdldExlbmd0aChjb25m
aWd1cmF0aW9uUmVjb3JkKTsKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb25SZWNvcmRTaXplIDwg
MTIpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNv
cmREYXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0cihjb25maWd1cmF0aW9uUmVjb3JkKTsKKyAgICAgICAg
YXV0byBiaXREZXB0aENocm9tYUFuZFJhbmdlID0gKihjb25maWd1cmF0aW9uUmVjb3JkRGF0YSAr
IDYpOworCisgICAgICAgIGlmICgoYml0RGVwdGhDaHJvbWFBbmRSYW5nZSA+PiA0KSA9PSAxMCkK
KyAgICAgICAgICAgIGlzMTBCaXQgPSB0cnVlOworCisgICAgICAgIGlmIChiaXREZXB0aENocm9t
YUFuZFJhbmdlICYgMHgxKQorICAgICAgICAgICAgaXNGdWxsUmFuZ2UgPSB0cnVlOworICAgIH0g
d2hpbGUgKGZhbHNlKTsKKworICAgIE9TVHlwZSBwaXhlbEZvcm1hdDsKKyAgICBpZiAoaXMxMEJp
dCkKKyAgICAgICAgcGl4ZWxGb3JtYXQgPSBpc0Z1bGxSYW5nZSA/IGtDVlBpeGVsRm9ybWF0VHlw
ZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlIDoga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlw
Q2JDcjEwQmlQbGFuYXJWaWRlb1JhbmdlOworICAgIGVsc2UKKyAgICAgICAgcGl4ZWxGb3JtYXQg
PSBpc0Z1bGxSYW5nZSA/IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxs
UmFuZ2UgOiBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZTsK
KworICAgIGF1dG8gY3JlYXRlUGl4ZWxGb3JtYXRBdHRyaWJ1dGVzID0gW10gKE9TVHlwZSBwaXhl
bEZvcm1hdCwgaW50MzJfdCBib3JkZXJQaXhlbHMpIHsKKyAgICAgICAgYXV0byBjcmVhdGVOdW1i
ZXIgPSBbXSAoaW50MzJfdCBmb3JtYXQpIC0+IENGTnVtYmVyUmVmIHsKKyAgICAgICAgICAgIHJl
dHVybiBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50MzJU
eXBlLCAmZm9ybWF0KTsKKyAgICAgICAgfTsKKyAgICAgICAgYXV0byBjZlBpeGVsRm9ybWF0cyA9
IENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDIsICZrQ0ZUeXBlQXJy
YXlDYWxsQmFja3MpOworICAgICAgICBhdXRvIGZvcm1hdE51bWJlciA9IGNyZWF0ZU51bWJlcihw
aXhlbEZvcm1hdCk7CisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjZlBpeGVsRm9ybWF0cywg
Zm9ybWF0TnVtYmVyKTsKKyAgICAgICAgQ0ZSZWxlYXNlKGZvcm1hdE51bWJlcik7CisKKyAgICAg
ICAgYXV0byBib3JkZXJQaXhlbHNWYWx1ZSA9IGNyZWF0ZU51bWJlcigzMik7CisKKyAgICAgICAg
Y29uc3Qgdm9pZCoga2V5c1tdID0geworICAgICAgICAgICAga0NWUGl4ZWxCdWZmZXJQaXhlbEZv
cm1hdFR5cGVLZXksCisgICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzTGVm
dEtleSwKKyAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNSaWdodEtleSwK
KyAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNUb3BLZXksCisgICAgICAg
ICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzQm90dG9tS2V5LAorICAgICAgICB9Owor
ICAgICAgICBjb25zdCB2b2lkKiB2YWx1ZXNbXSA9IHsKKyAgICAgICAgICAgIGNmUGl4ZWxGb3Jt
YXRzLAorICAgICAgICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUsCisgICAgICAgICAgICBib3JkZXJQ
aXhlbHNWYWx1ZSwKKyAgICAgICAgICAgIGJvcmRlclBpeGVsc1ZhbHVlLAorICAgICAgICAgICAg
Ym9yZGVyUGl4ZWxzVmFsdWUsCisgICAgICAgIH07CisgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9
IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIHN0
ZDo6c2l6ZShrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgICAgIENGUmVsZWFzZShib3JkZXJQaXhlbHNW
YWx1ZSk7CisgICAgICAgIENGUmVsZWFzZShjZlBpeGVsRm9ybWF0cyk7CisgICAgICAgIHJldHVy
biBhdHRyaWJ1dGVzOworICAgIH07CisKKyAgICBhdXRvIHBpeGVsQnVmZmVyQXR0cmlidXRlcyA9
IGNyZWF0ZVBpeGVsRm9ybWF0QXR0cmlidXRlcyhwaXhlbEZvcm1hdCwgMzIpOworICAgIFZURGVj
b2RlclNlc3Npb25TZXRQaXhlbEJ1ZmZlckF0dHJpYnV0ZXMobV9zZXNzaW9uLCBwaXhlbEJ1ZmZl
ckF0dHJpYnV0ZXMpOworICAgIENGUmVsZWFzZShwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOworCisg
ICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKSB7CisgICAgICAgIENGUmVsZWFzZShtX3BpeGVsQnVm
ZmVyUG9vbCk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJQb29sID0gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBtX3BpeGVsQnVmZmVyUG9vbCA9IFZURGVjb2RlclNlc3Npb25HZXRQaXhlbEJ1ZmZlclBv
b2wobV9zZXNzaW9uKTsKKyAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpCisgICAgICAgIENGUmV0
YWluKG1fcGl4ZWxCdWZmZXJQb29sKTsKK30KKwogT1NTdGF0dXMgV2ViS2l0VlA5RGVjb2RlclJl
Y2VpdmVyOjpkZWNvZGVyRmFpbGVkKGludCBlcnJvcikKIHsKICAgICBPU1N0YXR1cyB2dEVycm9y
ID0ga1ZUVmlkZW9EZWNvZGVyQmFkRGF0YUVycjsKQEAgLTI3MSwzMyArMzYxLDE3IEBAIE9TU3Rh
dHVzIFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZChpbnQgZXJyb3IpCiAK
IGludDMyX3QgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZy
YW1lKQogewotICAgIENWUGl4ZWxCdWZmZXJSZWYgbmV3UGl4ZWxCdWZmZXIgeyBudWxscHRyIH07
Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lLCBbdGhp
cywgJm5ld1BpeGVsQnVmZmVyXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpIC0+IENWUGl4
ZWxCdWZmZXJSZWYgewotICAgICAgICBpZiAoIW1fcGl4ZWxCdWZmZXJQb29sIHx8IG1fcGl4ZWxC
dWZmZXJXaWR0aCAhPSB3aWR0aCB8fCBtX3BpeGVsQnVmZmVySGVpZ2h0ICE9IGhlaWdodCkgewot
ICAgICAgICAgICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKQotICAgICAgICAgICAgICAgIENGUmVs
ZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7Ci0gICAgICAgICAgICBtX3BpeGVsQnVmZmVyUG9vbCA9
IGNyZWF0ZVBpeGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgICAgIGlmICgh
bV9waXhlbEJ1ZmZlclBvb2wpIHsKLSAgICAgICAgICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8
PCAiVlA5IGRlY29kZXI6IHVuYWJsZSB0byBjcmVhdGUgcGl4ZWwgYnVmZmVyIHBvb2wiOwotICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
bV9waXhlbEJ1ZmZlcldpZHRoID0gd2lkdGg7Ci0gICAgICAgICAgICBtX3BpeGVsQnVmZmVySGVp
Z2h0ID0gaGVpZ2h0OwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVs
QnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4ZWxC
dWZmZXJQb29sLCAmbmV3UGl4ZWxCdWZmZXIpOwotICAgICAgICBpZiAoc3RhdHVzICE9IGtDVlJl
dHVyblN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDkgZGVj
b2RlcjogdW5hYmxlIHRvIGNyZWF0ZSBwaXhlbCBidWZmZXIgZnJvbSBwb29sIjsKLSAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG5ld1BpeGVs
QnVmZmVyOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFt
ZSwgW3RoaXNdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkgLT4gQ1ZQaXhlbEJ1ZmZlclJl
ZiB7CisgICAgICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBudWxscHRyOworICAg
ICAgICBpZiAoQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGVQaXhlbEJ1ZmZlcihrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBtX3BpeGVsQnVmZmVyUG9vbCwgJnBpeGVsQnVmZmVyKSA9PSBrQ1ZSZXR1cm5TdWNj
ZXNzKQorICAgICAgICAgICAgcmV0dXJuIHBpeGVsQnVmZmVyOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9KTsKIAogICAgIFZURGVjb2RlclNlc3Npb25FbWl0RGVjb2RlZEZyYW1lKG1f
c2Vzc2lvbiwgbV9jdXJyZW50RnJhbWUsIHBpeGVsQnVmZmVyID8gbm9FcnIgOiAtMSwgMCwgcGl4
ZWxCdWZmZXIpOwogICAgIG1fY3VycmVudEZyYW1lID0gbnVsbHB0cjsKLSAgICBpZiAobmV3UGl4
ZWxCdWZmZXIpCi0gICAgICAgIENGUmVsZWFzZShuZXdQaXhlbEJ1ZmZlcik7CisgICAgaWYgKHBp
eGVsQnVmZmVyKQorICAgICAgICBDRlJlbGVhc2UocGl4ZWxCdWZmZXIpOwogICAgIHJldHVybiAw
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsu
Y3BwCmluZGV4IDkyZWE3NjhmZmRlMThlZWJmMTQ4NjRjOTdmMTQ5OTI3MmIwNGY5NzUuLmM3NjEy
Y2I1Y2NiNzc3OGU0MzFlYzVlY2MyOTY3M2UxMjQwNDkzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCkBAIC02NCw2ICs2NCwxNiBAQCBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwg
Q01UaW1lUmFuZ2VNYWtlLCBDTVRpbQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNVGltZVJhbmdlRXF1YWwsIEJvb2xlYW4sIChDTVRp
bWVSYW5nZSByYW5nZTEsIENNVGltZVJhbmdlIHJhbmdlMiksIChyYW5nZTEsIHJhbmdlMiksIFBB
TF9FWFBPUlQpCiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNjcmlw
dGlvbkV4dGVuc2lvbkF0b21zLCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19D
T05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXRE
ZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX0RDSV9QMywgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQp
CitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRp
YSwga0NNRm9ybWF0RGVzY3JpcHRpb25Db2xvclByaW1hcmllc19JVFVfUl8yMDIwLCBDRlN0cmlu
Z1JlZiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX1Az
X0Q2NSwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRl
bnNpb25fRnVsbFJhbmdlVmlkZW8sIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1h
dERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9JVFVfUl8yMDIwLCBDRlN0cmluZ1JlZiwgUEFM
X0VYUE9SVCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
Q29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fSVRVX1JfMjEw
MF9ITEcsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9T
T1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0aW9uVHJh
bnNmZXJGdW5jdGlvbl9MaW5lYXIsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1h
dERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9TTVBURV9TVF8yMDg0X1BRLCBDRlN0cmluZ1Jl
ZiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fU01Q
VEVfU1RfNDI4XzEsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0
aW9uWUNiQ3JNYXRyaXhfSVRVX1JfMjAyMCwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQpCiBTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NN
VGV4dE1hcmt1cEFsaWdubWVudFR5cGVfRW5kLCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKIFNP
RlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBr
Q01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9NaWRkbGUsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JU
KQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVk
aWEsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX1N0YXJ0LCBDRlN0cmluZ1JlZiwgUEFMX0VY
UE9SVCkKQEAgLTE3Niw3ICsxODYsNyBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01DbG9ja0dldFRpbWUsIENNVGltZQogU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNU2Ft
cGxlQnVmZmVyQ2FsbEZvckVhY2hTYW1wbGUsIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYg
c2J1ZiwgT1NTdGF0dXMgKCogQ01TQU1QTEVCVUZGRVJDQUxMX05PRVNDQVBFIGNhbGxiYWNrKSgg
Q01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBDTUl0ZW1Db3VudCBpbmRleCwgdm9pZCAq
cmVmY29uKSwgdm9pZCAqcmVmY29uKSwgKHNidWYsIGNhbGxiYWNrLCByZWZjb24pLCBQQUxfRVhQ
T1JUKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3Jl
TWVkaWEsIENNU2FtcGxlQnVmZmVyQ2FsbEJsb2NrRm9yRWFjaFNhbXBsZSwgT1NTdGF0dXMsIChD
TVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBPU1N0YXR1cyAoXiBDTVNBTVBMRUJVRkZFUkNBTExfTk9F
U0NBUEUgaGFuZGxlcikoQ01TYW1wbGVCdWZmZXJSZWYsIENNSXRlbUNvdW50KSksIChzYnVmLCBo
YW5kbGVyKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09V
UkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVu
c2lvbl9Qcm90ZWN0ZWRDb250ZW50T3JpZ2luYWxGb3JtYXQsIENGU3RyaW5nUmVmLCBQQUxfRVhQ
T1JUKQotCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX3NS
R0IsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2Yv
Q29yZU1lZGlhU29mdExpbmsuaAppbmRleCA4NDI5MzMyOTIzMTRkODAzYjJkZjE2Mzk0ZTJiYmRi
ODZhZDU3ODEzLi44ZGExYWEzNWEyOTIzNmFiNTdhNzMwNDhlYmQ5NjZmMjRkY2U1ZjkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCkBAIC04Niw4
ICs4NiwzMCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
Q01UaW1lUmFuZ2VFcXVhbCwgQm9vbGVhbiwgKENNVGltZQogCiBTT0ZUX0xJTktfQ09OU1RBTlRf
Rk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25f
U2FtcGxlRGVzY3JpcHRpb25FeHRlbnNpb25BdG9tcywgQ0ZTdHJpbmdSZWYpCiAjZGVmaW5lIGtD
TUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRv
bXMgZ2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNj
cmlwdGlvbkV4dGVuc2lvbkF0b21zKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBB
TCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX0RDSV9QMywg
Q0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZv
cm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfRENJX1AzIGdldF9Db3JlTWVkaWFfa0NNRm9y
bWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25Db2xvclByaW1hcmll
c19EQ0lfUDMoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEs
IGtDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfSVRVX1JfMjAyMCwgQ0ZTdHJpbmdS
ZWYpCisjZGVmaW5lIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2Ny
aXB0aW9uQ29sb3JQcmltYXJpZXNfSVRVX1JfMjAyMCBnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERl
c2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfSVRV
X1JfMjAyMCgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
a0NNRm9ybWF0RGVzY3JpcHRpb25Db2xvclByaW1hcmllc19QM19ENjUsIENGU3RyaW5nUmVmKQor
I2RlZmluZSBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlv
bkNvbG9yUHJpbWFyaWVzX1AzX0Q2NSBnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9u
RXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfUDNfRDY1KCkKK1NP
RlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNj
cmlwdGlvbkV4dGVuc2lvbl9GdWxsUmFuZ2VWaWRlbywgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtD
TUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9u
X0Z1bGxSYW5nZVZpZGVvIGdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNp
b25fa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fRnVsbFJhbmdlVmlkZW8oKQorU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0
aW9uVHJhbnNmZXJGdW5jdGlvbl9JVFVfUl8yMDIwLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NN
Rm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1
bmN0aW9uX0lUVV9SXzIwMjAgZ2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVu
c2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fSVRVX1JfMjAyMCgpCitT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVz
Y3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzIxMDBfSExHLCBDRlN0cmluZ1JlZikKKyNk
ZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25U
cmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzIxMDBfSExHIGdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVz
Y3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX0lU
VV9SXzIxMDBfSExHKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1l
ZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fTGluZWFyLCBDRlN0cmlu
Z1JlZikKKyNkZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVz
Y3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX0xpbmVhciBnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERl
c2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9M
aW5lYXIoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtD
TUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9TTVBURV9TVF8yMDg0X1BRLCBDRlN0
cmluZ1JlZikKKyNkZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0
RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NNUFRFX1NUXzIwODRfUFEgZ2V0X0NvcmVNZWRp
YV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5z
ZmVyRnVuY3Rpb25fU01QVEVfU1RfMjA4NF9QUSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hF
QURFUihQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9u
X1NNUFRFX1NUXzQyOF8xLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRp
b25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NNUFRFX1NU
XzQyOF8xIGdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9y
bWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NNUFRFX1NUXzQyOF8xKCkKK1NPRlRfTElO
S19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlv
bllDYkNyTWF0cml4X0lUVV9SXzIwMjAsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ01Gb3JtYXRE
ZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvbllDYkNyTWF0cml4X0lUVV9S
XzIwMjAgZ2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3Jt
YXREZXNjcmlwdGlvbllDYkNyTWF0cml4X0lUVV9SXzIwMjAoKQogU09GVF9MSU5LX0NPTlNUQU5U
X01BWV9GQUlMX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0aW9u
RXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCwgQ0ZTdHJpbmdSZWYpCiAj
ZGVmaW5lIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmln
aW5hbEZvcm1hdCBnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1By
b3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgpCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZB
SUxfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2Zl
ckZ1bmN0aW9uX3NSR0IsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ01Gb3JtYXREZXNjcmlwdGlv
bkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fc1JHQiBnZXRf
Q29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0
aW9uVHJhbnNmZXJGdW5jdGlvbl9zUkdCKCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9FbmQsIENGU3RyaW5n
UmVmKQogI2RlZmluZSBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9FbmQgZ2V0X0NvcmVNZWRp
YV9rQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9FbmQoKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRs
ZSwgQ0ZTdHJpbmdSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9D
b3JlVmlkZW9Tb2Z0TGluay5jcHAKaW5kZXggOGZlMGY3MGVkYTk2N2IxZjk2YjY1MTUwZDNjODg2
N2U5NWE2NWVjNy4uZDdmMjhjODVjYTllZWY0YjczZjg1NzhlYTA5MmM1MWEwZDhiZWRjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5r
LmNwcApAQCAtNjAsNiArNjAsMTMgQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2Vi
Q29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4S2V5LAogU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlcllD
YkNyTWF0cml4X0lUVV9SXzcwOV8yLCBDRlN0cmluZ1JlZikKIFNPRlRfTElOS19DT05TVEFOVF9G
T1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywga0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9J
VFVfUl82MDFfNCwgQ0ZTdHJpbmdSZWYpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShX
ZWJDb3JlLCBDb3JlVmlkZW8sIGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhfU01QVEVfMjQwTV8x
OTk1LCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUs
IENvcmVWaWRlbywga0NWSW1hZ2VCdWZmZXJDb2xvclByaW1hcmllc19FQlVfMzIxMywgQ0ZTdHJp
bmdSZWYpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlVmlkZW8s
IGtDVkltYWdlQnVmZmVyQ29sb3JQcmltYXJpZXNfSVRVX1JfNzA5XzIsIENGU3RyaW5nUmVmKQor
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFn
ZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX1NNUFRFX0MsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0NP
TlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlckNvbG9y
UHJpbWFyaWVzS2V5LCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNF
KFdlYkNvcmUsIENvcmVWaWRlbywga0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0aW9uS2V5LCBD
RlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVW
aWRlbywga0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzcwOV8yLCBDRlN0cmlu
Z1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywg
a0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0aW9uX1NNUFRFXzI0ME1fMTk5NSwgQ0ZTdHJpbmdS
ZWYpCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJDb3JlLCBDb3Jl
VmlkZW8sIGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhfRENJX1AzLCBDRlN0cmluZ1JlZikKIFNP
RlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywg
a0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9QM19ENjUsIENGU3RyaW5nUmVmKQogU09GVF9MSU5L
X0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFn
ZUJ1ZmZlcllDYkNyTWF0cml4X0lUVV9SXzIwMjAsIENGU3RyaW5nUmVmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmgKaW5kZXggYWNkZDI0
MjkzZTVlNTkyMjQwYzY4ZTRmZGY4OGFiNDI0YzZlMWIxZC4uYWU2Y2NkN2IzZjUyOWFhNGY0NThl
ZjM5ODU5ZDFmYWFkZjAwNDc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvQ29yZVZpZGVvU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5oCkBAIC05NSw2ICs5NSwyMCBAQCBTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlVmlkZW8sIGtDVlBpeGVsQnVmZmVyQ0dCaXRt
YXBDb250ZXh0QwogI2RlZmluZSBrQ1ZQaXhlbEJ1ZmZlckNHQml0bWFwQ29udGV4dENvbXBhdGli
aWxpdHlLZXkgZ2V0X0NvcmVWaWRlb19rQ1ZQaXhlbEJ1ZmZlckNHQml0bWFwQ29udGV4dENvbXBh
dGliaWxpdHlLZXkoKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29y
ZVZpZGVvLCBrQ1ZQaXhlbEJ1ZmZlckNHSW1hZ2VDb21wYXRpYmlsaXR5S2V5LCBDRlN0cmluZ1Jl
ZikKICNkZWZpbmUga0NWUGl4ZWxCdWZmZXJDR0ltYWdlQ29tcGF0aWJpbGl0eUtleSBnZXRfQ29y
ZVZpZGVvX2tDVlBpeGVsQnVmZmVyQ0dJbWFnZUNvbXBhdGliaWxpdHlLZXkoKQorU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlckNv
bG9yUHJpbWFyaWVzX0VCVV8zMjEzLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NWSW1hZ2VCdWZm
ZXJDb2xvclByaW1hcmllc19FQlVfMzIxMyBnZXRfQ29yZVZpZGVvX2tDVkltYWdlQnVmZmVyQ29s
b3JQcmltYXJpZXNfRUJVXzMyMTMoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2Vi
Q29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX0lUVV9SXzcwOV8y
LCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NWSW1hZ2VCdWZmZXJDb2xvclByaW1hcmllc19JVFVf
Ul83MDlfMiBnZXRfQ29yZVZpZGVvX2tDVkltYWdlQnVmZmVyQ29sb3JQcmltYXJpZXNfSVRVX1Jf
NzA5XzIoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVv
LCBrQ1ZJbWFnZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX1NNUFRFX0MsIENGU3RyaW5nUmVmKQorI2Rl
ZmluZSBrQ1ZJbWFnZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX1NNUFRFX0MgZ2V0X0NvcmVWaWRlb19r
Q1ZJbWFnZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX1NNUFRFX0MoKQorU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlckNvbG9yUHJpbWFy
aWVzS2V5LCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NWSW1hZ2VCdWZmZXJDb2xvclByaW1hcmll
c0tleSBnZXRfQ29yZVZpZGVvX2tDVkltYWdlQnVmZmVyQ29sb3JQcmltYXJpZXNLZXkoKQorU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1
ZmZlclRyYW5zZmVyRnVuY3Rpb25LZXksIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ1ZJbWFnZUJ1
ZmZlclRyYW5zZmVyRnVuY3Rpb25LZXkgZ2V0X0NvcmVWaWRlb19rQ1ZJbWFnZUJ1ZmZlclRyYW5z
ZmVyRnVuY3Rpb25LZXkoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwg
Q29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlclRyYW5zZmVyRnVuY3Rpb25fSVRVX1JfNzA5XzIsIENG
U3RyaW5nUmVmKQorI2RlZmluZSBrQ1ZJbWFnZUJ1ZmZlclRyYW5zZmVyRnVuY3Rpb25fSVRVX1Jf
NzA5XzIgZ2V0X0NvcmVWaWRlb19rQ1ZJbWFnZUJ1ZmZlclRyYW5zZmVyRnVuY3Rpb25fSVRVX1Jf
NzA5XzIoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVv
LCBrQ1ZJbWFnZUJ1ZmZlclRyYW5zZmVyRnVuY3Rpb25fU01QVEVfMjQwTV8xOTk1LCBDRlN0cmlu
Z1JlZikKKyNkZWZpbmUga0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0aW9uX1NNUFRFXzI0ME1f
MTk5NSBnZXRfQ29yZVZpZGVvX2tDVkltYWdlQnVmZmVyVHJhbnNmZXJGdW5jdGlvbl9TTVBURV8y
NDBNXzE5OTUoKQogCiAjaWYgVVNFKE9QRU5HTF9FUykKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZPcGVuR0xFU1RleHR1cmVDYWNoZUNyZWF0ZSwg
Q1ZSZXR1cm4sIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGRGljdGlvbmFyeVJlZiBjYWNo
ZUF0dHJpYnV0ZXMsIENWRUFHTENvbnRleHQgZWFnbENvbnRleHQsIENGRGljdGlvbmFyeVJlZiB0
ZXh0dXJlQXR0cmlidXRlcywgQ1ZPcGVuR0xFU1RleHR1cmVDYWNoZVJlZiogY2FjaGVPdXQpLCAo
YWxsb2NhdG9yLCBjYWNoZUF0dHJpYnV0ZXMsIGVhZ2xDb250ZXh0LCB0ZXh0dXJlQXR0cmlidXRl
cywgY2FjaGVPdXQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCA0MGM3
ZTg0ODI3M2M1YzJhMjIwNGFmNzRhNTI3ZDhlYTE1MDRkNTRkLi42ZGQ5MDE2YWM5NjdmMjQ4ZDE5
YmM0ZGIzM2M2MTdjNTU5MDFjZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbmNsdWRl
ICJBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKyNpbmNsdWRlICJDb3JlVmlkZW9Tb2Z0TGluay5o
IgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRpYURl
c2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCkBAIC0zOCw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiVlA5VXRpbGl0aWVzQ29jb2EuaCIKICNpbmNsdWRlICJWaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EYXRhVmlldy5oPgor
I2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2luY2x1ZGUgPHdlYm0vd2Vi
bV9wYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgpAQCAtNDksNiArNTEsOCBAQCBXVEZfV0VBS19MSU5LX0ZPUkNFX0lNUE9SVCh3ZWJt
Ojpzd2FwKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1lc3BhY2UgUEFMOwor
CiBzdGF0aWMgYm9vbCBpc1dlYm1QYXJzZXJBdmFpbGFibGUoKQogewogICAgIHJldHVybiAhIXdl
Ym06OnN3YXAgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJN
UGFyc2VyRW5hYmxlZCgpOwpAQCAtNTMzLDYgKzUzNywyNyBAQCBzdGF0aWMgdWludDhfdCBjb252
ZXJ0VG9Db2xvclByaW1hcmllcyhjb25zdCBQcmltYXJpZXMmIGNvZWZmaWNpZW50cykKICAgICB9
CiB9CiAKK3N0YXRpYyBDRlN0cmluZ1JlZiBjb252ZXJ0VG9DTUNvbG9yUHJpbWFyaWVzKHVpbnQ4
X3QgcHJpbWFyaWVzKQoreworICAgIHN3aXRjaCAocHJpbWFyaWVzKSB7CisgICAgY2FzZSBWUENv
bmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6QlRfNzA5XzY6CisgICAgICAgIHJldHVybiBrQ1ZJ
bWFnZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX0lUVV9SXzcwOV8yOworICAgIGNhc2UgVlBDb25maWd1
cmF0aW9uQ29sb3JQcmltYXJpZXM6OkVCVV9UZWNoXzMyMTNfRToKKyAgICAgICAgcmV0dXJuIGtD
VkltYWdlQnVmZmVyQ29sb3JQcmltYXJpZXNfRUJVXzMyMTM7CisgICAgY2FzZSBWUENvbmZpZ3Vy
YXRpb25Db2xvclByaW1hcmllczo6QlRfNjAxXzc6CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25D
b2xvclByaW1hcmllczo6U01QVEVfU1RfMjQwOgorICAgICAgICByZXR1cm4ga0NWSW1hZ2VCdWZm
ZXJDb2xvclByaW1hcmllc19TTVBURV9DOworICAgIGNhc2UgVlBDb25maWd1cmF0aW9uQ29sb3JQ
cmltYXJpZXM6OlNNUFRFX1JQXzQzMV8yOgorICAgICAgICByZXR1cm4ga0NNRm9ybWF0RGVzY3Jp
cHRpb25Db2xvclByaW1hcmllc19EQ0lfUDM7CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25Db2xv
clByaW1hcmllczo6U01QVEVfRUdfNDMyXzE6CisgICAgICAgIHJldHVybiBrQ01Gb3JtYXREZXNj
cmlwdGlvbkNvbG9yUHJpbWFyaWVzX1AzX0Q2NTsKKyAgICBjYXNlIFZQQ29uZmlndXJhdGlvbkNv
bG9yUHJpbWFyaWVzOjpCVF8yMDIwX05vbmNvbnN0YW50X0x1bWluYW5jZToKKyAgICAgICAgcmV0
dXJuIGtDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfSVRVX1JfMjAyMDsKKyAgICB9
CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogc3RhdGljIHVpbnQ4X3QgY29udmVydFRvVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MoY29uc3QgVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MmIGNoYXJh
Y3RlcmlzdGljcykKIHsKICAgICBzd2l0Y2ggKGNoYXJhY3RlcmlzdGljcykgewpAQCAtNTczLDYg
KzU5OCwzMSBAQCBzdGF0aWMgdWludDhfdCBjb252ZXJ0VG9UcmFuc2ZlckNoYXJhY3RlcmlzdGlj
cyhjb25zdCBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyYgYwogICAgIH0KIH0KIAorc3RhdGljIENG
U3RyaW5nUmVmIGNvbnZlcnRUb0NNVHJhbnNmZXJGdW5jdGlvbih1aW50OF90IGNoYXJhY3Rlcmlz
dGljcykKK3sKKyAgICBzd2l0Y2ggKGNoYXJhY3RlcmlzdGljcykgeworICAgIGNhc2UgVlBDb25m
aWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzcwOV82OgorICAgICAgICByZXR1
cm4ga0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzcwOV8yOworICAgIGNhc2Ug
VlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlNNUFRFX1NUXzI0MDoKKyAg
ICAgICAgcmV0dXJuIGtDVkltYWdlQnVmZmVyVHJhbnNmZXJGdW5jdGlvbl9TTVBURV8yNDBNXzE5
OTU7CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6U01Q
VEVfU1RfMjA4NDoKKyAgICAgICAgcmV0dXJuIGtDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJG
dW5jdGlvbl9TTVBURV9TVF8yMDg0X1BROworICAgIGNhc2UgVlBDb25maWd1cmF0aW9uVHJhbnNm
ZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzIwMjBfMTBiaXQ6CisgICAgY2FzZSBWUENvbmZpZ3VyYXRp
b25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfMjAyMF8xMmJpdDoKKyAgICAgICAgcmV0dXJu
IGtDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9JVFVfUl8yMDIwOworICAgIGNh
c2UgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlNNUFRFX1NUXzQyOF8x
OgorICAgICAgICByZXR1cm4ga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NN
UFRFX1NUXzQyOF8xOworICAgIGNhc2UgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3M6OkJUXzIxMDBfSExHOgorICAgICAgICByZXR1cm4ga0NNRm9ybWF0RGVzY3JpcHRpb25U
cmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzIxMDBfSExHOworICAgIGNhc2UgVlBDb25maWd1cmF0aW9u
VHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OklFQ182MTk2Nl8yXzE6CisgICAgICAgIHJldHVybiBQ
QUw6OmNhbkxvYWRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlv
bl9zUkdCKCkgPyBrQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fc1JHQiA6IG51
bGxwdHI7CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6
TGluZWFyOgorICAgICAgICByZXR1cm4ga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0
aW9uX0xpbmVhcjsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogc3RhdGljIHVp
bnQ4X3QgY29udmVydFRvTWF0cml4Q29lZmZpY2llbnRzKGNvbnN0IE1hdHJpeENvZWZmaWNpZW50
cyYgY29lZmZpY2llbnRzKQogewogICAgIHN3aXRjaCAoY29lZmZpY2llbnRzKSB7CkBAIC01OTks
NiArNjQ5LDIzIEBAIHN0YXRpYyB1aW50OF90IGNvbnZlcnRUb01hdHJpeENvZWZmaWNpZW50cyhj
b25zdCBNYXRyaXhDb2VmZmljaWVudHMmIGNvZWZmaWNpZW50CiAgICAgfQogfQogCitzdGF0aWMg
Q0ZTdHJpbmdSZWYgY29udmVydFRvQ01ZQ2JDUk1hdHJpeCh1aW50OF90IGNvZWZmaWNpZW50cykK
K3sKKyAgICBzd2l0Y2ggKGNvZWZmaWNpZW50cykgeworICAgIGNhc2UgVlBDb25maWd1cmF0aW9u
TWF0cml4Q29lZmZpY2llbnRzOjpCVF8yMDIwX05vbmNvbnN0YW50X0x1bWluYW5jZToKKyAgICAg
ICAgcmV0dXJuIGtDTUZvcm1hdERlc2NyaXB0aW9uWUNiQ3JNYXRyaXhfSVRVX1JfMjAyMDsKKyAg
ICBjYXNlIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6QlRfNDcwXzdfQkc6Cisg
ICAgY2FzZSBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkJUXzYwMV83OgorICAg
ICAgICByZXR1cm4ga0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9JVFVfUl82MDFfNDsKKyAgICBj
YXNlIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6QlRfNzA5XzY6CisgICAgICAg
IHJldHVybiBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4X0lUVV9SXzcwOV8yOworICAgIGNhc2Ug
VlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpTTVBURV9TVF8yNDA6CisgICAgICAg
IHJldHVybiBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4X1NNUFRFXzI0ME1fMTk5NTsKKyAgICB9
CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogc3RhdGljIHVpbnQ4X3QgY29udmVydFN1YnNh
bXBsaW5nWFlUb0Nocm9tYVN1YnNhbXBsaW5nKHVpbnQ2NF90IHgsIHVpbnQ2NF90IHkpCiB7CiAg
ICAgaWYgKHggJiB5KQpAQCAtNjkxLDEyICs3NTgsMzMgQEAgc3RhdGljIFJldGFpblB0cjxDTUZv
cm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQ
YXIKICAgICBDRlR5cGVSZWYgY29uZmlndXJhdGlvblZhbHVlc1tdID0geyBkYXRhLmdldCgpIH07
CiAgICAgYXV0byBjb25maWd1cmF0aW9uRGljdCA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNvbmZpZ3VyYXRpb25LZXlzLCBjb25maWd1cmF0aW9uVmFs
dWVzLCBXVEZfQVJSQVlfTEVOR1RIKGNvbmZpZ3VyYXRpb25LZXlzKSwgJmtDRlR5cGVEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0g
ICAgVmVjdG9yPENGVHlwZVJlZj4gYXRvbXNLZXlzIHsga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRl
bnNpb25fU2FtcGxlRGVzY3JpcHRpb25FeHRlbnNpb25BdG9tcyB9OwotICAgIFZlY3RvcjxDRlR5
cGVSZWY+IGF0b21zVmFsdWVzID0geyBjb25maWd1cmF0aW9uRGljdC5nZXQoKSB9OwotICAgIGF1
dG8gYXRvbXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBhdG9tc0tleXMuZGF0YSgpLCBhdG9tc1ZhbHVlcy5kYXRhKCksIGF0b21zS2V5cy5zaXplKCks
ICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpKTsKKyAgICBWZWN0b3I8Q0ZUeXBlUmVmPiBleHRlbnNpb25zS2V5cyB7IGtDTUZv
cm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRvbXMg
fTsKKyAgICBWZWN0b3I8Q0ZUeXBlUmVmPiBleHRlbnNpb25zVmFsdWVzID0geyBjb25maWd1cmF0
aW9uRGljdC5nZXQoKSB9OworCisgICAgaWYgKHJlY29yZC52aWRlb0Z1bGxSYW5nZUZsYWcgPT0g
VlBDb25maWd1cmF0aW9uUmFuZ2U6OkZ1bGxSYW5nZSkgeworICAgICAgICBleHRlbnNpb25zS2V5
cy5hcHBlbmQoa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fRnVsbFJhbmdlVmlkZW8pOwor
ICAgICAgICBleHRlbnNpb25zVmFsdWVzLmFwcGVuZChrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgfQor
CisgICAgaWYgKGF1dG8gY21Db2xvclByaW1hcmllcyA9IGNvbnZlcnRUb0NNQ29sb3JQcmltYXJp
ZXMocmVjb3JkLmNvbG9yUHJpbWFyaWVzKSkgeworICAgICAgICBleHRlbnNpb25zS2V5cy5hcHBl
bmQoa0NWSW1hZ2VCdWZmZXJDb2xvclByaW1hcmllc0tleSk7CisgICAgICAgIGV4dGVuc2lvbnNW
YWx1ZXMuYXBwZW5kKGNtQ29sb3JQcmltYXJpZXMpOworICAgIH0KKworICAgIGlmIChhdXRvIGNt
VHJhbnNmZXJGdW5jdGlvbiA9IGNvbnZlcnRUb0NNVHJhbnNmZXJGdW5jdGlvbihyZWNvcmQudHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MpKSB7CisgICAgICAgIGV4dGVuc2lvbnNLZXlzLmFwcGVuZChr
Q1ZJbWFnZUJ1ZmZlclRyYW5zZmVyRnVuY3Rpb25LZXkpOworICAgICAgICBleHRlbnNpb25zVmFs
dWVzLmFwcGVuZChjbVRyYW5zZmVyRnVuY3Rpb24pOworICAgIH0KKworICAgIGlmIChhdXRvIGNt
TWF0cml4ID0gY29udmVydFRvQ01ZQ2JDUk1hdHJpeChyZWNvcmQubWF0cml4Q29lZmZpY2llbnRz
KSkgeworICAgICAgICBleHRlbnNpb25zS2V5cy5hcHBlbmQoa0NWSW1hZ2VCdWZmZXJZQ2JDck1h
dHJpeEtleSk7CisgICAgICAgIGV4dGVuc2lvbnNWYWx1ZXMuYXBwZW5kKGNtTWF0cml4KTsKKyAg
ICB9CisKKyAgICBhdXRvIGV4dGVuc2lvbnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBleHRlbnNpb25zS2V5cy5kYXRhKCksIGV4dGVuc2lvbnNWYWx1
ZXMuZGF0YSgpLCBleHRlbnNpb25zS2V5cy5zaXplKCksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNh
bGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAogICAgIENNVmlk
ZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbiA9IG51bGxwdHI7Ci0gICAg
aWYgKG5vRXJyICE9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrQ01WaWRlb0NvZGVjVHlwZV9WUDksIHBhcnNlci53aWR0aCgpLCBwYXJzZXIuaGVp
Z2h0KCksIGF0b21zLmdldCgpLCAmZm9ybWF0RGVzY3JpcHRpb24pKQorICAgIGlmIChub0VyciAh
PSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NN
VmlkZW9Db2RlY1R5cGVfVlA5LCBwYXJzZXIud2lkdGgoKSwgcGFyc2VyLmhlaWdodCgpLCBleHRl
bnNpb25zLmdldCgpLCAmZm9ybWF0RGVzY3JpcHRpb24pKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICByZXR1cm4gYWRvcHRDRihmb3JtYXREZXNjcmlwdGlvbik7CiB9CkBAIC03MjEsMTIg
KzgwOSw2IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKGNv
bnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCBSZWFkCiAgICAgaWYgKCFibG9jaykKICAgICAg
ICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtJbnZhbGlkRWxlbWVudElkKTsKIAotICAgIGF1dG8g
aXNTeW5jID0gV1RGOjpzd2l0Y2hPbigqbV9jdXJyZW50QmxvY2ssIFtdKEJsb2NrJikgewotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwgW10oU2ltcGxlQmxvY2smIGJsb2NrKSB7Ci0gICAg
ICAgIHJldHVybiBibG9jay5pc19rZXlfZnJhbWU7Ci0gICAgfSk7Ci0KICAgICBhdXRvIHRyYWNr
TnVtYmVyID0gYmxvY2stPnRyYWNrX251bWJlcjsKIAogICAgIGF1dG8qIHRyYWNrRGF0YSA9IHRy
YWNrRGF0YUZvclRyYWNrTnVtYmVyKHRyYWNrTnVtYmVyKTsKQEAgLTc5OCw3ICs4ODAsNyBAQCB3
ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZShjb25zdCBGcmFtZU1l
dGFkYXRhJiBtZXRhZGF0YSwgUmVhZAogICAgICAgICB0cmFja0RhdGEtPmN1cnJlbnRCbG9ja0J1
ZmZlciA9IG51bGxwdHI7CiAgICAgICAgIHRyYWNrRGF0YS0+Y3VycmVudEJsb2NrQnVmZmVyUG9z
aXRpb24gPSAwOwogCi0gICAgICAgIGlmICghaXNTeW5jKSB7CisgICAgICAgIGlmICghaGVhZGVy
UGFyc2VyLmtleSgpKSB7CiAgICAgICAgICAgICBhdXRvIGF0dGFjaG1lbnRzQXJyYXkgPSBDTVNh
bXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1lbnRzQXJyYXkoc2FtcGxlQnVmZmVyLmdldCgpLCB0
cnVlKTsKICAgICAgICAgICAgIEFTU0VSVChhdHRhY2htZW50c0FycmF5KTsKICAgICAgICAgICAg
IGlmICghYXR0YWNobWVudHNBcnJheSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405499</attachid>
            <date>2020-07-29 14:17:15 -0700</date>
            <delta_ts>2020-07-29 14:37:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-214928-20200729141714.patch</filename>
            <type>text/plain</type>
            <size>38146</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBiMDU1NWMzNzdkZDY0ZmJmMGM3ODU0N2RkNDdmNDQxNTYyZDY5YTIxLi44NTQ5
YjE5OTUyOGNjYWVkNGJlY2M5YTY0ZTUxMDBhMDNjNTY1OGRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMC0wNy0yOSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IEhEUiBkZWNvZGUgaW4g
U1cgVlA5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTQ5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgU3Vw
cG9ydCBjb252ZXJ0aW5nIEkwMTAgYnVmZmVycyAoZnVsbC1wbGFuYXIsIDEwLWJpdCBkYXRhIHBh
Y2tlZCBpbnRvIHRoZSBMU0Igb2YgYSAxNi1iaXQgaW50KQorICAgICAgICBpbnRvIENWUGl4ZWxC
dWZmZXJzIChiaS1wbGFuYXIsIDEwLWJpdCBkYXRhIHBhY2tlZCBpbnRvIHRoZSBNU0Igb2YgYSAx
Ni1iaXQgaW50KS4gVGhpcyByZXF1aXJlcworICAgICAgICB1c2luZyBmdW5jdGlvbnMgZnJvbSBs
aWJ5dXYgdG8gbWVyZ2UgYW5kIHNjYWxlIDE2LWJpdCBwbGFuYXIgZGF0YSwgb3B0aW1pemVkIGZv
ciBBVlgyLiBUbyBrbm93CisgICAgICAgIHRoYXQgaW5jb21pbmcgYnVmZmVycyBhcmUgMTAtYml0
LCBhbmQgd2hldGhlciB0aGV5J3JlIGZ1bGwtcmFuZ2UsIHBhcnNlIHRoZSAndnBjQycgYXRvbSBh
dHRhY2hlZAorICAgICAgICB0byB0aGUgQ01Gb3JtYXREZXNjcmlwdGlvbi4KKworICAgICAgICAq
IFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW06CisgICAgICAgICh3
ZWJydGM6Ok1lcmdlVVZQbGFuZV8xNik6CisgICAgICAgICh3ZWJydGM6OkNvcHlQbGFuZV8xNik6
CisgICAgICAgICh3ZWJydGM6OkNvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcik6CisgICAgICAg
ICh3ZWJydGM6OnBpeGVsQnVmZmVyRnJvbUZyYW1lKToKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHA6CisgICAgICAgICh3ZWJydGM6OmNyZWF0
ZVdlYktpdFZQOURlY29kZXIpOgorICAgICAgICAod2VicnRjOjpzdGFydFZQOURlY29kZXJTZXNz
aW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpjcmVhdGVQ
aXhlbEJ1ZmZlclBvb2xGb3JGb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAgICh3ZWJydGM6Oldl
YktpdFZQOURlY29kZXJSZWNlaXZlcjo6RGVjb2RlZCk6CisKIDIwMjAtMDctMjIgIENvbnJhZCBT
aHVsdHogIDxjb25yYWRfc2h1bHR6QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgbWFjT1Mg
VmVyc2lvbiBtYWNyb3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MmI4YTcxYzUwMzc0NTk0MGQxNTMxMjMyMmVi
ZGI2NWI3NWNjNWI4Li5kMTU2ZGEyMmMzMDljMmYwNmQyNTg4NzljN2QxZWJhNTkwM2U5NWNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMDctMjkgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBIRFIgZGVjb2RlIGluIFNXIFZQOQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0OTI4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIENvbnZlcnQgdGhl
IGluY29taW5nIHByb3BlcnRpZXMgcGFyc2VkIGZyb20gdGhlIFZQOSBoZWFkZXIgaW50byBleHRl
bnNpb25zIHRvIG91cgorICAgICAgICBDTUZvcm1hdERlc2NyaXB0aW9uIGF0dGFjaGVkIHRvIGVh
Y2ggaW5jb21pbmcgdmlkZW8gZnJhbS4KKworICAgICAgICBEcml2ZS1ieSBmaXg6IEZpbGVzIGlu
IHRoZSB3aWxkIHdpbGwgaGF2ZSBpbmNvcnJlY3QgdmFsdWVzIGZvciB3aGV0aGVyIGEgZ2l2ZW4K
KyAgICAgICAgZnJhbWUgaXMgYSBrZXlmcmFtZSBvciBub3QuIFRydXN0IHRoZSBWUDkgaGVhZGVy
IHBhcnNlciByYXRoZXIgdGhhbiB0aGUgY29udGFpbmVyCisgICAgICAgIGluIHRoaXMgc2l0dWF0
aW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ01Db2xvclByaW1hcmll
cyk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DTVRyYW5zZmVyRnVuY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ01ZQ2JDUk1hdHJpeCk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZSk6CisKIDIwMjAtMDctMjYg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBNYWtl
IERlY29kZXJUZXN0IHJ1biBhZ2FpbnN0IC5tcDQgZmlsZXM7IGFkZCByYXRlLWxpbWl0aW5nLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKaW5kZXggZjJkMTk4MWE4MWMzM2IxOWFkNDM5YTY1MTNmMDM0OWU3M2My
N2ExNC4uODRkMjU4YjZkMzA5OTU3MWVlMjY1ZGMxY2ZhNGVmZWU2OTNmNTNkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDctMjkgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBIRFIgZGVjb2RlIGluIFNXIFZQOQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0OTI4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NjI4NDg0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgKiBwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwOgor
ICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oOgorCiAyMDIwLTA3LTIyICBDb25y
YWQgU2h1bHR6ICA8Y29ucmFkX3NodWx0ekBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIG1h
Y09TIFZlcnNpb24gbWFjcm9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0
aWVzLm1tCmluZGV4IDlmZjAzYjdkOTg0Mjk3OTdkNjAxZmFmMGQxNGE4NDY1ZTU4NTQ3OGYuLjU0
MzRlMzc1ODE5MTgxMmQ5ZjFhMzY0ZDJjMzhiYjdlNTViZmNjODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRp
bGl0aWVzLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNs
dWRlICJuYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmgiCiAjaW5jbHVkZSAidGhpcmRfcGFy
dHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZlcnRfZnJvbS5oIgorI2luY2x1ZGUgImxpYnl1
di9jcHVfaWQuaCIKKyNpbmNsdWRlICJsaWJ5dXYvcm93LmgiCiAjaW5jbHVkZSAiRnJhbWV3b3Jr
L0hlYWRlcnMvV2ViUlRDL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CkBAIC03NywxNCArNzksMTM1IEBAIHN0YXRpYyBib29sIENvcHlWaWRlb0ZyYW1lVG9QaXhl
bEJ1ZmZlcihjb25zdCB3ZWJydGM6Okk0MjBCdWZmZXJJbnRlcmZhY2UqIGZyYW1lCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKKy8vIE1lcmdlVVZQbGFuZV8xNiBtZXJnZXMgdHdvIHNlcGFyYXRlIFUg
YW5kIFYgcGxhbmVzIGludG8gYSBzaW5nbGUsIGludGVybGVhdmVkCisvLyBwbGFuZSwgd2hpbGUg
c2ltdWx0YW5lb3VzbHkgc2NhbGluZyB0aGUgb3V0cHV0LiBVc2UgJzY0JyBpbiB0aGUgc2NhbGUg
ZmllbGQgdG8KKy8vIHNoaWZ0IDEwLWJpdCBkYXRhIGZyb20gdGhlIExTQiBvZiB0aGUgMTYtYml0
IGludCB0byB0aGUgTVNCLgorLy8gTk9URTogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24gbGlieXV2
OjpNZXJnZVVWUGxhbmUuIElmIGxpYnl1diBldmVyIHN1cHBvcnRzCisvLyB0aGlzIG9wZXJhdGlv
biBkaXJlY3RseSwgd2Ugc2hvdWxkIHJlcGxhY2UgdGhlIGJlbG93IHdpdGggaXQuCisvLyBOT1RF
OiBsaWJ5dXYgb25seSBoYXMgYW4gb3BtaXRpemF0aW9uIG9mIE1lcmdlVVZSb3dfMTYgZm9yIEFW
WDIgaW50cmluc2ljcy4KKy8vIENhbGxpbmcgdGhpcyBtZXRob2Qgb24gYSBDUFUgd2l0aG91dCBB
VlgyIHdpbGwgZmFsbCBiYWNrIHRvIGEgc3RhbmRhcmQgQworLy8gaW1wbGVtZW50YXRpb24sIGFu
ZCB3aWxsIHByb2JhYmx5IGJlIHN1cGVyIHNsb3cuIEFkZCBuZXcgTWVyZ2VVVlJvd18xNgorLy8g
aW1wbGVtZW50YXRpb25zIGFzIHRoZXkgYmVjb21lIGF2YWlsYWJsZSBpbiBsaWJ5dXYuCit2b2lk
IE1lcmdlVVZQbGFuZV8xNihjb25zdCB1aW50MTZfdCogc3JjX3UsIGludCBzcmNfc3RyaWRlX3Us
IGNvbnN0IHVpbnQxNl90KiBzcmNfdiwgaW50IHNyY19zdHJpZGVfdiwgdWludDE2X3QqIGRzdF91
diwgaW50IGRzdF9zdHJpZGVfdXYsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHNjYWxlKSB7
CisgICAgdm9pZCAoKk1lcmdlVVZSb3dfMTYpKGNvbnN0IHVpbnQxNl90KiBzcmNfdSwgY29uc3Qg
dWludDE2X3QqIHNyY192LCB1aW50MTZfdCogZHN0X3V2LCBpbnQgc2NhbGUsIGludCB3aWR0aCkg
PSBsaWJ5dXY6Ok1lcmdlVVZSb3dfMTZfQzsKKyAgICAvLyBOZWdhdGl2ZSBoZWlnaHQgbWVhbnMg
aW52ZXJ0IHRoZSBpbWFnZS4KKyAgICBpZiAoaGVpZ2h0IDwgMCkgeworICAgICAgICBoZWlnaHQg
PSAtaGVpZ2h0OworICAgICAgICBkc3RfdXYgPSBkc3RfdXYgKyAoaGVpZ2h0IC0gMSkgKiBkc3Rf
c3RyaWRlX3V2OworICAgICAgICBkc3Rfc3RyaWRlX3V2ID0gLWRzdF9zdHJpZGVfdXY7CisgICAg
fQorICAgIC8vIENvYWxlc2NlIHJvd3MuCisgICAgaWYgKHNyY19zdHJpZGVfdSA9PSB3aWR0aCAm
JiBzcmNfc3RyaWRlX3YgPT0gd2lkdGggJiYgZHN0X3N0cmlkZV91diA9PSB3aWR0aCAqIDIpIHsK
KyAgICAgICAgd2lkdGggKj0gaGVpZ2h0OworICAgICAgICBoZWlnaHQgPSAxOworICAgICAgICBz
cmNfc3RyaWRlX3UgPSBzcmNfc3RyaWRlX3YgPSBkc3Rfc3RyaWRlX3V2ID0gMDsKKyAgICB9Cisj
aWYgZGVmaW5lZChIQVNfTUVSR0VVVlJPV18xNl9BVlgyKQorICAgIGlmIChsaWJ5dXY6OlRlc3RD
cHVGbGFnKGxpYnl1djo6a0NwdUhhc0FWWDIpKQorICAgICAgICBNZXJnZVVWUm93XzE2ID0gbGli
eXV2OjpNZXJnZVVWUm93XzE2X0FWWDI7CisjZW5kaWYKKworICAgIGZvciAoaW50IHkgPSAwOyB5
IDwgaGVpZ2h0OyArK3kpIHsKKyAgICAgICAgLy8gTWVyZ2UgYSByb3cgb2YgVSBhbmQgViBpbnRv
IGEgcm93IG9mIFVWLgorICAgICAgICBNZXJnZVVWUm93XzE2KHNyY191LCBzcmNfdiwgZHN0X3V2
LCBzY2FsZSwgd2lkdGgpOworICAgICAgICBzcmNfdSArPSBzcmNfc3RyaWRlX3UgLyBzaXplb2Yo
dWludDE2X3QpOworICAgICAgICBzcmNfdiArPSBzcmNfc3RyaWRlX3YgLyBzaXplb2YodWludDE2
X3QpOworICAgICAgICBkc3RfdXYgKz0gZHN0X3N0cmlkZV91diAvIHNpemVvZih1aW50MTZfdCk7
CisgICAgfQorfQorCisvLyBDb3B5UGxhbmVfMTYgd2lsbCBjb3B5IGEgcGxhbmUgb2YgMTYtYml0
IGRhdGEgZnJvbSBvbmUgbG9jYXRpb24gdG8gYW5vdGhlciwKKy8vIHdoaWxlIHNpbXVsdGFuZW91
c2x5IHNjYWxpbmcgdGhlIG91dHB1dC4gVXNlICc2NCcgaW4gdGhlIHNjYWxlIGZpZWxkIHRvCisv
LyBzaGlmdCAxMC1iaXQgZGF0YSBmcm9tIHRoZSBMU0Igb2YgYSAxNi1iaXQgaW50IHRvIHRoZSBN
U0IuCisvLyBOT1RFOiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvbiBNZXJnZVVWUGxhbmVfMTYgYWJv
dmUsIGJ1dCBvcGVyYXRlcyBvbiBhCisvLyBzaW5nbGUgcGxhbmUsIHJhdGVyIHRoYW4gaW50ZXJs
ZWF2aW5nIHR3byBwbGFuZXMuIElmIGxpYnl1diBldmVyIHN1cHBvcnRzCisvLyB0aGlzIG9wZXJh
dGlvbiBkaXJlY3RseSwgd2Ugc2hvdWxkIHJlcGxhY2UgdGhlIGJlbG93IHdpdGggaXQuCisvLyBO
T1RFOiBsaWJ5dXYgb25seSBoYXMgYW4gb3BtaXRpemF0aW9uIG9mIE1lcmdlVVZSb3dfMTYgZm9y
IEFWWDIgaW50cmluc2ljcy4KKy8vIENhbGxpbmcgdGhpcyBtZXRob2Qgb24gYSBDUFUgd2l0aG91
dCBBVlgyIHdpbGwgZmFsbCBiYWNrIHRvIGEgc3RhbmRhcmQgQworLy8gaW1wbGVtZW50YXRpb24s
IGFuZCB3aWxsIHByb2JhYmx5IGJlIHN1cGVyIHNsb3cuIEFkZCBuZXcgTWVyZ2VVVlJvd18xNgor
Ly8gaW1wbGVtZW50YXRpb25zIGFzIHRoZXkgYmVjb21lIGF2YWlsYWJsZSBpbiBsaWJ5dXYuCit2
b2lkIENvcHlQbGFuZV8xNihjb25zdCB1aW50MTZfdCogc3JjLCBpbnQgc3JjX3N0cmlkZSwgdWlu
dDE2X3QqIGRzdCwgaW50IGRzdF9zdHJpZGUsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHNj
YWxlKQoreworICAgIHZvaWQgKCpNdWx0aXBseVJvd18xNikoY29uc3QgdWludDE2X3QqIHNyY195
LCB1aW50MTZfdCogZHN0X3ksIGludCBzY2FsZSwgaW50IHdpZHRoKSA9IGxpYnl1djo6TXVsdGlw
bHlSb3dfMTZfQzsKKyAgICAvLyBOZWdhdGl2ZSBoZWlnaHQgbWVhbnMgaW52ZXJ0IHRoZSBpbWFn
ZS4KKyAgICBpZiAoaGVpZ2h0IDwgMCkgeworICAgICAgICBoZWlnaHQgPSAtaGVpZ2h0OworICAg
ICAgICBkc3QgPSBkc3QgKyAoaGVpZ2h0IC0gMSkgKiBkc3Rfc3RyaWRlOworICAgICAgICBkc3Rf
c3RyaWRlID0gLWRzdF9zdHJpZGU7CisgICAgfQorICAgIC8vIENvYWxlc2NlIHJvd3MuCisgICAg
aWYgKHNyY19zdHJpZGUgPT0gd2lkdGggJiYgZHN0X3N0cmlkZSA9PSB3aWR0aCAqIDIpIHsKKyAg
ICAgICAgd2lkdGggKj0gaGVpZ2h0OworICAgICAgICBoZWlnaHQgPSAxOworICAgICAgICBzcmNf
c3RyaWRlID0gZHN0X3N0cmlkZSA9IDA7CisgICAgfQorI2lmIGRlZmluZWQoSEFTX01FUkdFVVZS
T1dfMTZfQVZYMikKKyAgICBpZiAobGlieXV2OjpUZXN0Q3B1RmxhZyhsaWJ5dXY6OmtDcHVIYXNB
VlgyKSkKKyAgICAgICAgTXVsdGlwbHlSb3dfMTYgPSBsaWJ5dXY6Ok11bHRpcGx5Um93XzE2X0FW
WDI7CisjZW5kaWYKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAg
ICAgICAgTXVsdGlwbHlSb3dfMTYoc3JjLCBkc3QsIHNjYWxlLCB3aWR0aCk7CisgICAgICAgIHNy
YyArPSBzcmNfc3RyaWRlIC8gc2l6ZW9mKHVpbnQxNl90KTsKKyAgICAgICAgZHN0ICs9IGRzdF9z
dHJpZGUgLyBzaXplb2YodWludDE2X3QpOworICAgIH0KK30KKworc3RhdGljIGJvb2wgQ29weVZp
ZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGNvbnN0IHdlYnJ0Yzo6STAxMEJ1ZmZlckludGVyZmFjZSog
ZnJhbWUsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxfYnVmZmVyKQoreworICAgIFJUQ19EQ0hFQ0so
cGl4ZWxfYnVmZmVyKTsKKyAgICBSVENfRENIRUNLKENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1h
dFR5cGUocGl4ZWxfYnVmZmVyKSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBs
YW5hclZpZGVvUmFuZ2UgfHwgQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbF9i
dWZmZXIpID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdl
KTsKKyAgICBSVENfRENIRUNLX0VRKENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVs
X2J1ZmZlciwgMCksIHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWUtPmhlaWdodCgpKSk7CisgICAg
UlRDX0RDSEVDS19FUShDVlBpeGVsQnVmZmVyR2V0V2lkdGhPZlBsYW5lKHBpeGVsX2J1ZmZlciwg
MCksIHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWUtPndpZHRoKCkpKTsKKworICAgIGlmIChDVlBp
eGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNzKHBpeGVsX2J1ZmZlciwgMCkgIT0ga0NWUmV0dXJuU3Vj
Y2VzcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBzcmNfeSA9IGNvbnN0X2Nh
c3Q8dWludDE2X3QqPihmcmFtZS0+RGF0YVkoKSk7CisgICAgYXV0byBzcmNfdSA9IGNvbnN0X2Nh
c3Q8dWludDE2X3QqPihmcmFtZS0+RGF0YVUoKSk7CisgICAgYXV0byBzcmNfdiA9IGNvbnN0X2Nh
c3Q8dWludDE2X3QqPihmcmFtZS0+RGF0YVYoKSk7CisgICAgYXV0byBzcmNfd2lkdGhfeSA9IGZy
YW1lLT53aWR0aCgpOworICAgIGF1dG8gc3JjX2hlaWdodF95ID0gZnJhbWUtPmhlaWdodCgpOwor
ICAgIGF1dG8gc3JjX3N0cmlkZV95ID0gZnJhbWUtPlN0cmlkZVkoKSAqIHNpemVvZih1aW50MTZf
dCk7CisgICAgYXV0byBzcmNfd2lkdGhfdXYgPSBmcmFtZS0+Q2hyb21hV2lkdGgoKTsKKyAgICBh
dXRvIHNyY19oZWlnaHRfdXYgPSBmcmFtZS0+Q2hyb21hSGVpZ2h0KCk7CisgICAgYXV0byBzcmNf
c3RyaWRlX3UgPSBmcmFtZS0+U3RyaWRlVSgpICogc2l6ZW9mKHVpbnQxNl90KTsKKyAgICBhdXRv
IHNyY19zdHJpZGVfdiA9IGZyYW1lLT5TdHJpZGVWKCkgKiBzaXplb2YodWludDE2X3QpOworCisg
ICAgYXV0byogZHN0X3kgPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oQ1ZQaXhlbEJ1ZmZl
ckdldEJhc2VBZGRyZXNzT2ZQbGFuZShwaXhlbF9idWZmZXIsIDApKTsKKyAgICBhdXRvIGRzdF9z
dHJpZGVfeSA9IENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09mUGxhbmUocGl4ZWxfYnVmZmVy
LCAwKTsKKyAgICBhdXRvIGRzdF93aWR0aF95ID0gQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFu
ZShwaXhlbF9idWZmZXIsIDApOworICAgIGF1dG8gZHN0X2hlaWdodF95ID0gQ1ZQaXhlbEJ1ZmZl
ckdldEhlaWdodE9mUGxhbmUocGl4ZWxfYnVmZmVyLCAwKTsKKworICAgIGF1dG8qIGRzdF91diA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NP
ZlBsYW5lKHBpeGVsX2J1ZmZlciwgMSkpOworICAgIGF1dG8gZHN0X3N0cmlkZV91diA9IENWUGl4
ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09mUGxhbmUocGl4ZWxfYnVmZmVyLCAxKTsKKyAgICBhdXRv
IGRzdF93aWR0aF91diA9IENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUocGl4ZWxfYnVmZmVy
LCAxKTsKKyAgICBhdXRvIGRzdF9oZWlnaHRfdXYgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQ
bGFuZShwaXhlbF9idWZmZXIsIDEpOworCisgICAgaWYgKHNyY193aWR0aF95ICE9IGRzdF93aWR0
aF95CisgICAgICAgIHx8IHNyY19oZWlnaHRfeSAhPSBkc3RfaGVpZ2h0X3kKKyAgICAgICAgfHwg
c3JjX3dpZHRoX3V2ICE9IGRzdF93aWR0aF91dgorICAgICAgICB8fCBzcmNfaGVpZ2h0X3V2ICE9
IGRzdF9oZWlnaHRfdXYpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENvcHlQbGFuZV8x
NihzcmNfeSwgc3JjX3N0cmlkZV95LCBkc3RfeSwgZHN0X3N0cmlkZV95LCBkc3Rfd2lkdGhfeSwg
ZHN0X2hlaWdodF95LCA2NCk7CisgICAgTWVyZ2VVVlBsYW5lXzE2KHNyY191LCBzcmNfc3RyaWRl
X3UsIHNyY192LCBzcmNfc3RyaWRlX3YsIGRzdF91diwgZHN0X3N0cmlkZV91diwgZHN0X3dpZHRo
X3V2LCBkc3RfaGVpZ2h0X3V2LCA2NCk7CisKKyAgICBDVlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFk
ZHJlc3MocGl4ZWxfYnVmZmVyLCAwKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgY29u
c3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90KT4mIG1ha2VQ
aXhlbEJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCktPnR5cGUo
KSAhPSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKSB7Ci0gICAgICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxjb25zdCBJNDIwQnVmZmVySW50ZXJmYWNlPiBidWZmZXIgPSBmcmFtZS52aWRl
b19mcmFtZV9idWZmZXIoKS0+R2V0STQyMCgpOworICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0g
bWFrZVBpeGVsQnVmZmVyKGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLT53aWR0aCgpLCBmcmFt
ZS52aWRlb19mcmFtZV9idWZmZXIoKS0+aGVpZ2h0KCkpOworICAgICAgICBpZiAoIXBpeGVsQnVm
ZmVyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byBwaXhlbEJ1
ZmZlciA9IG1ha2VQaXhlbEJ1ZmZlcihidWZmZXItPndpZHRoKCksIGJ1ZmZlci0+aGVpZ2h0KCkp
OwotICAgICAgICBpZiAocGl4ZWxCdWZmZXIpCisgICAgICAgIGlmIChmcmFtZS52aWRlb19mcmFt
ZV9idWZmZXIoKS0+dHlwZSgpID09IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJNDIwKQogICAg
ICAgICAgICAgQ29weVZpZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGZyYW1lLnZpZGVvX2ZyYW1lX2J1
ZmZlcigpLT5HZXRJNDIwKCksIHBpeGVsQnVmZmVyKTsKKyAgICAgICAgZWxzZSBpZiAoZnJhbWUu
dmlkZW9fZnJhbWVfYnVmZmVyKCktPnR5cGUoKSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjpr
STAxMCkKKyAgICAgICAgICAgIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcihmcmFtZS52aWRl
b19mcmFtZV9idWZmZXIoKS0+R2V0STAxMCgpLCBwaXhlbEJ1ZmZlcik7CiAgICAgICAgIHJldHVy
biBwaXhlbEJ1ZmZlcjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktp
dFZQOURlY29kZXIuY3BwCmluZGV4IGU5NGI5NzZmOGExN2FjMmMxZWI1YmU3YzcyMDY1NTg1NzU5
N2E0NTguLjExNDg1ODA2N2M0YTFiZjVlNjAwZmFlNjk1YTM3ZjBkOTY3N2RhY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VlA5RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDlEZWNvZGVyLmNwcApAQCAtNTgsNiArNTgs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJyZW50RnJhbWUoVlRWaWRlb0RlY29kZXJGcmFt
ZSBjdXJyZW50RnJhbWUpIHsgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7IH0KICAgICBP
U1N0YXR1cyBkZWNvZGVyRmFpbGVkKGludCBlcnJvcik7CiAKKyAgICB2b2lkIGNyZWF0ZVBpeGVs
QnVmZmVyUG9vbEZvckZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYpOwor
CiBwcml2YXRlOgogICAgIGludDMyX3QgRGVjb2RlZChWaWRlb0ZyYW1lJikgZmluYWw7CiAgICAg
aW50MzJfdCBEZWNvZGVkKFZpZGVvRnJhbWUmLCBpbnQ2NF90IGRlY29kZV90aW1lX21zKSBmaW5h
bDsKQEAgLTE2OSw2ICsxNzEsNyBAQCBPU1N0YXR1cyBzdGFydFZQOURlY29kZXJTZXNzaW9uKFZU
VmlkZW9EZWNvZGVyUmVmIGluc3RhbmNlLCBWVFZpZGVvRGVjb2RlclNlc3NpbwogCiAgICAgZGVj
b2Rlci0+bV9pbnN0YW5jZSA9IHN0ZDo6bWFrZV91bmlxdWU8VlA5RGVjb2RlckltcGw+KCk7CiAg
ICAgZGVjb2Rlci0+bV9yZWNlaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0VlA5RGVjb2Rl
clJlY2VpdmVyPihzZXNzaW9uKTsKKyAgICBkZWNvZGVyLT5tX3JlY2VpdmVyLT5jcmVhdGVQaXhl
bEJ1ZmZlclBvb2xGb3JGb3JtYXREZXNjcmlwdGlvbihmb3JtYXREZXNjcmlwdGlvbik7CiAKICAg
ICBkZWNvZGVyLT5tX2luc3RhbmNlLT5SZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2soZGVj
b2Rlci0+bV9yZWNlaXZlci5nZXQoKSk7CiAKQEAgLTI1Myw2ICsyNTYsOTMgQEAgV2ViS2l0VlA5
RGVjb2RlclJlY2VpdmVyOjp+V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyKCkKICAgICAgICAgQ0ZS
ZWxlYXNlKG1fcGl4ZWxCdWZmZXJQb29sKTsKIH0KIAordm9pZCBXZWJLaXRWUDlEZWNvZGVyUmVj
ZWl2ZXI6OmNyZWF0ZVBpeGVsQnVmZmVyUG9vbEZvckZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0
RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCit7CisgICAgLy8gQ29yZUFuaW1hdGlv
biBkb2Vzbid0IHN1cHBvcnQgZnVsbC1wbGFuYXIgWVVWLCBzbyB3ZSBtdXN0IGNvbnZlcnQgdGhl
IGJ1ZmZlcnMgb3V0cHV0CisgICAgLy8gYnkgbGlidnB4IHRvIGJpLXBsYW5hciBZVVYuIENyZWF0
ZSBwaXhlbCBidWZmZXIgYXR0cmlidXRlcyBhbmQgZ2l2ZSB0aG9zZSB0byB0aGUKKyAgICAvLyBk
ZWNvZGVyIHNlc3Npb24gZm9yIHVzZSBpbiBjcmVhdGluZyBpdHMgb3duIGludGVybmFsIENWUGl4
ZWxCdWZmZXJQb29sLCB3aGljaCB3ZQorICAgIC8vIHdpbGwgdXNlIHBvc3QtZGVjb2RlLgorICAg
IGJvb2wgaXNGdWxsUmFuZ2UgPSBmYWxzZTsKKyAgICBib29sIGlzMTBCaXQgPSBmYWxzZTsKKwor
ICAgIGRvIHsKKyAgICAgICAgYXV0byBleHRlbnNpb25zID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdl
dEV4dGVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOworICAgICAgICBpZiAoIWV4dGVuc2lvbnMp
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBDRlR5cGVSZWYgZXh0ZW5zaW9uQXRvbXMg
PSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25zLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4
dGVuc2lvbl9TYW1wbGVEZXNjcmlwdGlvbkV4dGVuc2lvbkF0b21zKTsKKyAgICAgICAgaWYgKCFl
eHRlbnNpb25BdG9tcyB8fCBDRkdldFR5cGVJRChleHRlbnNpb25BdG9tcykgIT0gQ0ZEaWN0aW9u
YXJ5R2V0VHlwZUlEKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIGNvbmZp
Z3VyYXRpb25SZWNvcmQgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZh
bHVlKChDRkRpY3Rpb25hcnlSZWYpZXh0ZW5zaW9uQXRvbXMsIENGU1RSKCJ2cGNDIikpKTsKKyAg
ICAgICAgaWYgKCFjb25maWd1cmF0aW9uUmVjb3JkIHx8IENGR2V0VHlwZUlEKGNvbmZpZ3VyYXRp
b25SZWNvcmQpICE9IENGRGF0YUdldFR5cGVJRCgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkU2l6ZSA9IENGRGF0YUdldExlbmd0aChjb25m
aWd1cmF0aW9uUmVjb3JkKTsKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb25SZWNvcmRTaXplIDwg
MTIpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNv
cmREYXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0cihjb25maWd1cmF0aW9uUmVjb3JkKTsKKyAgICAgICAg
YXV0byBiaXREZXB0aENocm9tYUFuZFJhbmdlID0gKihjb25maWd1cmF0aW9uUmVjb3JkRGF0YSAr
IDYpOworCisgICAgICAgIGlmICgoYml0RGVwdGhDaHJvbWFBbmRSYW5nZSA+PiA0KSA9PSAxMCkK
KyAgICAgICAgICAgIGlzMTBCaXQgPSB0cnVlOworCisgICAgICAgIGlmIChiaXREZXB0aENocm9t
YUFuZFJhbmdlICYgMHgxKQorICAgICAgICAgICAgaXNGdWxsUmFuZ2UgPSB0cnVlOworICAgIH0g
d2hpbGUgKGZhbHNlKTsKKworICAgIE9TVHlwZSBwaXhlbEZvcm1hdDsKKyAgICBpZiAoaXMxMEJp
dCkKKyAgICAgICAgcGl4ZWxGb3JtYXQgPSBpc0Z1bGxSYW5nZSA/IGtDVlBpeGVsRm9ybWF0VHlw
ZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlIDoga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlw
Q2JDcjEwQmlQbGFuYXJWaWRlb1JhbmdlOworICAgIGVsc2UKKyAgICAgICAgcGl4ZWxGb3JtYXQg
PSBpc0Z1bGxSYW5nZSA/IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxs
UmFuZ2UgOiBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZTsK
KworICAgIGF1dG8gY3JlYXRlUGl4ZWxGb3JtYXRBdHRyaWJ1dGVzID0gW10gKE9TVHlwZSBwaXhl
bEZvcm1hdCwgaW50MzJfdCBib3JkZXJQaXhlbHMpIHsKKyAgICAgICAgYXV0byBjcmVhdGVOdW1i
ZXIgPSBbXSAoaW50MzJfdCBmb3JtYXQpIC0+IENGTnVtYmVyUmVmIHsKKyAgICAgICAgICAgIHJl
dHVybiBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50MzJU
eXBlLCAmZm9ybWF0KTsKKyAgICAgICAgfTsKKyAgICAgICAgYXV0byBjZlBpeGVsRm9ybWF0cyA9
IENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDIsICZrQ0ZUeXBlQXJy
YXlDYWxsQmFja3MpOworICAgICAgICBhdXRvIGZvcm1hdE51bWJlciA9IGNyZWF0ZU51bWJlcihw
aXhlbEZvcm1hdCk7CisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjZlBpeGVsRm9ybWF0cywg
Zm9ybWF0TnVtYmVyKTsKKyAgICAgICAgQ0ZSZWxlYXNlKGZvcm1hdE51bWJlcik7CisKKyAgICAg
ICAgYXV0byBib3JkZXJQaXhlbHNWYWx1ZSA9IGNyZWF0ZU51bWJlcigzMik7CisKKyAgICAgICAg
Y29uc3Qgdm9pZCoga2V5c1tdID0geworICAgICAgICAgICAga0NWUGl4ZWxCdWZmZXJQaXhlbEZv
cm1hdFR5cGVLZXksCisgICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzTGVm
dEtleSwKKyAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNSaWdodEtleSwK
KyAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNUb3BLZXksCisgICAgICAg
ICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzQm90dG9tS2V5LAorICAgICAgICB9Owor
ICAgICAgICBjb25zdCB2b2lkKiB2YWx1ZXNbXSA9IHsKKyAgICAgICAgICAgIGNmUGl4ZWxGb3Jt
YXRzLAorICAgICAgICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUsCisgICAgICAgICAgICBib3JkZXJQ
aXhlbHNWYWx1ZSwKKyAgICAgICAgICAgIGJvcmRlclBpeGVsc1ZhbHVlLAorICAgICAgICAgICAg
Ym9yZGVyUGl4ZWxzVmFsdWUsCisgICAgICAgIH07CisgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9
IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIHN0
ZDo6c2l6ZShrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgICAgIENGUmVsZWFzZShib3JkZXJQaXhlbHNW
YWx1ZSk7CisgICAgICAgIENGUmVsZWFzZShjZlBpeGVsRm9ybWF0cyk7CisgICAgICAgIHJldHVy
biBhdHRyaWJ1dGVzOworICAgIH07CisKKyAgICBhdXRvIHBpeGVsQnVmZmVyQXR0cmlidXRlcyA9
IGNyZWF0ZVBpeGVsRm9ybWF0QXR0cmlidXRlcyhwaXhlbEZvcm1hdCwgMzIpOworICAgIFZURGVj
b2RlclNlc3Npb25TZXRQaXhlbEJ1ZmZlckF0dHJpYnV0ZXMobV9zZXNzaW9uLCBwaXhlbEJ1ZmZl
ckF0dHJpYnV0ZXMpOworICAgIENGUmVsZWFzZShwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOworCisg
ICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKSB7CisgICAgICAgIENGUmVsZWFzZShtX3BpeGVsQnVm
ZmVyUG9vbCk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJQb29sID0gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBtX3BpeGVsQnVmZmVyUG9vbCA9IFZURGVjb2RlclNlc3Npb25HZXRQaXhlbEJ1ZmZlclBv
b2wobV9zZXNzaW9uKTsKKyAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpCisgICAgICAgIENGUmV0
YWluKG1fcGl4ZWxCdWZmZXJQb29sKTsKK30KKwogT1NTdGF0dXMgV2ViS2l0VlA5RGVjb2RlclJl
Y2VpdmVyOjpkZWNvZGVyRmFpbGVkKGludCBlcnJvcikKIHsKICAgICBPU1N0YXR1cyB2dEVycm9y
ID0ga1ZUVmlkZW9EZWNvZGVyQmFkRGF0YUVycjsKQEAgLTI3MSwzMyArMzYxLDE3IEBAIE9TU3Rh
dHVzIFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZChpbnQgZXJyb3IpCiAK
IGludDMyX3QgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZy
YW1lKQogewotICAgIENWUGl4ZWxCdWZmZXJSZWYgbmV3UGl4ZWxCdWZmZXIgeyBudWxscHRyIH07
Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lLCBbdGhp
cywgJm5ld1BpeGVsQnVmZmVyXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpIC0+IENWUGl4
ZWxCdWZmZXJSZWYgewotICAgICAgICBpZiAoIW1fcGl4ZWxCdWZmZXJQb29sIHx8IG1fcGl4ZWxC
dWZmZXJXaWR0aCAhPSB3aWR0aCB8fCBtX3BpeGVsQnVmZmVySGVpZ2h0ICE9IGhlaWdodCkgewot
ICAgICAgICAgICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKQotICAgICAgICAgICAgICAgIENGUmVs
ZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7Ci0gICAgICAgICAgICBtX3BpeGVsQnVmZmVyUG9vbCA9
IGNyZWF0ZVBpeGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgICAgIGlmICgh
bV9waXhlbEJ1ZmZlclBvb2wpIHsKLSAgICAgICAgICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8
PCAiVlA5IGRlY29kZXI6IHVuYWJsZSB0byBjcmVhdGUgcGl4ZWwgYnVmZmVyIHBvb2wiOwotICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
bV9waXhlbEJ1ZmZlcldpZHRoID0gd2lkdGg7Ci0gICAgICAgICAgICBtX3BpeGVsQnVmZmVySGVp
Z2h0ID0gaGVpZ2h0OwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVs
QnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4ZWxC
dWZmZXJQb29sLCAmbmV3UGl4ZWxCdWZmZXIpOwotICAgICAgICBpZiAoc3RhdHVzICE9IGtDVlJl
dHVyblN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDkgZGVj
b2RlcjogdW5hYmxlIHRvIGNyZWF0ZSBwaXhlbCBidWZmZXIgZnJvbSBwb29sIjsKLSAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG5ld1BpeGVs
QnVmZmVyOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFt
ZSwgW3RoaXNdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkgLT4gQ1ZQaXhlbEJ1ZmZlclJl
ZiB7CisgICAgICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBudWxscHRyOworICAg
ICAgICBpZiAoQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGVQaXhlbEJ1ZmZlcihrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBtX3BpeGVsQnVmZmVyUG9vbCwgJnBpeGVsQnVmZmVyKSA9PSBrQ1ZSZXR1cm5TdWNj
ZXNzKQorICAgICAgICAgICAgcmV0dXJuIHBpeGVsQnVmZmVyOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9KTsKIAogICAgIFZURGVjb2RlclNlc3Npb25FbWl0RGVjb2RlZEZyYW1lKG1f
c2Vzc2lvbiwgbV9jdXJyZW50RnJhbWUsIHBpeGVsQnVmZmVyID8gbm9FcnIgOiAtMSwgMCwgcGl4
ZWxCdWZmZXIpOwogICAgIG1fY3VycmVudEZyYW1lID0gbnVsbHB0cjsKLSAgICBpZiAobmV3UGl4
ZWxCdWZmZXIpCi0gICAgICAgIENGUmVsZWFzZShuZXdQaXhlbEJ1ZmZlcik7CisgICAgaWYgKHBp
eGVsQnVmZmVyKQorICAgICAgICBDRlJlbGVhc2UocGl4ZWxCdWZmZXIpOwogICAgIHJldHVybiAw
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsu
Y3BwCmluZGV4IDkyZWE3NjhmZmRlMThlZWJmMTQ4NjRjOTdmMTQ5OTI3MmIwNGY5NzUuLmM3NjEy
Y2I1Y2NiNzc3OGU0MzFlYzVlY2MyOTY3M2UxMjQwNDkzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCkBAIC02NCw2ICs2NCwxNiBAQCBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwg
Q01UaW1lUmFuZ2VNYWtlLCBDTVRpbQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNVGltZVJhbmdlRXF1YWwsIEJvb2xlYW4sIChDTVRp
bWVSYW5nZSByYW5nZTEsIENNVGltZVJhbmdlIHJhbmdlMiksIChyYW5nZTEsIHJhbmdlMiksIFBB
TF9FWFBPUlQpCiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNjcmlw
dGlvbkV4dGVuc2lvbkF0b21zLCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19D
T05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXRE
ZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX0RDSV9QMywgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQp
CitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRp
YSwga0NNRm9ybWF0RGVzY3JpcHRpb25Db2xvclByaW1hcmllc19JVFVfUl8yMDIwLCBDRlN0cmlu
Z1JlZiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX1Az
X0Q2NSwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRl
bnNpb25fRnVsbFJhbmdlVmlkZW8sIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1h
dERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9JVFVfUl8yMDIwLCBDRlN0cmluZ1JlZiwgUEFM
X0VYUE9SVCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
Q29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fSVRVX1JfMjEw
MF9ITEcsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9T
T1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0aW9uVHJh
bnNmZXJGdW5jdGlvbl9MaW5lYXIsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1h
dERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9TTVBURV9TVF8yMDg0X1BRLCBDRlN0cmluZ1Jl
ZiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fU01Q
VEVfU1RfNDI4XzEsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0
aW9uWUNiQ3JNYXRyaXhfSVRVX1JfMjAyMCwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQpCiBTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NN
VGV4dE1hcmt1cEFsaWdubWVudFR5cGVfRW5kLCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKIFNP
RlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBr
Q01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9NaWRkbGUsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JU
KQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVk
aWEsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX1N0YXJ0LCBDRlN0cmluZ1JlZiwgUEFMX0VY
UE9SVCkKQEAgLTE3Niw3ICsxODYsNyBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01DbG9ja0dldFRpbWUsIENNVGltZQogU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNU2Ft
cGxlQnVmZmVyQ2FsbEZvckVhY2hTYW1wbGUsIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYg
c2J1ZiwgT1NTdGF0dXMgKCogQ01TQU1QTEVCVUZGRVJDQUxMX05PRVNDQVBFIGNhbGxiYWNrKSgg
Q01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBDTUl0ZW1Db3VudCBpbmRleCwgdm9pZCAq
cmVmY29uKSwgdm9pZCAqcmVmY29uKSwgKHNidWYsIGNhbGxiYWNrLCByZWZjb24pLCBQQUxfRVhQ
T1JUKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3Jl
TWVkaWEsIENNU2FtcGxlQnVmZmVyQ2FsbEJsb2NrRm9yRWFjaFNhbXBsZSwgT1NTdGF0dXMsIChD
TVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBPU1N0YXR1cyAoXiBDTVNBTVBMRUJVRkZFUkNBTExfTk9F
U0NBUEUgaGFuZGxlcikoQ01TYW1wbGVCdWZmZXJSZWYsIENNSXRlbUNvdW50KSksIChzYnVmLCBo
YW5kbGVyKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09V
UkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVu
c2lvbl9Qcm90ZWN0ZWRDb250ZW50T3JpZ2luYWxGb3JtYXQsIENGU3RyaW5nUmVmLCBQQUxfRVhQ
T1JUKQotCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX3NS
R0IsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2Yv
Q29yZU1lZGlhU29mdExpbmsuaAppbmRleCA4NDI5MzMyOTIzMTRkODAzYjJkZjE2Mzk0ZTJiYmRi
ODZhZDU3ODEzLi44ZGExYWEzNWEyOTIzNmFiNTdhNzMwNDhlYmQ5NjZmMjRkY2U1ZjkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCkBAIC04Niw4
ICs4NiwzMCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
Q01UaW1lUmFuZ2VFcXVhbCwgQm9vbGVhbiwgKENNVGltZQogCiBTT0ZUX0xJTktfQ09OU1RBTlRf
Rk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25f
U2FtcGxlRGVzY3JpcHRpb25FeHRlbnNpb25BdG9tcywgQ0ZTdHJpbmdSZWYpCiAjZGVmaW5lIGtD
TUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRv
bXMgZ2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNj
cmlwdGlvbkV4dGVuc2lvbkF0b21zKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBB
TCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX0RDSV9QMywg
Q0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZv
cm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfRENJX1AzIGdldF9Db3JlTWVkaWFfa0NNRm9y
bWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25Db2xvclByaW1hcmll
c19EQ0lfUDMoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEs
IGtDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfSVRVX1JfMjAyMCwgQ0ZTdHJpbmdS
ZWYpCisjZGVmaW5lIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2Ny
aXB0aW9uQ29sb3JQcmltYXJpZXNfSVRVX1JfMjAyMCBnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERl
c2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfSVRV
X1JfMjAyMCgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
a0NNRm9ybWF0RGVzY3JpcHRpb25Db2xvclByaW1hcmllc19QM19ENjUsIENGU3RyaW5nUmVmKQor
I2RlZmluZSBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlv
bkNvbG9yUHJpbWFyaWVzX1AzX0Q2NSBnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9u
RXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfUDNfRDY1KCkKK1NP
RlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNj
cmlwdGlvbkV4dGVuc2lvbl9GdWxsUmFuZ2VWaWRlbywgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtD
TUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9u
X0Z1bGxSYW5nZVZpZGVvIGdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNp
b25fa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fRnVsbFJhbmdlVmlkZW8oKQorU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0
aW9uVHJhbnNmZXJGdW5jdGlvbl9JVFVfUl8yMDIwLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NN
Rm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1
bmN0aW9uX0lUVV9SXzIwMjAgZ2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVu
c2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fSVRVX1JfMjAyMCgpCitT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVz
Y3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzIxMDBfSExHLCBDRlN0cmluZ1JlZikKKyNk
ZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25U
cmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzIxMDBfSExHIGdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVz
Y3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX0lU
VV9SXzIxMDBfSExHKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1l
ZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fTGluZWFyLCBDRlN0cmlu
Z1JlZikKKyNkZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVz
Y3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX0xpbmVhciBnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERl
c2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9M
aW5lYXIoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtD
TUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9TTVBURV9TVF8yMDg0X1BRLCBDRlN0
cmluZ1JlZikKKyNkZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0
RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NNUFRFX1NUXzIwODRfUFEgZ2V0X0NvcmVNZWRp
YV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5z
ZmVyRnVuY3Rpb25fU01QVEVfU1RfMjA4NF9QUSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hF
QURFUihQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9u
X1NNUFRFX1NUXzQyOF8xLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRp
b25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NNUFRFX1NU
XzQyOF8xIGdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9y
bWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NNUFRFX1NUXzQyOF8xKCkKK1NPRlRfTElO
S19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlv
bllDYkNyTWF0cml4X0lUVV9SXzIwMjAsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ01Gb3JtYXRE
ZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvbllDYkNyTWF0cml4X0lUVV9S
XzIwMjAgZ2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3Jt
YXREZXNjcmlwdGlvbllDYkNyTWF0cml4X0lUVV9SXzIwMjAoKQogU09GVF9MSU5LX0NPTlNUQU5U
X01BWV9GQUlMX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0aW9u
RXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCwgQ0ZTdHJpbmdSZWYpCiAj
ZGVmaW5lIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmln
aW5hbEZvcm1hdCBnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1By
b3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgpCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZB
SUxfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2Zl
ckZ1bmN0aW9uX3NSR0IsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ01Gb3JtYXREZXNjcmlwdGlv
bkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fc1JHQiBnZXRf
Q29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0
aW9uVHJhbnNmZXJGdW5jdGlvbl9zUkdCKCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9FbmQsIENGU3RyaW5n
UmVmKQogI2RlZmluZSBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9FbmQgZ2V0X0NvcmVNZWRp
YV9rQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9FbmQoKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRs
ZSwgQ0ZTdHJpbmdSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9D
b3JlVmlkZW9Tb2Z0TGluay5jcHAKaW5kZXggOGZlMGY3MGVkYTk2N2IxZjk2YjY1MTUwZDNjODg2
N2U5NWE2NWVjNy4uZDdmMjhjODVjYTllZWY0YjczZjg1NzhlYTA5MmM1MWEwZDhiZWRjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5r
LmNwcApAQCAtNjAsNiArNjAsMTMgQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2Vi
Q29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4S2V5LAogU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlcllD
YkNyTWF0cml4X0lUVV9SXzcwOV8yLCBDRlN0cmluZ1JlZikKIFNPRlRfTElOS19DT05TVEFOVF9G
T1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywga0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9J
VFVfUl82MDFfNCwgQ0ZTdHJpbmdSZWYpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShX
ZWJDb3JlLCBDb3JlVmlkZW8sIGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhfU01QVEVfMjQwTV8x
OTk1LCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUs
IENvcmVWaWRlbywga0NWSW1hZ2VCdWZmZXJDb2xvclByaW1hcmllc19FQlVfMzIxMywgQ0ZTdHJp
bmdSZWYpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlVmlkZW8s
IGtDVkltYWdlQnVmZmVyQ29sb3JQcmltYXJpZXNfSVRVX1JfNzA5XzIsIENGU3RyaW5nUmVmKQor
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFn
ZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX1NNUFRFX0MsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0NP
TlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlckNvbG9y
UHJpbWFyaWVzS2V5LCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNF
KFdlYkNvcmUsIENvcmVWaWRlbywga0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0aW9uS2V5LCBD
RlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVW
aWRlbywga0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzcwOV8yLCBDRlN0cmlu
Z1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywg
a0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0aW9uX1NNUFRFXzI0ME1fMTk5NSwgQ0ZTdHJpbmdS
ZWYpCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJDb3JlLCBDb3Jl
VmlkZW8sIGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhfRENJX1AzLCBDRlN0cmluZ1JlZikKIFNP
RlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywg
a0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9QM19ENjUsIENGU3RyaW5nUmVmKQogU09GVF9MSU5L
X0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFn
ZUJ1ZmZlcllDYkNyTWF0cml4X0lUVV9SXzIwMjAsIENGU3RyaW5nUmVmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmgKaW5kZXggYWNkZDI0
MjkzZTVlNTkyMjQwYzY4ZTRmZGY4OGFiNDI0YzZlMWIxZC4uYWU2Y2NkN2IzZjUyOWFhNGY0NThl
ZjM5ODU5ZDFmYWFkZjAwNDc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvQ29yZVZpZGVvU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5oCkBAIC05NSw2ICs5NSwyMCBAQCBTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlVmlkZW8sIGtDVlBpeGVsQnVmZmVyQ0dCaXRt
YXBDb250ZXh0QwogI2RlZmluZSBrQ1ZQaXhlbEJ1ZmZlckNHQml0bWFwQ29udGV4dENvbXBhdGli
aWxpdHlLZXkgZ2V0X0NvcmVWaWRlb19rQ1ZQaXhlbEJ1ZmZlckNHQml0bWFwQ29udGV4dENvbXBh
dGliaWxpdHlLZXkoKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29y
ZVZpZGVvLCBrQ1ZQaXhlbEJ1ZmZlckNHSW1hZ2VDb21wYXRpYmlsaXR5S2V5LCBDRlN0cmluZ1Jl
ZikKICNkZWZpbmUga0NWUGl4ZWxCdWZmZXJDR0ltYWdlQ29tcGF0aWJpbGl0eUtleSBnZXRfQ29y
ZVZpZGVvX2tDVlBpeGVsQnVmZmVyQ0dJbWFnZUNvbXBhdGliaWxpdHlLZXkoKQorU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlckNv
bG9yUHJpbWFyaWVzX0VCVV8zMjEzLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NWSW1hZ2VCdWZm
ZXJDb2xvclByaW1hcmllc19FQlVfMzIxMyBnZXRfQ29yZVZpZGVvX2tDVkltYWdlQnVmZmVyQ29s
b3JQcmltYXJpZXNfRUJVXzMyMTMoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2Vi
Q29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX0lUVV9SXzcwOV8y
LCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NWSW1hZ2VCdWZmZXJDb2xvclByaW1hcmllc19JVFVf
Ul83MDlfMiBnZXRfQ29yZVZpZGVvX2tDVkltYWdlQnVmZmVyQ29sb3JQcmltYXJpZXNfSVRVX1Jf
NzA5XzIoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVv
LCBrQ1ZJbWFnZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX1NNUFRFX0MsIENGU3RyaW5nUmVmKQorI2Rl
ZmluZSBrQ1ZJbWFnZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX1NNUFRFX0MgZ2V0X0NvcmVWaWRlb19r
Q1ZJbWFnZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX1NNUFRFX0MoKQorU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlckNvbG9yUHJpbWFy
aWVzS2V5LCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NWSW1hZ2VCdWZmZXJDb2xvclByaW1hcmll
c0tleSBnZXRfQ29yZVZpZGVvX2tDVkltYWdlQnVmZmVyQ29sb3JQcmltYXJpZXNLZXkoKQorU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1
ZmZlclRyYW5zZmVyRnVuY3Rpb25LZXksIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ1ZJbWFnZUJ1
ZmZlclRyYW5zZmVyRnVuY3Rpb25LZXkgZ2V0X0NvcmVWaWRlb19rQ1ZJbWFnZUJ1ZmZlclRyYW5z
ZmVyRnVuY3Rpb25LZXkoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwg
Q29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlclRyYW5zZmVyRnVuY3Rpb25fSVRVX1JfNzA5XzIsIENG
U3RyaW5nUmVmKQorI2RlZmluZSBrQ1ZJbWFnZUJ1ZmZlclRyYW5zZmVyRnVuY3Rpb25fSVRVX1Jf
NzA5XzIgZ2V0X0NvcmVWaWRlb19rQ1ZJbWFnZUJ1ZmZlclRyYW5zZmVyRnVuY3Rpb25fSVRVX1Jf
NzA5XzIoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVv
LCBrQ1ZJbWFnZUJ1ZmZlclRyYW5zZmVyRnVuY3Rpb25fU01QVEVfMjQwTV8xOTk1LCBDRlN0cmlu
Z1JlZikKKyNkZWZpbmUga0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0aW9uX1NNUFRFXzI0ME1f
MTk5NSBnZXRfQ29yZVZpZGVvX2tDVkltYWdlQnVmZmVyVHJhbnNmZXJGdW5jdGlvbl9TTVBURV8y
NDBNXzE5OTUoKQogCiAjaWYgVVNFKE9QRU5HTF9FUykKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZPcGVuR0xFU1RleHR1cmVDYWNoZUNyZWF0ZSwg
Q1ZSZXR1cm4sIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGRGljdGlvbmFyeVJlZiBjYWNo
ZUF0dHJpYnV0ZXMsIENWRUFHTENvbnRleHQgZWFnbENvbnRleHQsIENGRGljdGlvbmFyeVJlZiB0
ZXh0dXJlQXR0cmlidXRlcywgQ1ZPcGVuR0xFU1RleHR1cmVDYWNoZVJlZiogY2FjaGVPdXQpLCAo
YWxsb2NhdG9yLCBjYWNoZUF0dHJpYnV0ZXMsIGVhZ2xDb250ZXh0LCB0ZXh0dXJlQXR0cmlidXRl
cywgY2FjaGVPdXQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCA0MGM3
ZTg0ODI3M2M1YzJhMjIwNGFmNzRhNTI3ZDhlYTE1MDRkNTRkLi4xNjQzYTc2OTk5MTFiYTU0N2Fh
YjVmNjExZDRkYjU5NmY5MzE0NGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbmNsdWRl
ICJBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKyNpbmNsdWRlICJDb3JlVmlkZW9Tb2Z0TGluay5o
IgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRpYURl
c2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCkBAIC0zOCw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiVlA5VXRpbGl0aWVzQ29jb2EuaCIKICNpbmNsdWRlICJWaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EYXRhVmlldy5oPgor
I2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2luY2x1ZGUgPHdlYm0vd2Vi
bV9wYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgpAQCAtNDksNiArNTEsOCBAQCBXVEZfV0VBS19MSU5LX0ZPUkNFX0lNUE9SVCh3ZWJt
Ojpzd2FwKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1lc3BhY2UgUEFMOwor
CiBzdGF0aWMgYm9vbCBpc1dlYm1QYXJzZXJBdmFpbGFibGUoKQogewogICAgIHJldHVybiAhIXdl
Ym06OnN3YXAgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJN
UGFyc2VyRW5hYmxlZCgpOwpAQCAtNTMzLDYgKzUzNywyNyBAQCBzdGF0aWMgdWludDhfdCBjb252
ZXJ0VG9Db2xvclByaW1hcmllcyhjb25zdCBQcmltYXJpZXMmIGNvZWZmaWNpZW50cykKICAgICB9
CiB9CiAKK3N0YXRpYyBDRlN0cmluZ1JlZiBjb252ZXJ0VG9DTUNvbG9yUHJpbWFyaWVzKHVpbnQ4
X3QgcHJpbWFyaWVzKQoreworICAgIHN3aXRjaCAocHJpbWFyaWVzKSB7CisgICAgY2FzZSBWUENv
bmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6QlRfNzA5XzY6CisgICAgICAgIHJldHVybiBrQ1ZJ
bWFnZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX0lUVV9SXzcwOV8yOworICAgIGNhc2UgVlBDb25maWd1
cmF0aW9uQ29sb3JQcmltYXJpZXM6OkVCVV9UZWNoXzMyMTNfRToKKyAgICAgICAgcmV0dXJuIGtD
VkltYWdlQnVmZmVyQ29sb3JQcmltYXJpZXNfRUJVXzMyMTM7CisgICAgY2FzZSBWUENvbmZpZ3Vy
YXRpb25Db2xvclByaW1hcmllczo6QlRfNjAxXzc6CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25D
b2xvclByaW1hcmllczo6U01QVEVfU1RfMjQwOgorICAgICAgICByZXR1cm4ga0NWSW1hZ2VCdWZm
ZXJDb2xvclByaW1hcmllc19TTVBURV9DOworICAgIGNhc2UgVlBDb25maWd1cmF0aW9uQ29sb3JQ
cmltYXJpZXM6OlNNUFRFX1JQXzQzMV8yOgorICAgICAgICByZXR1cm4ga0NNRm9ybWF0RGVzY3Jp
cHRpb25Db2xvclByaW1hcmllc19EQ0lfUDM7CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25Db2xv
clByaW1hcmllczo6U01QVEVfRUdfNDMyXzE6CisgICAgICAgIHJldHVybiBrQ01Gb3JtYXREZXNj
cmlwdGlvbkNvbG9yUHJpbWFyaWVzX1AzX0Q2NTsKKyAgICBjYXNlIFZQQ29uZmlndXJhdGlvbkNv
bG9yUHJpbWFyaWVzOjpCVF8yMDIwX05vbmNvbnN0YW50X0x1bWluYW5jZToKKyAgICAgICAgcmV0
dXJuIGtDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfSVRVX1JfMjAyMDsKKyAgICB9
CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogc3RhdGljIHVpbnQ4X3QgY29udmVydFRvVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MoY29uc3QgVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MmIGNoYXJh
Y3RlcmlzdGljcykKIHsKICAgICBzd2l0Y2ggKGNoYXJhY3RlcmlzdGljcykgewpAQCAtNTczLDYg
KzU5OCwzMSBAQCBzdGF0aWMgdWludDhfdCBjb252ZXJ0VG9UcmFuc2ZlckNoYXJhY3RlcmlzdGlj
cyhjb25zdCBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyYgYwogICAgIH0KIH0KIAorc3RhdGljIENG
U3RyaW5nUmVmIGNvbnZlcnRUb0NNVHJhbnNmZXJGdW5jdGlvbih1aW50OF90IGNoYXJhY3Rlcmlz
dGljcykKK3sKKyAgICBzd2l0Y2ggKGNoYXJhY3RlcmlzdGljcykgeworICAgIGNhc2UgVlBDb25m
aWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzcwOV82OgorICAgICAgICByZXR1
cm4ga0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzcwOV8yOworICAgIGNhc2Ug
VlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlNNUFRFX1NUXzI0MDoKKyAg
ICAgICAgcmV0dXJuIGtDVkltYWdlQnVmZmVyVHJhbnNmZXJGdW5jdGlvbl9TTVBURV8yNDBNXzE5
OTU7CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6U01Q
VEVfU1RfMjA4NDoKKyAgICAgICAgcmV0dXJuIGtDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJG
dW5jdGlvbl9TTVBURV9TVF8yMDg0X1BROworICAgIGNhc2UgVlBDb25maWd1cmF0aW9uVHJhbnNm
ZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzIwMjBfMTBiaXQ6CisgICAgY2FzZSBWUENvbmZpZ3VyYXRp
b25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfMjAyMF8xMmJpdDoKKyAgICAgICAgcmV0dXJu
IGtDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9JVFVfUl8yMDIwOworICAgIGNh
c2UgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlNNUFRFX1NUXzQyOF8x
OgorICAgICAgICByZXR1cm4ga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NN
UFRFX1NUXzQyOF8xOworICAgIGNhc2UgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3M6OkJUXzIxMDBfSExHOgorICAgICAgICByZXR1cm4ga0NNRm9ybWF0RGVzY3JpcHRpb25U
cmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzIxMDBfSExHOworICAgIGNhc2UgVlBDb25maWd1cmF0aW9u
VHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OklFQ182MTk2Nl8yXzE6CisgICAgICAgIHJldHVybiBQ
QUw6OmNhbkxvYWRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlv
bl9zUkdCKCkgPyBnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tD
TUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9zUkdCKCkgOiBudWxscHRyOworICAg
IGNhc2UgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkxpbmVhcjoKKyAg
ICAgICAgcmV0dXJuIGtDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9MaW5lYXI7
CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHN0YXRpYyB1aW50OF90IGNvbnZl
cnRUb01hdHJpeENvZWZmaWNpZW50cyhjb25zdCBNYXRyaXhDb2VmZmljaWVudHMmIGNvZWZmaWNp
ZW50cykKIHsKICAgICBzd2l0Y2ggKGNvZWZmaWNpZW50cykgewpAQCAtNTk5LDYgKzY0OSwyMyBA
QCBzdGF0aWMgdWludDhfdCBjb252ZXJ0VG9NYXRyaXhDb2VmZmljaWVudHMoY29uc3QgTWF0cml4
Q29lZmZpY2llbnRzJiBjb2VmZmljaWVudAogICAgIH0KIH0KIAorc3RhdGljIENGU3RyaW5nUmVm
IGNvbnZlcnRUb0NNWUNiQ1JNYXRyaXgodWludDhfdCBjb2VmZmljaWVudHMpCit7CisgICAgc3dp
dGNoIChjb2VmZmljaWVudHMpIHsKKyAgICBjYXNlIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZm
aWNpZW50czo6QlRfMjAyMF9Ob25jb25zdGFudF9MdW1pbmFuY2U6CisgICAgICAgIHJldHVybiBr
Q01Gb3JtYXREZXNjcmlwdGlvbllDYkNyTWF0cml4X0lUVV9SXzIwMjA7CisgICAgY2FzZSBWUENv
bmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkJUXzQ3MF83X0JHOgorICAgIGNhc2UgVlBD
b25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpCVF82MDFfNzoKKyAgICAgICAgcmV0dXJu
IGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhfSVRVX1JfNjAxXzQ7CisgICAgY2FzZSBWUENvbmZp
Z3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkJUXzcwOV82OgorICAgICAgICByZXR1cm4ga0NW
SW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9JVFVfUl83MDlfMjsKKyAgICBjYXNlIFZQQ29uZmlndXJh
dGlvbk1hdHJpeENvZWZmaWNpZW50czo6U01QVEVfU1RfMjQwOgorICAgICAgICByZXR1cm4ga0NW
SW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9TTVBURV8yNDBNXzE5OTU7CisgICAgfQorCisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKIHN0YXRpYyB1aW50OF90IGNvbnZlcnRTdWJzYW1wbGluZ1hZVG9D
aHJvbWFTdWJzYW1wbGluZyh1aW50NjRfdCB4LCB1aW50NjRfdCB5KQogewogICAgIGlmICh4ICYg
eSkKQEAgLTY5MSwxMiArNzU4LDMzIEBAIHN0YXRpYyBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlw
dGlvblJlZj4gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA5SGVhZGVyUGFyCiAgICAgQ0ZU
eXBlUmVmIGNvbmZpZ3VyYXRpb25WYWx1ZXNbXSA9IHsgZGF0YS5nZXQoKSB9OwogICAgIGF1dG8g
Y29uZmlndXJhdGlvbkRpY3QgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBjb25maWd1cmF0aW9uS2V5cywgY29uZmlndXJhdGlvblZhbHVlcywgV1RGX0FS
UkFZX0xFTkdUSChjb25maWd1cmF0aW9uS2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgIFZlY3RvcjxD
RlR5cGVSZWY+IGF0b21zS2V5cyB7IGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBs
ZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRvbXMgfTsKLSAgICBWZWN0b3I8Q0ZUeXBlUmVmPiBhdG9t
c1ZhbHVlcyA9IHsgY29uZmlndXJhdGlvbkRpY3QuZ2V0KCkgfTsKLSAgICBhdXRvIGF0b21zID0g
YWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXRvbXNLZXlz
LmRhdGEoKSwgYXRvbXNWYWx1ZXMuZGF0YSgpLCBhdG9tc0tleXMuc2l6ZSgpLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CisgICAgVmVjdG9yPENGVHlwZVJlZj4gZXh0ZW5zaW9uc0tleXMgeyBrQ01Gb3JtYXREZXNjcmlw
dGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNjcmlwdGlvbkV4dGVuc2lvbkF0b21zIH07CisgICAgVmVj
dG9yPENGVHlwZVJlZj4gZXh0ZW5zaW9uc1ZhbHVlcyA9IHsgY29uZmlndXJhdGlvbkRpY3QuZ2V0
KCkgfTsKKworICAgIGlmIChyZWNvcmQudmlkZW9GdWxsUmFuZ2VGbGFnID09IFZQQ29uZmlndXJh
dGlvblJhbmdlOjpGdWxsUmFuZ2UpIHsKKyAgICAgICAgZXh0ZW5zaW9uc0tleXMuYXBwZW5kKGtD
TUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX0Z1bGxSYW5nZVZpZGVvKTsKKyAgICAgICAgZXh0
ZW5zaW9uc1ZhbHVlcy5hcHBlbmQoa0NGQm9vbGVhblRydWUpOworICAgIH0KKworICAgIGlmIChh
dXRvIGNtQ29sb3JQcmltYXJpZXMgPSBjb252ZXJ0VG9DTUNvbG9yUHJpbWFyaWVzKHJlY29yZC5j
b2xvclByaW1hcmllcykpIHsKKyAgICAgICAgZXh0ZW5zaW9uc0tleXMuYXBwZW5kKGtDVkltYWdl
QnVmZmVyQ29sb3JQcmltYXJpZXNLZXkpOworICAgICAgICBleHRlbnNpb25zVmFsdWVzLmFwcGVu
ZChjbUNvbG9yUHJpbWFyaWVzKTsKKyAgICB9CisKKyAgICBpZiAoYXV0byBjbVRyYW5zZmVyRnVu
Y3Rpb24gPSBjb252ZXJ0VG9DTVRyYW5zZmVyRnVuY3Rpb24ocmVjb3JkLnRyYW5zZmVyQ2hhcmFj
dGVyaXN0aWNzKSkgeworICAgICAgICBleHRlbnNpb25zS2V5cy5hcHBlbmQoa0NWSW1hZ2VCdWZm
ZXJUcmFuc2ZlckZ1bmN0aW9uS2V5KTsKKyAgICAgICAgZXh0ZW5zaW9uc1ZhbHVlcy5hcHBlbmQo
Y21UcmFuc2ZlckZ1bmN0aW9uKTsKKyAgICB9CisKKyAgICBpZiAoYXV0byBjbU1hdHJpeCA9IGNv
bnZlcnRUb0NNWUNiQ1JNYXRyaXgocmVjb3JkLm1hdHJpeENvZWZmaWNpZW50cykpIHsKKyAgICAg
ICAgZXh0ZW5zaW9uc0tleXMuYXBwZW5kKGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhLZXkpOwor
ICAgICAgICBleHRlbnNpb25zVmFsdWVzLmFwcGVuZChjbU1hdHJpeCk7CisgICAgfQorCisgICAg
YXV0byBleHRlbnNpb25zID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgZXh0ZW5zaW9uc0tleXMuZGF0YSgpLCBleHRlbnNpb25zVmFsdWVzLmRhdGEoKSwg
ZXh0ZW5zaW9uc0tleXMuc2l6ZSgpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKICAgICBDTVZpZGVvRm9ybWF0RGVz
Y3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24gPSBudWxscHRyOwotICAgIGlmIChub0VyciAh
PSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NN
VmlkZW9Db2RlY1R5cGVfVlA5LCBwYXJzZXIud2lkdGgoKSwgcGFyc2VyLmhlaWdodCgpLCBhdG9t
cy5nZXQoKSwgJmZvcm1hdERlc2NyaXB0aW9uKSkKKyAgICBpZiAobm9FcnIgIT0gQ01WaWRlb0Zv
cm1hdERlc2NyaXB0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDTVZpZGVvQ29kZWNU
eXBlX1ZQOSwgcGFyc2VyLndpZHRoKCksIHBhcnNlci5oZWlnaHQoKSwgZXh0ZW5zaW9ucy5nZXQo
KSwgJmZvcm1hdERlc2NyaXB0aW9uKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0
dXJuIGFkb3B0Q0YoZm9ybWF0RGVzY3JpcHRpb24pOwogfQpAQCAtNzIxLDEyICs4MDksNiBAQCB3
ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZShjb25zdCBGcmFtZU1l
dGFkYXRhJiBtZXRhZGF0YSwgUmVhZAogICAgIGlmICghYmxvY2spCiAgICAgICAgIHJldHVybiBT
dGF0dXMoU3RhdHVzOjprSW52YWxpZEVsZW1lbnRJZCk7CiAKLSAgICBhdXRvIGlzU3luYyA9IFdU
Rjo6c3dpdGNoT24oKm1fY3VycmVudEJsb2NrLCBbXShCbG9jayYpIHsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0sIFtdKFNpbXBsZUJsb2NrJiBibG9jaykgewotICAgICAgICByZXR1cm4g
YmxvY2suaXNfa2V5X2ZyYW1lOwotICAgIH0pOwotCiAgICAgYXV0byB0cmFja051bWJlciA9IGJs
b2NrLT50cmFja19udW1iZXI7CiAKICAgICBhdXRvKiB0cmFja0RhdGEgPSB0cmFja0RhdGFGb3JU
cmFja051bWJlcih0cmFja051bWJlcik7CkBAIC03OTgsNyArODgwLDcgQEAgd2VibTo6U3RhdHVz
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRnJhbWUoY29uc3QgRnJhbWVNZXRhZGF0YSYgbWV0
YWRhdGEsIFJlYWQKICAgICAgICAgdHJhY2tEYXRhLT5jdXJyZW50QmxvY2tCdWZmZXIgPSBudWxs
cHRyOwogICAgICAgICB0cmFja0RhdGEtPmN1cnJlbnRCbG9ja0J1ZmZlclBvc2l0aW9uID0gMDsK
IAotICAgICAgICBpZiAoIWlzU3luYykgeworICAgICAgICBpZiAoIWhlYWRlclBhcnNlci5rZXko
KSkgewogICAgICAgICAgICAgYXV0byBhdHRhY2htZW50c0FycmF5ID0gQ01TYW1wbGVCdWZmZXJH
ZXRTYW1wbGVBdHRhY2htZW50c0FycmF5KHNhbXBsZUJ1ZmZlci5nZXQoKSwgdHJ1ZSk7CiAgICAg
ICAgICAgICBBU1NFUlQoYXR0YWNobWVudHNBcnJheSk7CiAgICAgICAgICAgICBpZiAoIWF0dGFj
aG1lbnRzQXJyYXkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405503</attachid>
            <date>2020-07-29 14:37:14 -0700</date>
            <delta_ts>2020-07-29 18:01:10 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-214928-20200729143713.patch</filename>
            <type>text/plain</type>
            <size>38116</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBiMDU1NWMzNzdkZDY0ZmJmMGM3ODU0N2RkNDdmNDQxNTYyZDY5YTIxLi44NTQ5
YjE5OTUyOGNjYWVkNGJlY2M5YTY0ZTUxMDBhMDNjNTY1OGRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMC0wNy0yOSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IEhEUiBkZWNvZGUgaW4g
U1cgVlA5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTQ5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgU3Vw
cG9ydCBjb252ZXJ0aW5nIEkwMTAgYnVmZmVycyAoZnVsbC1wbGFuYXIsIDEwLWJpdCBkYXRhIHBh
Y2tlZCBpbnRvIHRoZSBMU0Igb2YgYSAxNi1iaXQgaW50KQorICAgICAgICBpbnRvIENWUGl4ZWxC
dWZmZXJzIChiaS1wbGFuYXIsIDEwLWJpdCBkYXRhIHBhY2tlZCBpbnRvIHRoZSBNU0Igb2YgYSAx
Ni1iaXQgaW50KS4gVGhpcyByZXF1aXJlcworICAgICAgICB1c2luZyBmdW5jdGlvbnMgZnJvbSBs
aWJ5dXYgdG8gbWVyZ2UgYW5kIHNjYWxlIDE2LWJpdCBwbGFuYXIgZGF0YSwgb3B0aW1pemVkIGZv
ciBBVlgyLiBUbyBrbm93CisgICAgICAgIHRoYXQgaW5jb21pbmcgYnVmZmVycyBhcmUgMTAtYml0
LCBhbmQgd2hldGhlciB0aGV5J3JlIGZ1bGwtcmFuZ2UsIHBhcnNlIHRoZSAndnBjQycgYXRvbSBh
dHRhY2hlZAorICAgICAgICB0byB0aGUgQ01Gb3JtYXREZXNjcmlwdGlvbi4KKworICAgICAgICAq
IFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW06CisgICAgICAgICh3
ZWJydGM6Ok1lcmdlVVZQbGFuZV8xNik6CisgICAgICAgICh3ZWJydGM6OkNvcHlQbGFuZV8xNik6
CisgICAgICAgICh3ZWJydGM6OkNvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcik6CisgICAgICAg
ICh3ZWJydGM6OnBpeGVsQnVmZmVyRnJvbUZyYW1lKToKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHA6CisgICAgICAgICh3ZWJydGM6OmNyZWF0
ZVdlYktpdFZQOURlY29kZXIpOgorICAgICAgICAod2VicnRjOjpzdGFydFZQOURlY29kZXJTZXNz
aW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpjcmVhdGVQ
aXhlbEJ1ZmZlclBvb2xGb3JGb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAgICh3ZWJydGM6Oldl
YktpdFZQOURlY29kZXJSZWNlaXZlcjo6RGVjb2RlZCk6CisKIDIwMjAtMDctMjIgIENvbnJhZCBT
aHVsdHogIDxjb25yYWRfc2h1bHR6QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgbWFjT1Mg
VmVyc2lvbiBtYWNyb3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MmI4YTcxYzUwMzc0NTk0MGQxNTMxMjMyMmVi
ZGI2NWI3NWNjNWI4Li5kMTU2ZGEyMmMzMDljMmYwNmQyNTg4NzljN2QxZWJhNTkwM2U5NWNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMDctMjkgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBIRFIgZGVjb2RlIGluIFNXIFZQOQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0OTI4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIENvbnZlcnQgdGhl
IGluY29taW5nIHByb3BlcnRpZXMgcGFyc2VkIGZyb20gdGhlIFZQOSBoZWFkZXIgaW50byBleHRl
bnNpb25zIHRvIG91cgorICAgICAgICBDTUZvcm1hdERlc2NyaXB0aW9uIGF0dGFjaGVkIHRvIGVh
Y2ggaW5jb21pbmcgdmlkZW8gZnJhbS4KKworICAgICAgICBEcml2ZS1ieSBmaXg6IEZpbGVzIGlu
IHRoZSB3aWxkIHdpbGwgaGF2ZSBpbmNvcnJlY3QgdmFsdWVzIGZvciB3aGV0aGVyIGEgZ2l2ZW4K
KyAgICAgICAgZnJhbWUgaXMgYSBrZXlmcmFtZSBvciBub3QuIFRydXN0IHRoZSBWUDkgaGVhZGVy
IHBhcnNlciByYXRoZXIgdGhhbiB0aGUgY29udGFpbmVyCisgICAgICAgIGluIHRoaXMgc2l0dWF0
aW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ01Db2xvclByaW1hcmll
cyk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DTVRyYW5zZmVyRnVuY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ01ZQ2JDUk1hdHJpeCk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZSk6CisKIDIwMjAtMDctMjYg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBNYWtl
IERlY29kZXJUZXN0IHJ1biBhZ2FpbnN0IC5tcDQgZmlsZXM7IGFkZCByYXRlLWxpbWl0aW5nLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKaW5kZXggZjJkMTk4MWE4MWMzM2IxOWFkNDM5YTY1MTNmMDM0OWU3M2My
N2ExNC4uODRkMjU4YjZkMzA5OTU3MWVlMjY1ZGMxY2ZhNGVmZWU2OTNmNTNkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDctMjkgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBIRFIgZGVjb2RlIGluIFNXIFZQOQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0OTI4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NjI4NDg0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgKiBwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwOgor
ICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oOgorCiAyMDIwLTA3LTIyICBDb25y
YWQgU2h1bHR6ICA8Y29ucmFkX3NodWx0ekBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIG1h
Y09TIFZlcnNpb24gbWFjcm9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0
aWVzLm1tCmluZGV4IDlmZjAzYjdkOTg0Mjk3OTdkNjAxZmFmMGQxNGE4NDY1ZTU4NTQ3OGYuLjU0
MzRlMzc1ODE5MTgxMmQ5ZjFhMzY0ZDJjMzhiYjdlNTViZmNjODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRp
bGl0aWVzLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNs
dWRlICJuYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmgiCiAjaW5jbHVkZSAidGhpcmRfcGFy
dHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZlcnRfZnJvbS5oIgorI2luY2x1ZGUgImxpYnl1
di9jcHVfaWQuaCIKKyNpbmNsdWRlICJsaWJ5dXYvcm93LmgiCiAjaW5jbHVkZSAiRnJhbWV3b3Jr
L0hlYWRlcnMvV2ViUlRDL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CkBAIC03NywxNCArNzksMTM1IEBAIHN0YXRpYyBib29sIENvcHlWaWRlb0ZyYW1lVG9QaXhl
bEJ1ZmZlcihjb25zdCB3ZWJydGM6Okk0MjBCdWZmZXJJbnRlcmZhY2UqIGZyYW1lCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKKy8vIE1lcmdlVVZQbGFuZV8xNiBtZXJnZXMgdHdvIHNlcGFyYXRlIFUg
YW5kIFYgcGxhbmVzIGludG8gYSBzaW5nbGUsIGludGVybGVhdmVkCisvLyBwbGFuZSwgd2hpbGUg
c2ltdWx0YW5lb3VzbHkgc2NhbGluZyB0aGUgb3V0cHV0LiBVc2UgJzY0JyBpbiB0aGUgc2NhbGUg
ZmllbGQgdG8KKy8vIHNoaWZ0IDEwLWJpdCBkYXRhIGZyb20gdGhlIExTQiBvZiB0aGUgMTYtYml0
IGludCB0byB0aGUgTVNCLgorLy8gTk9URTogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24gbGlieXV2
OjpNZXJnZVVWUGxhbmUuIElmIGxpYnl1diBldmVyIHN1cHBvcnRzCisvLyB0aGlzIG9wZXJhdGlv
biBkaXJlY3RseSwgd2Ugc2hvdWxkIHJlcGxhY2UgdGhlIGJlbG93IHdpdGggaXQuCisvLyBOT1RF
OiBsaWJ5dXYgb25seSBoYXMgYW4gb3BtaXRpemF0aW9uIG9mIE1lcmdlVVZSb3dfMTYgZm9yIEFW
WDIgaW50cmluc2ljcy4KKy8vIENhbGxpbmcgdGhpcyBtZXRob2Qgb24gYSBDUFUgd2l0aG91dCBB
VlgyIHdpbGwgZmFsbCBiYWNrIHRvIGEgc3RhbmRhcmQgQworLy8gaW1wbGVtZW50YXRpb24sIGFu
ZCB3aWxsIHByb2JhYmx5IGJlIHN1cGVyIHNsb3cuIEFkZCBuZXcgTWVyZ2VVVlJvd18xNgorLy8g
aW1wbGVtZW50YXRpb25zIGFzIHRoZXkgYmVjb21lIGF2YWlsYWJsZSBpbiBsaWJ5dXYuCit2b2lk
IE1lcmdlVVZQbGFuZV8xNihjb25zdCB1aW50MTZfdCogc3JjX3UsIGludCBzcmNfc3RyaWRlX3Us
IGNvbnN0IHVpbnQxNl90KiBzcmNfdiwgaW50IHNyY19zdHJpZGVfdiwgdWludDE2X3QqIGRzdF91
diwgaW50IGRzdF9zdHJpZGVfdXYsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHNjYWxlKSB7
CisgICAgdm9pZCAoKk1lcmdlVVZSb3dfMTYpKGNvbnN0IHVpbnQxNl90KiBzcmNfdSwgY29uc3Qg
dWludDE2X3QqIHNyY192LCB1aW50MTZfdCogZHN0X3V2LCBpbnQgc2NhbGUsIGludCB3aWR0aCkg
PSBsaWJ5dXY6Ok1lcmdlVVZSb3dfMTZfQzsKKyAgICAvLyBOZWdhdGl2ZSBoZWlnaHQgbWVhbnMg
aW52ZXJ0IHRoZSBpbWFnZS4KKyAgICBpZiAoaGVpZ2h0IDwgMCkgeworICAgICAgICBoZWlnaHQg
PSAtaGVpZ2h0OworICAgICAgICBkc3RfdXYgPSBkc3RfdXYgKyAoaGVpZ2h0IC0gMSkgKiBkc3Rf
c3RyaWRlX3V2OworICAgICAgICBkc3Rfc3RyaWRlX3V2ID0gLWRzdF9zdHJpZGVfdXY7CisgICAg
fQorICAgIC8vIENvYWxlc2NlIHJvd3MuCisgICAgaWYgKHNyY19zdHJpZGVfdSA9PSB3aWR0aCAm
JiBzcmNfc3RyaWRlX3YgPT0gd2lkdGggJiYgZHN0X3N0cmlkZV91diA9PSB3aWR0aCAqIDIpIHsK
KyAgICAgICAgd2lkdGggKj0gaGVpZ2h0OworICAgICAgICBoZWlnaHQgPSAxOworICAgICAgICBz
cmNfc3RyaWRlX3UgPSBzcmNfc3RyaWRlX3YgPSBkc3Rfc3RyaWRlX3V2ID0gMDsKKyAgICB9Cisj
aWYgZGVmaW5lZChIQVNfTUVSR0VVVlJPV18xNl9BVlgyKQorICAgIGlmIChsaWJ5dXY6OlRlc3RD
cHVGbGFnKGxpYnl1djo6a0NwdUhhc0FWWDIpKQorICAgICAgICBNZXJnZVVWUm93XzE2ID0gbGli
eXV2OjpNZXJnZVVWUm93XzE2X0FWWDI7CisjZW5kaWYKKworICAgIGZvciAoaW50IHkgPSAwOyB5
IDwgaGVpZ2h0OyArK3kpIHsKKyAgICAgICAgLy8gTWVyZ2UgYSByb3cgb2YgVSBhbmQgViBpbnRv
IGEgcm93IG9mIFVWLgorICAgICAgICBNZXJnZVVWUm93XzE2KHNyY191LCBzcmNfdiwgZHN0X3V2
LCBzY2FsZSwgd2lkdGgpOworICAgICAgICBzcmNfdSArPSBzcmNfc3RyaWRlX3UgLyBzaXplb2Yo
dWludDE2X3QpOworICAgICAgICBzcmNfdiArPSBzcmNfc3RyaWRlX3YgLyBzaXplb2YodWludDE2
X3QpOworICAgICAgICBkc3RfdXYgKz0gZHN0X3N0cmlkZV91diAvIHNpemVvZih1aW50MTZfdCk7
CisgICAgfQorfQorCisvLyBDb3B5UGxhbmVfMTYgd2lsbCBjb3B5IGEgcGxhbmUgb2YgMTYtYml0
IGRhdGEgZnJvbSBvbmUgbG9jYXRpb24gdG8gYW5vdGhlciwKKy8vIHdoaWxlIHNpbXVsdGFuZW91
c2x5IHNjYWxpbmcgdGhlIG91dHB1dC4gVXNlICc2NCcgaW4gdGhlIHNjYWxlIGZpZWxkIHRvCisv
LyBzaGlmdCAxMC1iaXQgZGF0YSBmcm9tIHRoZSBMU0Igb2YgYSAxNi1iaXQgaW50IHRvIHRoZSBN
U0IuCisvLyBOT1RFOiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvbiBNZXJnZVVWUGxhbmVfMTYgYWJv
dmUsIGJ1dCBvcGVyYXRlcyBvbiBhCisvLyBzaW5nbGUgcGxhbmUsIHJhdGVyIHRoYW4gaW50ZXJs
ZWF2aW5nIHR3byBwbGFuZXMuIElmIGxpYnl1diBldmVyIHN1cHBvcnRzCisvLyB0aGlzIG9wZXJh
dGlvbiBkaXJlY3RseSwgd2Ugc2hvdWxkIHJlcGxhY2UgdGhlIGJlbG93IHdpdGggaXQuCisvLyBO
T1RFOiBsaWJ5dXYgb25seSBoYXMgYW4gb3BtaXRpemF0aW9uIG9mIE1lcmdlVVZSb3dfMTYgZm9y
IEFWWDIgaW50cmluc2ljcy4KKy8vIENhbGxpbmcgdGhpcyBtZXRob2Qgb24gYSBDUFUgd2l0aG91
dCBBVlgyIHdpbGwgZmFsbCBiYWNrIHRvIGEgc3RhbmRhcmQgQworLy8gaW1wbGVtZW50YXRpb24s
IGFuZCB3aWxsIHByb2JhYmx5IGJlIHN1cGVyIHNsb3cuIEFkZCBuZXcgTWVyZ2VVVlJvd18xNgor
Ly8gaW1wbGVtZW50YXRpb25zIGFzIHRoZXkgYmVjb21lIGF2YWlsYWJsZSBpbiBsaWJ5dXYuCit2
b2lkIENvcHlQbGFuZV8xNihjb25zdCB1aW50MTZfdCogc3JjLCBpbnQgc3JjX3N0cmlkZSwgdWlu
dDE2X3QqIGRzdCwgaW50IGRzdF9zdHJpZGUsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHNj
YWxlKQoreworICAgIHZvaWQgKCpNdWx0aXBseVJvd18xNikoY29uc3QgdWludDE2X3QqIHNyY195
LCB1aW50MTZfdCogZHN0X3ksIGludCBzY2FsZSwgaW50IHdpZHRoKSA9IGxpYnl1djo6TXVsdGlw
bHlSb3dfMTZfQzsKKyAgICAvLyBOZWdhdGl2ZSBoZWlnaHQgbWVhbnMgaW52ZXJ0IHRoZSBpbWFn
ZS4KKyAgICBpZiAoaGVpZ2h0IDwgMCkgeworICAgICAgICBoZWlnaHQgPSAtaGVpZ2h0OworICAg
ICAgICBkc3QgPSBkc3QgKyAoaGVpZ2h0IC0gMSkgKiBkc3Rfc3RyaWRlOworICAgICAgICBkc3Rf
c3RyaWRlID0gLWRzdF9zdHJpZGU7CisgICAgfQorICAgIC8vIENvYWxlc2NlIHJvd3MuCisgICAg
aWYgKHNyY19zdHJpZGUgPT0gd2lkdGggJiYgZHN0X3N0cmlkZSA9PSB3aWR0aCAqIDIpIHsKKyAg
ICAgICAgd2lkdGggKj0gaGVpZ2h0OworICAgICAgICBoZWlnaHQgPSAxOworICAgICAgICBzcmNf
c3RyaWRlID0gZHN0X3N0cmlkZSA9IDA7CisgICAgfQorI2lmIGRlZmluZWQoSEFTX01FUkdFVVZS
T1dfMTZfQVZYMikKKyAgICBpZiAobGlieXV2OjpUZXN0Q3B1RmxhZyhsaWJ5dXY6OmtDcHVIYXNB
VlgyKSkKKyAgICAgICAgTXVsdGlwbHlSb3dfMTYgPSBsaWJ5dXY6Ok11bHRpcGx5Um93XzE2X0FW
WDI7CisjZW5kaWYKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAg
ICAgICAgTXVsdGlwbHlSb3dfMTYoc3JjLCBkc3QsIHNjYWxlLCB3aWR0aCk7CisgICAgICAgIHNy
YyArPSBzcmNfc3RyaWRlIC8gc2l6ZW9mKHVpbnQxNl90KTsKKyAgICAgICAgZHN0ICs9IGRzdF9z
dHJpZGUgLyBzaXplb2YodWludDE2X3QpOworICAgIH0KK30KKworc3RhdGljIGJvb2wgQ29weVZp
ZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGNvbnN0IHdlYnJ0Yzo6STAxMEJ1ZmZlckludGVyZmFjZSog
ZnJhbWUsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxfYnVmZmVyKQoreworICAgIFJUQ19EQ0hFQ0so
cGl4ZWxfYnVmZmVyKTsKKyAgICBSVENfRENIRUNLKENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1h
dFR5cGUocGl4ZWxfYnVmZmVyKSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBs
YW5hclZpZGVvUmFuZ2UgfHwgQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbF9i
dWZmZXIpID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdl
KTsKKyAgICBSVENfRENIRUNLX0VRKENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVs
X2J1ZmZlciwgMCksIHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWUtPmhlaWdodCgpKSk7CisgICAg
UlRDX0RDSEVDS19FUShDVlBpeGVsQnVmZmVyR2V0V2lkdGhPZlBsYW5lKHBpeGVsX2J1ZmZlciwg
MCksIHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWUtPndpZHRoKCkpKTsKKworICAgIGlmIChDVlBp
eGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNzKHBpeGVsX2J1ZmZlciwgMCkgIT0ga0NWUmV0dXJuU3Vj
Y2VzcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBzcmNfeSA9IGNvbnN0X2Nh
c3Q8dWludDE2X3QqPihmcmFtZS0+RGF0YVkoKSk7CisgICAgYXV0byBzcmNfdSA9IGNvbnN0X2Nh
c3Q8dWludDE2X3QqPihmcmFtZS0+RGF0YVUoKSk7CisgICAgYXV0byBzcmNfdiA9IGNvbnN0X2Nh
c3Q8dWludDE2X3QqPihmcmFtZS0+RGF0YVYoKSk7CisgICAgYXV0byBzcmNfd2lkdGhfeSA9IGZy
YW1lLT53aWR0aCgpOworICAgIGF1dG8gc3JjX2hlaWdodF95ID0gZnJhbWUtPmhlaWdodCgpOwor
ICAgIGF1dG8gc3JjX3N0cmlkZV95ID0gZnJhbWUtPlN0cmlkZVkoKSAqIHNpemVvZih1aW50MTZf
dCk7CisgICAgYXV0byBzcmNfd2lkdGhfdXYgPSBmcmFtZS0+Q2hyb21hV2lkdGgoKTsKKyAgICBh
dXRvIHNyY19oZWlnaHRfdXYgPSBmcmFtZS0+Q2hyb21hSGVpZ2h0KCk7CisgICAgYXV0byBzcmNf
c3RyaWRlX3UgPSBmcmFtZS0+U3RyaWRlVSgpICogc2l6ZW9mKHVpbnQxNl90KTsKKyAgICBhdXRv
IHNyY19zdHJpZGVfdiA9IGZyYW1lLT5TdHJpZGVWKCkgKiBzaXplb2YodWludDE2X3QpOworCisg
ICAgYXV0byogZHN0X3kgPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oQ1ZQaXhlbEJ1ZmZl
ckdldEJhc2VBZGRyZXNzT2ZQbGFuZShwaXhlbF9idWZmZXIsIDApKTsKKyAgICBhdXRvIGRzdF9z
dHJpZGVfeSA9IENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09mUGxhbmUocGl4ZWxfYnVmZmVy
LCAwKTsKKyAgICBhdXRvIGRzdF93aWR0aF95ID0gQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFu
ZShwaXhlbF9idWZmZXIsIDApOworICAgIGF1dG8gZHN0X2hlaWdodF95ID0gQ1ZQaXhlbEJ1ZmZl
ckdldEhlaWdodE9mUGxhbmUocGl4ZWxfYnVmZmVyLCAwKTsKKworICAgIGF1dG8qIGRzdF91diA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NP
ZlBsYW5lKHBpeGVsX2J1ZmZlciwgMSkpOworICAgIGF1dG8gZHN0X3N0cmlkZV91diA9IENWUGl4
ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09mUGxhbmUocGl4ZWxfYnVmZmVyLCAxKTsKKyAgICBhdXRv
IGRzdF93aWR0aF91diA9IENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUocGl4ZWxfYnVmZmVy
LCAxKTsKKyAgICBhdXRvIGRzdF9oZWlnaHRfdXYgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQ
bGFuZShwaXhlbF9idWZmZXIsIDEpOworCisgICAgaWYgKHNyY193aWR0aF95ICE9IGRzdF93aWR0
aF95CisgICAgICAgIHx8IHNyY19oZWlnaHRfeSAhPSBkc3RfaGVpZ2h0X3kKKyAgICAgICAgfHwg
c3JjX3dpZHRoX3V2ICE9IGRzdF93aWR0aF91dgorICAgICAgICB8fCBzcmNfaGVpZ2h0X3V2ICE9
IGRzdF9oZWlnaHRfdXYpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENvcHlQbGFuZV8x
NihzcmNfeSwgc3JjX3N0cmlkZV95LCBkc3RfeSwgZHN0X3N0cmlkZV95LCBkc3Rfd2lkdGhfeSwg
ZHN0X2hlaWdodF95LCA2NCk7CisgICAgTWVyZ2VVVlBsYW5lXzE2KHNyY191LCBzcmNfc3RyaWRl
X3UsIHNyY192LCBzcmNfc3RyaWRlX3YsIGRzdF91diwgZHN0X3N0cmlkZV91diwgZHN0X3dpZHRo
X3V2LCBkc3RfaGVpZ2h0X3V2LCA2NCk7CisKKyAgICBDVlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFk
ZHJlc3MocGl4ZWxfYnVmZmVyLCAwKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgY29u
c3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90KT4mIG1ha2VQ
aXhlbEJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCktPnR5cGUo
KSAhPSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKSB7Ci0gICAgICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxjb25zdCBJNDIwQnVmZmVySW50ZXJmYWNlPiBidWZmZXIgPSBmcmFtZS52aWRl
b19mcmFtZV9idWZmZXIoKS0+R2V0STQyMCgpOworICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0g
bWFrZVBpeGVsQnVmZmVyKGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLT53aWR0aCgpLCBmcmFt
ZS52aWRlb19mcmFtZV9idWZmZXIoKS0+aGVpZ2h0KCkpOworICAgICAgICBpZiAoIXBpeGVsQnVm
ZmVyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byBwaXhlbEJ1
ZmZlciA9IG1ha2VQaXhlbEJ1ZmZlcihidWZmZXItPndpZHRoKCksIGJ1ZmZlci0+aGVpZ2h0KCkp
OwotICAgICAgICBpZiAocGl4ZWxCdWZmZXIpCisgICAgICAgIGlmIChmcmFtZS52aWRlb19mcmFt
ZV9idWZmZXIoKS0+dHlwZSgpID09IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJNDIwKQogICAg
ICAgICAgICAgQ29weVZpZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGZyYW1lLnZpZGVvX2ZyYW1lX2J1
ZmZlcigpLT5HZXRJNDIwKCksIHBpeGVsQnVmZmVyKTsKKyAgICAgICAgZWxzZSBpZiAoZnJhbWUu
dmlkZW9fZnJhbWVfYnVmZmVyKCktPnR5cGUoKSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjpr
STAxMCkKKyAgICAgICAgICAgIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcihmcmFtZS52aWRl
b19mcmFtZV9idWZmZXIoKS0+R2V0STAxMCgpLCBwaXhlbEJ1ZmZlcik7CiAgICAgICAgIHJldHVy
biBwaXhlbEJ1ZmZlcjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktp
dFZQOURlY29kZXIuY3BwCmluZGV4IGU5NGI5NzZmOGExN2FjMmMxZWI1YmU3YzcyMDY1NTg1NzU5
N2E0NTguLjExNDg1ODA2N2M0YTFiZjVlNjAwZmFlNjk1YTM3ZjBkOTY3N2RhY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VlA5RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDlEZWNvZGVyLmNwcApAQCAtNTgsNiArNTgs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJyZW50RnJhbWUoVlRWaWRlb0RlY29kZXJGcmFt
ZSBjdXJyZW50RnJhbWUpIHsgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7IH0KICAgICBP
U1N0YXR1cyBkZWNvZGVyRmFpbGVkKGludCBlcnJvcik7CiAKKyAgICB2b2lkIGNyZWF0ZVBpeGVs
QnVmZmVyUG9vbEZvckZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYpOwor
CiBwcml2YXRlOgogICAgIGludDMyX3QgRGVjb2RlZChWaWRlb0ZyYW1lJikgZmluYWw7CiAgICAg
aW50MzJfdCBEZWNvZGVkKFZpZGVvRnJhbWUmLCBpbnQ2NF90IGRlY29kZV90aW1lX21zKSBmaW5h
bDsKQEAgLTE2OSw2ICsxNzEsNyBAQCBPU1N0YXR1cyBzdGFydFZQOURlY29kZXJTZXNzaW9uKFZU
VmlkZW9EZWNvZGVyUmVmIGluc3RhbmNlLCBWVFZpZGVvRGVjb2RlclNlc3NpbwogCiAgICAgZGVj
b2Rlci0+bV9pbnN0YW5jZSA9IHN0ZDo6bWFrZV91bmlxdWU8VlA5RGVjb2RlckltcGw+KCk7CiAg
ICAgZGVjb2Rlci0+bV9yZWNlaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0VlA5RGVjb2Rl
clJlY2VpdmVyPihzZXNzaW9uKTsKKyAgICBkZWNvZGVyLT5tX3JlY2VpdmVyLT5jcmVhdGVQaXhl
bEJ1ZmZlclBvb2xGb3JGb3JtYXREZXNjcmlwdGlvbihmb3JtYXREZXNjcmlwdGlvbik7CiAKICAg
ICBkZWNvZGVyLT5tX2luc3RhbmNlLT5SZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2soZGVj
b2Rlci0+bV9yZWNlaXZlci5nZXQoKSk7CiAKQEAgLTI1Myw2ICsyNTYsOTMgQEAgV2ViS2l0VlA5
RGVjb2RlclJlY2VpdmVyOjp+V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyKCkKICAgICAgICAgQ0ZS
ZWxlYXNlKG1fcGl4ZWxCdWZmZXJQb29sKTsKIH0KIAordm9pZCBXZWJLaXRWUDlEZWNvZGVyUmVj
ZWl2ZXI6OmNyZWF0ZVBpeGVsQnVmZmVyUG9vbEZvckZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0
RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCit7CisgICAgLy8gQ29yZUFuaW1hdGlv
biBkb2Vzbid0IHN1cHBvcnQgZnVsbC1wbGFuYXIgWVVWLCBzbyB3ZSBtdXN0IGNvbnZlcnQgdGhl
IGJ1ZmZlcnMgb3V0cHV0CisgICAgLy8gYnkgbGlidnB4IHRvIGJpLXBsYW5hciBZVVYuIENyZWF0
ZSBwaXhlbCBidWZmZXIgYXR0cmlidXRlcyBhbmQgZ2l2ZSB0aG9zZSB0byB0aGUKKyAgICAvLyBk
ZWNvZGVyIHNlc3Npb24gZm9yIHVzZSBpbiBjcmVhdGluZyBpdHMgb3duIGludGVybmFsIENWUGl4
ZWxCdWZmZXJQb29sLCB3aGljaCB3ZQorICAgIC8vIHdpbGwgdXNlIHBvc3QtZGVjb2RlLgorICAg
IGJvb2wgaXNGdWxsUmFuZ2UgPSBmYWxzZTsKKyAgICBib29sIGlzMTBCaXQgPSBmYWxzZTsKKwor
ICAgIGRvIHsKKyAgICAgICAgYXV0byBleHRlbnNpb25zID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdl
dEV4dGVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOworICAgICAgICBpZiAoIWV4dGVuc2lvbnMp
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBDRlR5cGVSZWYgZXh0ZW5zaW9uQXRvbXMg
PSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25zLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4
dGVuc2lvbl9TYW1wbGVEZXNjcmlwdGlvbkV4dGVuc2lvbkF0b21zKTsKKyAgICAgICAgaWYgKCFl
eHRlbnNpb25BdG9tcyB8fCBDRkdldFR5cGVJRChleHRlbnNpb25BdG9tcykgIT0gQ0ZEaWN0aW9u
YXJ5R2V0VHlwZUlEKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIGNvbmZp
Z3VyYXRpb25SZWNvcmQgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZh
bHVlKChDRkRpY3Rpb25hcnlSZWYpZXh0ZW5zaW9uQXRvbXMsIENGU1RSKCJ2cGNDIikpKTsKKyAg
ICAgICAgaWYgKCFjb25maWd1cmF0aW9uUmVjb3JkIHx8IENGR2V0VHlwZUlEKGNvbmZpZ3VyYXRp
b25SZWNvcmQpICE9IENGRGF0YUdldFR5cGVJRCgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkU2l6ZSA9IENGRGF0YUdldExlbmd0aChjb25m
aWd1cmF0aW9uUmVjb3JkKTsKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb25SZWNvcmRTaXplIDwg
MTIpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNv
cmREYXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0cihjb25maWd1cmF0aW9uUmVjb3JkKTsKKyAgICAgICAg
YXV0byBiaXREZXB0aENocm9tYUFuZFJhbmdlID0gKihjb25maWd1cmF0aW9uUmVjb3JkRGF0YSAr
IDYpOworCisgICAgICAgIGlmICgoYml0RGVwdGhDaHJvbWFBbmRSYW5nZSA+PiA0KSA9PSAxMCkK
KyAgICAgICAgICAgIGlzMTBCaXQgPSB0cnVlOworCisgICAgICAgIGlmIChiaXREZXB0aENocm9t
YUFuZFJhbmdlICYgMHgxKQorICAgICAgICAgICAgaXNGdWxsUmFuZ2UgPSB0cnVlOworICAgIH0g
d2hpbGUgKGZhbHNlKTsKKworICAgIE9TVHlwZSBwaXhlbEZvcm1hdDsKKyAgICBpZiAoaXMxMEJp
dCkKKyAgICAgICAgcGl4ZWxGb3JtYXQgPSBpc0Z1bGxSYW5nZSA/IGtDVlBpeGVsRm9ybWF0VHlw
ZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlIDoga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlw
Q2JDcjEwQmlQbGFuYXJWaWRlb1JhbmdlOworICAgIGVsc2UKKyAgICAgICAgcGl4ZWxGb3JtYXQg
PSBpc0Z1bGxSYW5nZSA/IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxs
UmFuZ2UgOiBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZTsK
KworICAgIGF1dG8gY3JlYXRlUGl4ZWxGb3JtYXRBdHRyaWJ1dGVzID0gW10gKE9TVHlwZSBwaXhl
bEZvcm1hdCwgaW50MzJfdCBib3JkZXJQaXhlbHMpIHsKKyAgICAgICAgYXV0byBjcmVhdGVOdW1i
ZXIgPSBbXSAoaW50MzJfdCBmb3JtYXQpIC0+IENGTnVtYmVyUmVmIHsKKyAgICAgICAgICAgIHJl
dHVybiBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50MzJU
eXBlLCAmZm9ybWF0KTsKKyAgICAgICAgfTsKKyAgICAgICAgYXV0byBjZlBpeGVsRm9ybWF0cyA9
IENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDIsICZrQ0ZUeXBlQXJy
YXlDYWxsQmFja3MpOworICAgICAgICBhdXRvIGZvcm1hdE51bWJlciA9IGNyZWF0ZU51bWJlcihw
aXhlbEZvcm1hdCk7CisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjZlBpeGVsRm9ybWF0cywg
Zm9ybWF0TnVtYmVyKTsKKyAgICAgICAgQ0ZSZWxlYXNlKGZvcm1hdE51bWJlcik7CisKKyAgICAg
ICAgYXV0byBib3JkZXJQaXhlbHNWYWx1ZSA9IGNyZWF0ZU51bWJlcigzMik7CisKKyAgICAgICAg
Y29uc3Qgdm9pZCoga2V5c1tdID0geworICAgICAgICAgICAga0NWUGl4ZWxCdWZmZXJQaXhlbEZv
cm1hdFR5cGVLZXksCisgICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzTGVm
dEtleSwKKyAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNSaWdodEtleSwK
KyAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNUb3BLZXksCisgICAgICAg
ICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzQm90dG9tS2V5LAorICAgICAgICB9Owor
ICAgICAgICBjb25zdCB2b2lkKiB2YWx1ZXNbXSA9IHsKKyAgICAgICAgICAgIGNmUGl4ZWxGb3Jt
YXRzLAorICAgICAgICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUsCisgICAgICAgICAgICBib3JkZXJQ
aXhlbHNWYWx1ZSwKKyAgICAgICAgICAgIGJvcmRlclBpeGVsc1ZhbHVlLAorICAgICAgICAgICAg
Ym9yZGVyUGl4ZWxzVmFsdWUsCisgICAgICAgIH07CisgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9
IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIHN0
ZDo6c2l6ZShrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgICAgIENGUmVsZWFzZShib3JkZXJQaXhlbHNW
YWx1ZSk7CisgICAgICAgIENGUmVsZWFzZShjZlBpeGVsRm9ybWF0cyk7CisgICAgICAgIHJldHVy
biBhdHRyaWJ1dGVzOworICAgIH07CisKKyAgICBhdXRvIHBpeGVsQnVmZmVyQXR0cmlidXRlcyA9
IGNyZWF0ZVBpeGVsRm9ybWF0QXR0cmlidXRlcyhwaXhlbEZvcm1hdCwgMzIpOworICAgIFZURGVj
b2RlclNlc3Npb25TZXRQaXhlbEJ1ZmZlckF0dHJpYnV0ZXMobV9zZXNzaW9uLCBwaXhlbEJ1ZmZl
ckF0dHJpYnV0ZXMpOworICAgIENGUmVsZWFzZShwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOworCisg
ICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKSB7CisgICAgICAgIENGUmVsZWFzZShtX3BpeGVsQnVm
ZmVyUG9vbCk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJQb29sID0gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBtX3BpeGVsQnVmZmVyUG9vbCA9IFZURGVjb2RlclNlc3Npb25HZXRQaXhlbEJ1ZmZlclBv
b2wobV9zZXNzaW9uKTsKKyAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpCisgICAgICAgIENGUmV0
YWluKG1fcGl4ZWxCdWZmZXJQb29sKTsKK30KKwogT1NTdGF0dXMgV2ViS2l0VlA5RGVjb2RlclJl
Y2VpdmVyOjpkZWNvZGVyRmFpbGVkKGludCBlcnJvcikKIHsKICAgICBPU1N0YXR1cyB2dEVycm9y
ID0ga1ZUVmlkZW9EZWNvZGVyQmFkRGF0YUVycjsKQEAgLTI3MSwzMyArMzYxLDE3IEBAIE9TU3Rh
dHVzIFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZChpbnQgZXJyb3IpCiAK
IGludDMyX3QgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZy
YW1lKQogewotICAgIENWUGl4ZWxCdWZmZXJSZWYgbmV3UGl4ZWxCdWZmZXIgeyBudWxscHRyIH07
Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lLCBbdGhp
cywgJm5ld1BpeGVsQnVmZmVyXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpIC0+IENWUGl4
ZWxCdWZmZXJSZWYgewotICAgICAgICBpZiAoIW1fcGl4ZWxCdWZmZXJQb29sIHx8IG1fcGl4ZWxC
dWZmZXJXaWR0aCAhPSB3aWR0aCB8fCBtX3BpeGVsQnVmZmVySGVpZ2h0ICE9IGhlaWdodCkgewot
ICAgICAgICAgICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKQotICAgICAgICAgICAgICAgIENGUmVs
ZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7Ci0gICAgICAgICAgICBtX3BpeGVsQnVmZmVyUG9vbCA9
IGNyZWF0ZVBpeGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgICAgIGlmICgh
bV9waXhlbEJ1ZmZlclBvb2wpIHsKLSAgICAgICAgICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8
PCAiVlA5IGRlY29kZXI6IHVuYWJsZSB0byBjcmVhdGUgcGl4ZWwgYnVmZmVyIHBvb2wiOwotICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
bV9waXhlbEJ1ZmZlcldpZHRoID0gd2lkdGg7Ci0gICAgICAgICAgICBtX3BpeGVsQnVmZmVySGVp
Z2h0ID0gaGVpZ2h0OwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVs
QnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4ZWxC
dWZmZXJQb29sLCAmbmV3UGl4ZWxCdWZmZXIpOwotICAgICAgICBpZiAoc3RhdHVzICE9IGtDVlJl
dHVyblN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDkgZGVj
b2RlcjogdW5hYmxlIHRvIGNyZWF0ZSBwaXhlbCBidWZmZXIgZnJvbSBwb29sIjsKLSAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG5ld1BpeGVs
QnVmZmVyOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFt
ZSwgW3RoaXNdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkgLT4gQ1ZQaXhlbEJ1ZmZlclJl
ZiB7CisgICAgICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBudWxscHRyOworICAg
ICAgICBpZiAoQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGVQaXhlbEJ1ZmZlcihrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBtX3BpeGVsQnVmZmVyUG9vbCwgJnBpeGVsQnVmZmVyKSA9PSBrQ1ZSZXR1cm5TdWNj
ZXNzKQorICAgICAgICAgICAgcmV0dXJuIHBpeGVsQnVmZmVyOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9KTsKIAogICAgIFZURGVjb2RlclNlc3Npb25FbWl0RGVjb2RlZEZyYW1lKG1f
c2Vzc2lvbiwgbV9jdXJyZW50RnJhbWUsIHBpeGVsQnVmZmVyID8gbm9FcnIgOiAtMSwgMCwgcGl4
ZWxCdWZmZXIpOwogICAgIG1fY3VycmVudEZyYW1lID0gbnVsbHB0cjsKLSAgICBpZiAobmV3UGl4
ZWxCdWZmZXIpCi0gICAgICAgIENGUmVsZWFzZShuZXdQaXhlbEJ1ZmZlcik7CisgICAgaWYgKHBp
eGVsQnVmZmVyKQorICAgICAgICBDRlJlbGVhc2UocGl4ZWxCdWZmZXIpOwogICAgIHJldHVybiAw
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsu
Y3BwCmluZGV4IDkyZWE3NjhmZmRlMThlZWJmMTQ4NjRjOTdmMTQ5OTI3MmIwNGY5NzUuLmM3NjEy
Y2I1Y2NiNzc3OGU0MzFlYzVlY2MyOTY3M2UxMjQwNDkzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCkBAIC02NCw2ICs2NCwxNiBAQCBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwg
Q01UaW1lUmFuZ2VNYWtlLCBDTVRpbQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNVGltZVJhbmdlRXF1YWwsIEJvb2xlYW4sIChDTVRp
bWVSYW5nZSByYW5nZTEsIENNVGltZVJhbmdlIHJhbmdlMiksIChyYW5nZTEsIHJhbmdlMiksIFBB
TF9FWFBPUlQpCiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNjcmlw
dGlvbkV4dGVuc2lvbkF0b21zLCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19D
T05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXRE
ZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX0RDSV9QMywgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQp
CitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRp
YSwga0NNRm9ybWF0RGVzY3JpcHRpb25Db2xvclByaW1hcmllc19JVFVfUl8yMDIwLCBDRlN0cmlu
Z1JlZiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX1Az
X0Q2NSwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRl
bnNpb25fRnVsbFJhbmdlVmlkZW8sIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1h
dERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9JVFVfUl8yMDIwLCBDRlN0cmluZ1JlZiwgUEFM
X0VYUE9SVCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
Q29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fSVRVX1JfMjEw
MF9ITEcsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9T
T1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0aW9uVHJh
bnNmZXJGdW5jdGlvbl9MaW5lYXIsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1h
dERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9TTVBURV9TVF8yMDg0X1BRLCBDRlN0cmluZ1Jl
ZiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fU01Q
VEVfU1RfNDI4XzEsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0
aW9uWUNiQ3JNYXRyaXhfSVRVX1JfMjAyMCwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQpCiBTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NN
VGV4dE1hcmt1cEFsaWdubWVudFR5cGVfRW5kLCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKIFNP
RlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBr
Q01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9NaWRkbGUsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JU
KQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVk
aWEsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX1N0YXJ0LCBDRlN0cmluZ1JlZiwgUEFMX0VY
UE9SVCkKQEAgLTE3Niw3ICsxODYsNyBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01DbG9ja0dldFRpbWUsIENNVGltZQogU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNU2Ft
cGxlQnVmZmVyQ2FsbEZvckVhY2hTYW1wbGUsIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYg
c2J1ZiwgT1NTdGF0dXMgKCogQ01TQU1QTEVCVUZGRVJDQUxMX05PRVNDQVBFIGNhbGxiYWNrKSgg
Q01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBDTUl0ZW1Db3VudCBpbmRleCwgdm9pZCAq
cmVmY29uKSwgdm9pZCAqcmVmY29uKSwgKHNidWYsIGNhbGxiYWNrLCByZWZjb24pLCBQQUxfRVhQ
T1JUKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3Jl
TWVkaWEsIENNU2FtcGxlQnVmZmVyQ2FsbEJsb2NrRm9yRWFjaFNhbXBsZSwgT1NTdGF0dXMsIChD
TVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBPU1N0YXR1cyAoXiBDTVNBTVBMRUJVRkZFUkNBTExfTk9F
U0NBUEUgaGFuZGxlcikoQ01TYW1wbGVCdWZmZXJSZWYsIENNSXRlbUNvdW50KSksIChzYnVmLCBo
YW5kbGVyKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09V
UkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVu
c2lvbl9Qcm90ZWN0ZWRDb250ZW50T3JpZ2luYWxGb3JtYXQsIENGU3RyaW5nUmVmLCBQQUxfRVhQ
T1JUKQotCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX3NS
R0IsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2Yv
Q29yZU1lZGlhU29mdExpbmsuaAppbmRleCA4NDI5MzMyOTIzMTRkODAzYjJkZjE2Mzk0ZTJiYmRi
ODZhZDU3ODEzLi44ZGExYWEzNWEyOTIzNmFiNTdhNzMwNDhlYmQ5NjZmMjRkY2U1ZjkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCkBAIC04Niw4
ICs4NiwzMCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
Q01UaW1lUmFuZ2VFcXVhbCwgQm9vbGVhbiwgKENNVGltZQogCiBTT0ZUX0xJTktfQ09OU1RBTlRf
Rk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25f
U2FtcGxlRGVzY3JpcHRpb25FeHRlbnNpb25BdG9tcywgQ0ZTdHJpbmdSZWYpCiAjZGVmaW5lIGtD
TUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRv
bXMgZ2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNj
cmlwdGlvbkV4dGVuc2lvbkF0b21zKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBB
TCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkNvbG9yUHJpbWFyaWVzX0RDSV9QMywg
Q0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZv
cm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfRENJX1AzIGdldF9Db3JlTWVkaWFfa0NNRm9y
bWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25Db2xvclByaW1hcmll
c19EQ0lfUDMoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEs
IGtDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfSVRVX1JfMjAyMCwgQ0ZTdHJpbmdS
ZWYpCisjZGVmaW5lIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2Ny
aXB0aW9uQ29sb3JQcmltYXJpZXNfSVRVX1JfMjAyMCBnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERl
c2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfSVRV
X1JfMjAyMCgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
a0NNRm9ybWF0RGVzY3JpcHRpb25Db2xvclByaW1hcmllc19QM19ENjUsIENGU3RyaW5nUmVmKQor
I2RlZmluZSBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlv
bkNvbG9yUHJpbWFyaWVzX1AzX0Q2NSBnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9u
RXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfUDNfRDY1KCkKK1NP
RlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNj
cmlwdGlvbkV4dGVuc2lvbl9GdWxsUmFuZ2VWaWRlbywgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtD
TUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9u
X0Z1bGxSYW5nZVZpZGVvIGdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNp
b25fa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fRnVsbFJhbmdlVmlkZW8oKQorU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0
aW9uVHJhbnNmZXJGdW5jdGlvbl9JVFVfUl8yMDIwLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NN
Rm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1
bmN0aW9uX0lUVV9SXzIwMjAgZ2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVu
c2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fSVRVX1JfMjAyMCgpCitT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVz
Y3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzIxMDBfSExHLCBDRlN0cmluZ1JlZikKKyNk
ZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25U
cmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzIxMDBfSExHIGdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVz
Y3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX0lU
VV9SXzIxMDBfSExHKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1l
ZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fTGluZWFyLCBDRlN0cmlu
Z1JlZikKKyNkZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0RGVz
Y3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX0xpbmVhciBnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERl
c2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9M
aW5lYXIoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtD
TUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9TTVBURV9TVF8yMDg0X1BRLCBDRlN0
cmluZ1JlZikKKyNkZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9ybWF0
RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NNUFRFX1NUXzIwODRfUFEgZ2V0X0NvcmVNZWRp
YV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5z
ZmVyRnVuY3Rpb25fU01QVEVfU1RfMjA4NF9QUSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hF
QURFUihQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9u
X1NNUFRFX1NUXzQyOF8xLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRp
b25FeHRlbnNpb25fa0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NNUFRFX1NU
XzQyOF8xIGdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fa0NNRm9y
bWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NNUFRFX1NUXzQyOF8xKCkKK1NPRlRfTElO
S19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01Gb3JtYXREZXNjcmlwdGlv
bllDYkNyTWF0cml4X0lUVV9SXzIwMjAsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ01Gb3JtYXRE
ZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvbllDYkNyTWF0cml4X0lUVV9S
XzIwMjAgZ2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9rQ01Gb3Jt
YXREZXNjcmlwdGlvbllDYkNyTWF0cml4X0lUVV9SXzIwMjAoKQogU09GVF9MSU5LX0NPTlNUQU5U
X01BWV9GQUlMX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTUZvcm1hdERlc2NyaXB0aW9u
RXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCwgQ0ZTdHJpbmdSZWYpCiAj
ZGVmaW5lIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmln
aW5hbEZvcm1hdCBnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1By
b3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgpCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZB
SUxfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2Zl
ckZ1bmN0aW9uX3NSR0IsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ01Gb3JtYXREZXNjcmlwdGlv
bkV4dGVuc2lvbl9rQ01Gb3JtYXREZXNjcmlwdGlvblRyYW5zZmVyRnVuY3Rpb25fc1JHQiBnZXRf
Q29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX2tDTUZvcm1hdERlc2NyaXB0
aW9uVHJhbnNmZXJGdW5jdGlvbl9zUkdCKCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9FbmQsIENGU3RyaW5n
UmVmKQogI2RlZmluZSBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9FbmQgZ2V0X0NvcmVNZWRp
YV9rQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9FbmQoKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRs
ZSwgQ0ZTdHJpbmdSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9D
b3JlVmlkZW9Tb2Z0TGluay5jcHAKaW5kZXggOGZlMGY3MGVkYTk2N2IxZjk2YjY1MTUwZDNjODg2
N2U5NWE2NWVjNy4uZDdmMjhjODVjYTllZWY0YjczZjg1NzhlYTA5MmM1MWEwZDhiZWRjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5r
LmNwcApAQCAtNjAsNiArNjAsMTMgQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2Vi
Q29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4S2V5LAogU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlcllD
YkNyTWF0cml4X0lUVV9SXzcwOV8yLCBDRlN0cmluZ1JlZikKIFNPRlRfTElOS19DT05TVEFOVF9G
T1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywga0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9J
VFVfUl82MDFfNCwgQ0ZTdHJpbmdSZWYpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShX
ZWJDb3JlLCBDb3JlVmlkZW8sIGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhfU01QVEVfMjQwTV8x
OTk1LCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUs
IENvcmVWaWRlbywga0NWSW1hZ2VCdWZmZXJDb2xvclByaW1hcmllc19FQlVfMzIxMywgQ0ZTdHJp
bmdSZWYpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlVmlkZW8s
IGtDVkltYWdlQnVmZmVyQ29sb3JQcmltYXJpZXNfSVRVX1JfNzA5XzIsIENGU3RyaW5nUmVmKQor
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFn
ZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX1NNUFRFX0MsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0NP
TlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlckNvbG9y
UHJpbWFyaWVzS2V5LCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNF
KFdlYkNvcmUsIENvcmVWaWRlbywga0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0aW9uS2V5LCBD
RlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVW
aWRlbywga0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzcwOV8yLCBDRlN0cmlu
Z1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywg
a0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0aW9uX1NNUFRFXzI0ME1fMTk5NSwgQ0ZTdHJpbmdS
ZWYpCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJDb3JlLCBDb3Jl
VmlkZW8sIGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhfRENJX1AzLCBDRlN0cmluZ1JlZikKIFNP
RlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywg
a0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9QM19ENjUsIENGU3RyaW5nUmVmKQogU09GVF9MSU5L
X0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFn
ZUJ1ZmZlcllDYkNyTWF0cml4X0lUVV9SXzIwMjAsIENGU3RyaW5nUmVmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmgKaW5kZXggYWNkZDI0
MjkzZTVlNTkyMjQwYzY4ZTRmZGY4OGFiNDI0YzZlMWIxZC4uYWU2Y2NkN2IzZjUyOWFhNGY0NThl
ZjM5ODU5ZDFmYWFkZjAwNDc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvQ29yZVZpZGVvU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5oCkBAIC05NSw2ICs5NSwyMCBAQCBTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlVmlkZW8sIGtDVlBpeGVsQnVmZmVyQ0dCaXRt
YXBDb250ZXh0QwogI2RlZmluZSBrQ1ZQaXhlbEJ1ZmZlckNHQml0bWFwQ29udGV4dENvbXBhdGli
aWxpdHlLZXkgZ2V0X0NvcmVWaWRlb19rQ1ZQaXhlbEJ1ZmZlckNHQml0bWFwQ29udGV4dENvbXBh
dGliaWxpdHlLZXkoKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29y
ZVZpZGVvLCBrQ1ZQaXhlbEJ1ZmZlckNHSW1hZ2VDb21wYXRpYmlsaXR5S2V5LCBDRlN0cmluZ1Jl
ZikKICNkZWZpbmUga0NWUGl4ZWxCdWZmZXJDR0ltYWdlQ29tcGF0aWJpbGl0eUtleSBnZXRfQ29y
ZVZpZGVvX2tDVlBpeGVsQnVmZmVyQ0dJbWFnZUNvbXBhdGliaWxpdHlLZXkoKQorU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlckNv
bG9yUHJpbWFyaWVzX0VCVV8zMjEzLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NWSW1hZ2VCdWZm
ZXJDb2xvclByaW1hcmllc19FQlVfMzIxMyBnZXRfQ29yZVZpZGVvX2tDVkltYWdlQnVmZmVyQ29s
b3JQcmltYXJpZXNfRUJVXzMyMTMoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2Vi
Q29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX0lUVV9SXzcwOV8y
LCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NWSW1hZ2VCdWZmZXJDb2xvclByaW1hcmllc19JVFVf
Ul83MDlfMiBnZXRfQ29yZVZpZGVvX2tDVkltYWdlQnVmZmVyQ29sb3JQcmltYXJpZXNfSVRVX1Jf
NzA5XzIoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVv
LCBrQ1ZJbWFnZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX1NNUFRFX0MsIENGU3RyaW5nUmVmKQorI2Rl
ZmluZSBrQ1ZJbWFnZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX1NNUFRFX0MgZ2V0X0NvcmVWaWRlb19r
Q1ZJbWFnZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX1NNUFRFX0MoKQorU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlckNvbG9yUHJpbWFy
aWVzS2V5LCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NWSW1hZ2VCdWZmZXJDb2xvclByaW1hcmll
c0tleSBnZXRfQ29yZVZpZGVvX2tDVkltYWdlQnVmZmVyQ29sb3JQcmltYXJpZXNLZXkoKQorU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVvLCBrQ1ZJbWFnZUJ1
ZmZlclRyYW5zZmVyRnVuY3Rpb25LZXksIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ1ZJbWFnZUJ1
ZmZlclRyYW5zZmVyRnVuY3Rpb25LZXkgZ2V0X0NvcmVWaWRlb19rQ1ZJbWFnZUJ1ZmZlclRyYW5z
ZmVyRnVuY3Rpb25LZXkoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwg
Q29yZVZpZGVvLCBrQ1ZJbWFnZUJ1ZmZlclRyYW5zZmVyRnVuY3Rpb25fSVRVX1JfNzA5XzIsIENG
U3RyaW5nUmVmKQorI2RlZmluZSBrQ1ZJbWFnZUJ1ZmZlclRyYW5zZmVyRnVuY3Rpb25fSVRVX1Jf
NzA5XzIgZ2V0X0NvcmVWaWRlb19rQ1ZJbWFnZUJ1ZmZlclRyYW5zZmVyRnVuY3Rpb25fSVRVX1Jf
NzA5XzIoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVv
LCBrQ1ZJbWFnZUJ1ZmZlclRyYW5zZmVyRnVuY3Rpb25fU01QVEVfMjQwTV8xOTk1LCBDRlN0cmlu
Z1JlZikKKyNkZWZpbmUga0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0aW9uX1NNUFRFXzI0ME1f
MTk5NSBnZXRfQ29yZVZpZGVvX2tDVkltYWdlQnVmZmVyVHJhbnNmZXJGdW5jdGlvbl9TTVBURV8y
NDBNXzE5OTUoKQogCiAjaWYgVVNFKE9QRU5HTF9FUykKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZPcGVuR0xFU1RleHR1cmVDYWNoZUNyZWF0ZSwg
Q1ZSZXR1cm4sIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGRGljdGlvbmFyeVJlZiBjYWNo
ZUF0dHJpYnV0ZXMsIENWRUFHTENvbnRleHQgZWFnbENvbnRleHQsIENGRGljdGlvbmFyeVJlZiB0
ZXh0dXJlQXR0cmlidXRlcywgQ1ZPcGVuR0xFU1RleHR1cmVDYWNoZVJlZiogY2FjaGVPdXQpLCAo
YWxsb2NhdG9yLCBjYWNoZUF0dHJpYnV0ZXMsIGVhZ2xDb250ZXh0LCB0ZXh0dXJlQXR0cmlidXRl
cywgY2FjaGVPdXQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCA0MGM3
ZTg0ODI3M2M1YzJhMjIwNGFmNzRhNTI3ZDhlYTE1MDRkNTRkLi41OTMwZTI4MzZhN2EwMWY4MWZh
NDg4M2IxNzBmNGVhOWFmZGEzZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbmNsdWRl
ICJBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKyNpbmNsdWRlICJDb3JlVmlkZW9Tb2Z0TGluay5o
IgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRpYURl
c2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCkBAIC0zOCw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiVlA5VXRpbGl0aWVzQ29jb2EuaCIKICNpbmNsdWRlICJWaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EYXRhVmlldy5oPgor
I2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2luY2x1ZGUgPHdlYm0vd2Vi
bV9wYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgpAQCAtNDksNiArNTEsOCBAQCBXVEZfV0VBS19MSU5LX0ZPUkNFX0lNUE9SVCh3ZWJt
Ojpzd2FwKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1lc3BhY2UgUEFMOwor
CiBzdGF0aWMgYm9vbCBpc1dlYm1QYXJzZXJBdmFpbGFibGUoKQogewogICAgIHJldHVybiAhIXdl
Ym06OnN3YXAgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJN
UGFyc2VyRW5hYmxlZCgpOwpAQCAtNTMzLDYgKzUzNywyNyBAQCBzdGF0aWMgdWludDhfdCBjb252
ZXJ0VG9Db2xvclByaW1hcmllcyhjb25zdCBQcmltYXJpZXMmIGNvZWZmaWNpZW50cykKICAgICB9
CiB9CiAKK3N0YXRpYyBDRlN0cmluZ1JlZiBjb252ZXJ0VG9DTUNvbG9yUHJpbWFyaWVzKHVpbnQ4
X3QgcHJpbWFyaWVzKQoreworICAgIHN3aXRjaCAocHJpbWFyaWVzKSB7CisgICAgY2FzZSBWUENv
bmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6QlRfNzA5XzY6CisgICAgICAgIHJldHVybiBrQ1ZJ
bWFnZUJ1ZmZlckNvbG9yUHJpbWFyaWVzX0lUVV9SXzcwOV8yOworICAgIGNhc2UgVlBDb25maWd1
cmF0aW9uQ29sb3JQcmltYXJpZXM6OkVCVV9UZWNoXzMyMTNfRToKKyAgICAgICAgcmV0dXJuIGtD
VkltYWdlQnVmZmVyQ29sb3JQcmltYXJpZXNfRUJVXzMyMTM7CisgICAgY2FzZSBWUENvbmZpZ3Vy
YXRpb25Db2xvclByaW1hcmllczo6QlRfNjAxXzc6CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25D
b2xvclByaW1hcmllczo6U01QVEVfU1RfMjQwOgorICAgICAgICByZXR1cm4ga0NWSW1hZ2VCdWZm
ZXJDb2xvclByaW1hcmllc19TTVBURV9DOworICAgIGNhc2UgVlBDb25maWd1cmF0aW9uQ29sb3JQ
cmltYXJpZXM6OlNNUFRFX1JQXzQzMV8yOgorICAgICAgICByZXR1cm4ga0NNRm9ybWF0RGVzY3Jp
cHRpb25Db2xvclByaW1hcmllc19EQ0lfUDM7CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25Db2xv
clByaW1hcmllczo6U01QVEVfRUdfNDMyXzE6CisgICAgICAgIHJldHVybiBrQ01Gb3JtYXREZXNj
cmlwdGlvbkNvbG9yUHJpbWFyaWVzX1AzX0Q2NTsKKyAgICBjYXNlIFZQQ29uZmlndXJhdGlvbkNv
bG9yUHJpbWFyaWVzOjpCVF8yMDIwX05vbmNvbnN0YW50X0x1bWluYW5jZToKKyAgICAgICAgcmV0
dXJuIGtDTUZvcm1hdERlc2NyaXB0aW9uQ29sb3JQcmltYXJpZXNfSVRVX1JfMjAyMDsKKyAgICB9
CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogc3RhdGljIHVpbnQ4X3QgY29udmVydFRvVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MoY29uc3QgVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MmIGNoYXJh
Y3RlcmlzdGljcykKIHsKICAgICBzd2l0Y2ggKGNoYXJhY3RlcmlzdGljcykgewpAQCAtNTczLDYg
KzU5OCwzMSBAQCBzdGF0aWMgdWludDhfdCBjb252ZXJ0VG9UcmFuc2ZlckNoYXJhY3RlcmlzdGlj
cyhjb25zdCBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyYgYwogICAgIH0KIH0KIAorc3RhdGljIENG
U3RyaW5nUmVmIGNvbnZlcnRUb0NNVHJhbnNmZXJGdW5jdGlvbih1aW50OF90IGNoYXJhY3Rlcmlz
dGljcykKK3sKKyAgICBzd2l0Y2ggKGNoYXJhY3RlcmlzdGljcykgeworICAgIGNhc2UgVlBDb25m
aWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzcwOV82OgorICAgICAgICByZXR1
cm4ga0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzcwOV8yOworICAgIGNhc2Ug
VlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlNNUFRFX1NUXzI0MDoKKyAg
ICAgICAgcmV0dXJuIGtDVkltYWdlQnVmZmVyVHJhbnNmZXJGdW5jdGlvbl9TTVBURV8yNDBNXzE5
OTU7CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6U01Q
VEVfU1RfMjA4NDoKKyAgICAgICAgcmV0dXJuIGtDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJG
dW5jdGlvbl9TTVBURV9TVF8yMDg0X1BROworICAgIGNhc2UgVlBDb25maWd1cmF0aW9uVHJhbnNm
ZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzIwMjBfMTBiaXQ6CisgICAgY2FzZSBWUENvbmZpZ3VyYXRp
b25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfMjAyMF8xMmJpdDoKKyAgICAgICAgcmV0dXJu
IGtDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlvbl9JVFVfUl8yMDIwOworICAgIGNh
c2UgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlNNUFRFX1NUXzQyOF8x
OgorICAgICAgICByZXR1cm4ga0NNRm9ybWF0RGVzY3JpcHRpb25UcmFuc2ZlckZ1bmN0aW9uX1NN
UFRFX1NUXzQyOF8xOworICAgIGNhc2UgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3M6OkJUXzIxMDBfSExHOgorICAgICAgICByZXR1cm4ga0NNRm9ybWF0RGVzY3JpcHRpb25U
cmFuc2ZlckZ1bmN0aW9uX0lUVV9SXzIxMDBfSExHOworICAgIGNhc2UgVlBDb25maWd1cmF0aW9u
VHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OklFQ182MTk2Nl8yXzE6CisgICAgICAgIHJldHVybiBQ
QUw6OmNhbkxvYWRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5jdGlv
bl9zUkdCKCkgPyBnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uVHJhbnNmZXJGdW5j
dGlvbl9zUkdCKCkgOiBudWxscHRyOworICAgIGNhc2UgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJD
aGFyYWN0ZXJpc3RpY3M6OkxpbmVhcjoKKyAgICAgICAgcmV0dXJuIGtDTUZvcm1hdERlc2NyaXB0
aW9uVHJhbnNmZXJGdW5jdGlvbl9MaW5lYXI7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKIHN0YXRpYyB1aW50OF90IGNvbnZlcnRUb01hdHJpeENvZWZmaWNpZW50cyhjb25zdCBN
YXRyaXhDb2VmZmljaWVudHMmIGNvZWZmaWNpZW50cykKIHsKICAgICBzd2l0Y2ggKGNvZWZmaWNp
ZW50cykgewpAQCAtNTk5LDYgKzY0OSwyMyBAQCBzdGF0aWMgdWludDhfdCBjb252ZXJ0VG9NYXRy
aXhDb2VmZmljaWVudHMoY29uc3QgTWF0cml4Q29lZmZpY2llbnRzJiBjb2VmZmljaWVudAogICAg
IH0KIH0KIAorc3RhdGljIENGU3RyaW5nUmVmIGNvbnZlcnRUb0NNWUNiQ1JNYXRyaXgodWludDhf
dCBjb2VmZmljaWVudHMpCit7CisgICAgc3dpdGNoIChjb2VmZmljaWVudHMpIHsKKyAgICBjYXNl
IFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6QlRfMjAyMF9Ob25jb25zdGFudF9M
dW1pbmFuY2U6CisgICAgICAgIHJldHVybiBrQ01Gb3JtYXREZXNjcmlwdGlvbllDYkNyTWF0cml4
X0lUVV9SXzIwMjA7CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6
OkJUXzQ3MF83X0JHOgorICAgIGNhc2UgVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRz
OjpCVF82MDFfNzoKKyAgICAgICAgcmV0dXJuIGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhfSVRV
X1JfNjAxXzQ7CisgICAgY2FzZSBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkJU
XzcwOV82OgorICAgICAgICByZXR1cm4ga0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9JVFVfUl83
MDlfMjsKKyAgICBjYXNlIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6U01QVEVf
U1RfMjQwOgorICAgICAgICByZXR1cm4ga0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9TTVBURV8y
NDBNXzE5OTU7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHN0YXRpYyB1aW50
OF90IGNvbnZlcnRTdWJzYW1wbGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyh1aW50NjRfdCB4LCB1
aW50NjRfdCB5KQogewogICAgIGlmICh4ICYgeSkKQEAgLTY5MSwxMiArNzU4LDMzIEBAIHN0YXRp
YyBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlRm9ybWF0RGVzY3JpcHRp
b25Gcm9tVlA5SGVhZGVyUGFyCiAgICAgQ0ZUeXBlUmVmIGNvbmZpZ3VyYXRpb25WYWx1ZXNbXSA9
IHsgZGF0YS5nZXQoKSB9OwogICAgIGF1dG8gY29uZmlndXJhdGlvbkRpY3QgPSBhZG9wdENGKENG
RGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjb25maWd1cmF0aW9uS2V5cywg
Y29uZmlndXJhdGlvblZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChjb25maWd1cmF0aW9uS2V5cyks
ICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpKTsKIAotICAgIFZlY3RvcjxDRlR5cGVSZWY+IGF0b21zS2V5cyB7IGtDTUZvcm1h
dERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRvbXMgfTsK
LSAgICBWZWN0b3I8Q0ZUeXBlUmVmPiBhdG9tc1ZhbHVlcyA9IHsgY29uZmlndXJhdGlvbkRpY3Qu
Z2V0KCkgfTsKLSAgICBhdXRvIGF0b21zID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgYXRvbXNLZXlzLmRhdGEoKSwgYXRvbXNWYWx1ZXMuZGF0YSgpLCBh
dG9tc0tleXMuc2l6ZSgpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgVmVjdG9yPENGVHlwZVJlZj4gZXh0ZW5z
aW9uc0tleXMgeyBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNjcmlwdGlv
bkV4dGVuc2lvbkF0b21zIH07CisgICAgVmVjdG9yPENGVHlwZVJlZj4gZXh0ZW5zaW9uc1ZhbHVl
cyA9IHsgY29uZmlndXJhdGlvbkRpY3QuZ2V0KCkgfTsKKworICAgIGlmIChyZWNvcmQudmlkZW9G
dWxsUmFuZ2VGbGFnID09IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxsUmFuZ2UpIHsKKyAgICAg
ICAgZXh0ZW5zaW9uc0tleXMuYXBwZW5kKGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX0Z1
bGxSYW5nZVZpZGVvKTsKKyAgICAgICAgZXh0ZW5zaW9uc1ZhbHVlcy5hcHBlbmQoa0NGQm9vbGVh
blRydWUpOworICAgIH0KKworICAgIGlmIChhdXRvIGNtQ29sb3JQcmltYXJpZXMgPSBjb252ZXJ0
VG9DTUNvbG9yUHJpbWFyaWVzKHJlY29yZC5jb2xvclByaW1hcmllcykpIHsKKyAgICAgICAgZXh0
ZW5zaW9uc0tleXMuYXBwZW5kKGtDVkltYWdlQnVmZmVyQ29sb3JQcmltYXJpZXNLZXkpOworICAg
ICAgICBleHRlbnNpb25zVmFsdWVzLmFwcGVuZChjbUNvbG9yUHJpbWFyaWVzKTsKKyAgICB9CisK
KyAgICBpZiAoYXV0byBjbVRyYW5zZmVyRnVuY3Rpb24gPSBjb252ZXJ0VG9DTVRyYW5zZmVyRnVu
Y3Rpb24ocmVjb3JkLnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKSkgeworICAgICAgICBleHRlbnNp
b25zS2V5cy5hcHBlbmQoa0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0aW9uS2V5KTsKKyAgICAg
ICAgZXh0ZW5zaW9uc1ZhbHVlcy5hcHBlbmQoY21UcmFuc2ZlckZ1bmN0aW9uKTsKKyAgICB9CisK
KyAgICBpZiAoYXV0byBjbU1hdHJpeCA9IGNvbnZlcnRUb0NNWUNiQ1JNYXRyaXgocmVjb3JkLm1h
dHJpeENvZWZmaWNpZW50cykpIHsKKyAgICAgICAgZXh0ZW5zaW9uc0tleXMuYXBwZW5kKGtDVklt
YWdlQnVmZmVyWUNiQ3JNYXRyaXhLZXkpOworICAgICAgICBleHRlbnNpb25zVmFsdWVzLmFwcGVu
ZChjbU1hdHJpeCk7CisgICAgfQorCisgICAgYXV0byBleHRlbnNpb25zID0gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZXh0ZW5zaW9uc0tleXMuZGF0YSgp
LCBleHRlbnNpb25zVmFsdWVzLmRhdGEoKSwgZXh0ZW5zaW9uc0tleXMuc2l6ZSgpLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KSk7CiAKICAgICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24g
PSBudWxscHRyOwotICAgIGlmIChub0VyciAhPSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NNVmlkZW9Db2RlY1R5cGVfVlA5LCBwYXJzZXIud2lk
dGgoKSwgcGFyc2VyLmhlaWdodCgpLCBhdG9tcy5nZXQoKSwgJmZvcm1hdERlc2NyaXB0aW9uKSkK
KyAgICBpZiAobm9FcnIgIT0gQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGtDTVZpZGVvQ29kZWNUeXBlX1ZQOSwgcGFyc2VyLndpZHRoKCksIHBhcnNl
ci5oZWlnaHQoKSwgZXh0ZW5zaW9ucy5nZXQoKSwgJmZvcm1hdERlc2NyaXB0aW9uKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGFkb3B0Q0YoZm9ybWF0RGVzY3JpcHRpb24p
OwogfQpAQCAtNzIxLDEyICs4MDksNiBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6T25GcmFtZShjb25zdCBGcmFtZU1ldGFkYXRhJiBtZXRhZGF0YSwgUmVhZAogICAgIGlm
ICghYmxvY2spCiAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprSW52YWxpZEVsZW1lbnRJ
ZCk7CiAKLSAgICBhdXRvIGlzU3luYyA9IFdURjo6c3dpdGNoT24oKm1fY3VycmVudEJsb2NrLCBb
XShCbG9jayYpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sIFtdKFNpbXBsZUJsb2Nr
JiBibG9jaykgewotICAgICAgICByZXR1cm4gYmxvY2suaXNfa2V5X2ZyYW1lOwotICAgIH0pOwot
CiAgICAgYXV0byB0cmFja051bWJlciA9IGJsb2NrLT50cmFja19udW1iZXI7CiAKICAgICBhdXRv
KiB0cmFja0RhdGEgPSB0cmFja0RhdGFGb3JUcmFja051bWJlcih0cmFja051bWJlcik7CkBAIC03
OTgsNyArODgwLDcgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRnJh
bWUoY29uc3QgRnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIFJlYWQKICAgICAgICAgdHJhY2tEYXRh
LT5jdXJyZW50QmxvY2tCdWZmZXIgPSBudWxscHRyOwogICAgICAgICB0cmFja0RhdGEtPmN1cnJl
bnRCbG9ja0J1ZmZlclBvc2l0aW9uID0gMDsKIAotICAgICAgICBpZiAoIWlzU3luYykgeworICAg
ICAgICBpZiAoIWhlYWRlclBhcnNlci5rZXkoKSkgewogICAgICAgICAgICAgYXV0byBhdHRhY2ht
ZW50c0FycmF5ID0gQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50c0FycmF5KHNhbXBs
ZUJ1ZmZlci5nZXQoKSwgdHJ1ZSk7CiAgICAgICAgICAgICBBU1NFUlQoYXR0YWNobWVudHNBcnJh
eSk7CiAgICAgICAgICAgICBpZiAoIWF0dGFjaG1lbnRzQXJyYXkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>