<?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>226982</bug_id>
          
          <creation_ts>2021-06-14 12:02:33 -0700</creation_ts>
          <short_desc>Reduce sizeof(NetworkLoadMetrics)</short_desc>
          <delta_ts>2021-09-21 17:27:35 -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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>basuke</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>pangle</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1769492</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-06-14 12:02:33 -0700</bug_when>
    <thetext>Use bit fields to reduce sizeof(SecurityOrigin) and sizeof(NetworkLoadMetrics)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769494</commentid>
    <comment_count>1</comment_count>
      <attachid>431351</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-06-14 12:05:46 -0700</bug_when>
    <thetext>Created attachment 431351
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769498</commentid>
    <comment_count>2</comment_count>
      <attachid>431351</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-14 12:11:08 -0700</bug_when>
    <thetext>Comment on attachment 431351
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Use bit fields to reduce sizeof(SecurityOrigin) and sizeof(NetworkLoadMetrics)

Why? Do we keep a lot of SecurityOrigins in memory? I did not expect us to.
I don&apos;t think we should use bitfields unless there is a strong argument to reduce memory usage, given that it makes the code less readable/convenient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771387</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-21 12:03:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/79573792&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785635</commentid>
    <comment_count>4</comment_count>
      <attachid>435928</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-19 17:12:36 -0700</bug_when>
    <thetext>Created attachment 435928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785755</commentid>
    <comment_count>5</comment_count>
      <attachid>435959</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-08-20 02:33:28 -0700</bug_when>
    <thetext>Created attachment 435959
Patch including soup implementation

It also fixes a couple of redundant move in return statement issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787041</commentid>
    <comment_count>6</comment_count>
      <attachid>436357</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-08-24 18:02:33 -0700</bug_when>
    <thetext>Created attachment 436357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787062</commentid>
    <comment_count>7</comment_count>
      <attachid>436366</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-08-24 19:26:20 -0700</bug_when>
    <thetext>Created attachment 436366
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789155</commentid>
    <comment_count>8</comment_count>
      <attachid>436964</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-31 16:44:43 -0700</bug_when>
    <thetext>Created attachment 436964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789414</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-01 12:26:10 -0700</bug_when>
    <thetext>After r281860 this needs rebasing which will add another use of emptyMetrics, but please review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789564</commentid>
    <comment_count>10</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-09-01 17:44:22 -0700</bug_when>
    <thetext>The cURL side looks fine from our side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795814</commentid>
    <comment_count>11</comment_count>
      <attachid>436964</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-21 15:38:48 -0700</bug_when>
    <thetext>Comment on attachment 436964
Patch

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

r=me with changes

&gt; Source/WebCore/platform/network/NetworkLoadMetrics.h:67
&gt; +    NetworkLoadMetrics(const NetworkLoadMetrics&amp;) = default;

Why do we need these? What prevents the fault ones from being generated?

&gt; Source/WebCore/platform/network/NetworkLoadMetrics.h:116
&gt; +struct AdditionalNetworkLoadMetricsForWebInspector : public RefCounted&lt;AdditionalNetworkLoadMetricsForWebInspector&gt; {

Given that this subclasses RefCounted, we should make the constructor private and have a public create() function. It is too error-prone otherwise.

Alternatively, looking at your patch, I don&apos;t think we need to subclass RefCounted at all as it doesn&apos;t seem we ever share ownership of such objects? If so, I would just not subclass RefCounted and use makeUnique / unique_ptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795825</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-21 15:49:36 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #11)
&gt; Comment on attachment 436964 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=436964&amp;action=review
&gt; 
&gt; r=me with changes
&gt; 
&gt; &gt; Source/WebCore/platform/network/NetworkLoadMetrics.h:67
&gt; &gt; +    NetworkLoadMetrics(const NetworkLoadMetrics&amp;) = default;
&gt; 
&gt; Why do we need these? What prevents the fault ones from being generated?
I tried to remove the copy constructor in an earlier version of the patch, and I think this change isn&apos;t necessary now.  Will remove.

&gt; &gt; Source/WebCore/platform/network/NetworkLoadMetrics.h:116
&gt; &gt; +struct AdditionalNetworkLoadMetricsForWebInspector : public RefCounted&lt;AdditionalNetworkLoadMetricsForWebInspector&gt; {
&gt; 
&gt; Given that this subclasses RefCounted, we should make the constructor
&gt; private and have a public create() function. It is too error-prone otherwise.
&gt; 
&gt; Alternatively, looking at your patch, I don&apos;t think we need to subclass
&gt; RefCounted at all as it doesn&apos;t seem we ever share ownership of such
&gt; objects? If so, I would just not subclass RefCounted and use makeUnique /
&gt; unique_ptr.
The copy constructor copies a reference.  It would be an unnecessary copy if it were a unique_ptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795844</commentid>
    <comment_count>13</comment_count>
      <attachid>438882</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-21 16:22:26 -0700</bug_when>
    <thetext>Created attachment 438882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795878</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-21 17:27:31 -0700</bug_when>
    <thetext>Committed r282853 (241984@main): &lt;https://commits.webkit.org/241984@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438882.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431351</attachid>
            <date>2021-06-14 12:05:46 -0700</date>
            <delta_ts>2021-08-19 17:12:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226982-20210614120545.patch</filename>
            <type>text/plain</type>
            <size>12603</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdkODM0OGQ3MGM0ZjI0
Y2RlYzcyZTM4MTc4Y2VhZTNkZjgxYTgwMC4uZDRiNDhkM2I0M2UyYWNhMGFhZDYyZjkyYzlmYzc4
OGQ3ZjVjNTY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA2LTE0ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGJp
dCBmaWVsZHMgdG8gcmVkdWNlIHNpemVvZihTZWN1cml0eU9yaWdpbikgYW5kIHNpemVvZihOZXR3
b3JrTG9hZE1ldHJpY3MpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjY5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgZm9ybWVyIHJlZHVjZXMgZnJvbSA2NCBieXRlcyB0byA1NiBieXRlcy4KKyAg
ICAgICAgVGhlIGxhdHRlciByZWR1Y2VzIGZyb20gMjE2IGJ5dGVzIHRvIDIwOCBieXRlcy4KKwor
ICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3Jp
Z2luLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmg6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3NXaXRob3V0Tm9uVGltaW5nRGF0YTo6TmV0d29ya0xvYWRNZXRyaWNz
V2l0aG91dE5vblRpbWluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
OjpkZWNvZGUpOgorCiAyMDIxLTA2LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgTWljcm8tb3B0aW1pemUgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXpl
SFRUUEhlYWRlckZpZWxkcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmlu
ZGV4IGI3Y2ZkZTE4MTVmYzNmMmRjYTUzNDUwMTA2YWQyNDBmODk4NjcxMTcuLjM4M2Y1NGNjOTY3
MGY3ZjgzZDIwNDQ3NDNjYjE3NzdiNjQ4NWNkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uY3BwCkBAIC0xNzcsNyArMTc3LDEzIEBAIGJvb2wgc2hvdWxkVHJlYXRBc1BvdGVu
dGlhbGx5VHJ1c3R3b3J0aHkoY29uc3QgVVJMJiB1cmwpCiAKIFNlY3VyaXR5T3JpZ2luOjpTZWN1
cml0eU9yaWdpbihjb25zdCBVUkwmIHVybCkKICAgICA6IG1fZGF0YShTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21VUkwodXJsKSkKKyAgICAsIG1faXNVbmlxdWUoZmFsc2UpCisgICAgLCBtX3VuaXZl
cnNhbEFjY2VzcyhmYWxzZSkKKyAgICAsIG1fZG9tYWluV2FzU2V0SW5ET00oZmFsc2UpCisgICAg
LCBtX2NhbkxvYWRMb2NhbFJlc291cmNlcyhmYWxzZSkKKyAgICAsIG1fbmVlZHNTdG9yYWdlQWNj
ZXNzRnJvbUZpbGVVUkxzUXVpcmsoZmFsc2UpCiAgICAgLCBtX2lzTG9jYWwoTGVnYWN5U2NoZW1l
UmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChtX2RhdGEucHJvdG9jb2wpKQor
ICAgICwgbV9lbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbihmYWxzZSkKIHsKICAgICAvLyBkb2N1
bWVudC5kb21haW4gc3RhcnRzIGFzIG1fZGF0YS5ob3N0LCBidXQgY2FuIGJlIHNldCBieSB0aGUg
RE9NLgogICAgIG1fZG9tYWluID0gbV9kYXRhLmhvc3Q7CkBAIC0xOTYsNiArMjAyLDEyIEBAIFNl
Y3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbigpCiAgICAgOiBtX2RhdGEgeyBlbXB0eVN0cmlu
ZygpLCBlbXB0eVN0cmluZygpLCBzdGQ6Om51bGxvcHQgfQogICAgICwgbV9kb21haW4geyBlbXB0
eVN0cmluZygpIH0KICAgICAsIG1faXNVbmlxdWUgeyB0cnVlIH0KKyAgICAsIG1fdW5pdmVyc2Fs
QWNjZXNzIHsgZmFsc2UgfQorICAgICwgbV9kb21haW5XYXNTZXRJbkRPTSB7IGZhbHNlIH0KKyAg
ICAsIG1fY2FuTG9hZExvY2FsUmVzb3VyY2VzIHsgZmFsc2UgfQorICAgICwgbV9uZWVkc1N0b3Jh
Z2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyayB7IGZhbHNlIH0KKyAgICAsIG1faXNMb2NhbCB7IGZh
bHNlIH0KKyAgICAsIG1fZW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRpb24geyBmYWxzZSB9CiAgICAg
LCBtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSB7IGZhbHNlIH0KIHsKIH0KQEAgLTIwOCwxMSAr
MjIwLDExIEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9y
aWdpbiogb3RoZXIpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2VzcyB7IG90aGVyLT5tX3VuaXZlcnNh
bEFjY2VzcyB9CiAgICAgLCBtX2RvbWFpbldhc1NldEluRE9NIHsgb3RoZXItPm1fZG9tYWluV2Fz
U2V0SW5ET00gfQogICAgICwgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgeyBvdGhlci0+bV9jYW5M
b2FkTG9jYWxSZXNvdXJjZXMgfQotICAgICwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgeyBvdGhl
ci0+bV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgfQotICAgICwgbV9lbmZvcmNlc0ZpbGVQYXRoU2Vw
YXJhdGlvbiB7IG90aGVyLT5tX2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uIH0KICAgICAsIG1f
bmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgeyBvdGhlci0+bV9uZWVkc1N0b3Jh
Z2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyayB9Ci0gICAgLCBtX2lzUG90ZW50aWFsbHlUcnVzdHdv
cnRoeSB7IG90aGVyLT5tX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSB9CiAgICAgLCBtX2lzTG9j
YWwgeyBvdGhlci0+bV9pc0xvY2FsIH0KKyAgICAsIG1fZW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRp
b24geyBvdGhlci0+bV9lbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbiB9CisgICAgLCBtX3N0b3Jh
Z2VCbG9ja2luZ1BvbGljeSB7IG90aGVyLT5tX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSB9CisgICAg
LCBtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSB7IG90aGVyLT5tX2lzUG90ZW50aWFsbHlUcnVz
dHdvcnRoeSB9CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCA1
NjlkYTcxODk0NTE5MzBhNDRmYWY2OGRlYTRjNWMxM2YwMjUwNWZmLi45MWMyMTk2YTk0ZjI3ODA2
NTA5NzQyYjk3OGNhMzIzNTQ0ZGU4NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5oCkBAIC0yMzYsMTUgKzIzNiwxNSBAQCBwcml2YXRlOgogICAgIFNlY3VyaXR5T3JpZ2luRGF0
YSBtX2RhdGE7CiAgICAgU3RyaW5nIG1fZG9tYWluOwogICAgIFN0cmluZyBtX2ZpbGVQYXRoOwot
ICAgIGJvb2wgbV9pc1VuaXF1ZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3VuaXZlcnNhbEFjY2Vz
cyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2RvbWFpbldhc1NldEluRE9NIHsgZmFsc2UgfTsKLSAg
ICBib29sIG1fY2FuTG9hZExvY2FsUmVzb3VyY2VzIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNV
bmlxdWUgOiAxOworICAgIGJvb2wgbV91bml2ZXJzYWxBY2Nlc3MgOiAxOworICAgIGJvb2wgbV9k
b21haW5XYXNTZXRJbkRPTSA6IDE7CisgICAgYm9vbCBtX2NhbkxvYWRMb2NhbFJlc291cmNlcyA6
IDE7CisgICAgYm9vbCBtX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrIDogMTsK
KyAgICBib29sIG1faXNMb2NhbCA6IDE7CisgICAgYm9vbCBtX2VuZm9yY2VzRmlsZVBhdGhTZXBh
cmF0aW9uIDogMTsKICAgICBTdG9yYWdlQmxvY2tpbmdQb2xpY3kgbV9zdG9yYWdlQmxvY2tpbmdQ
b2xpY3kgeyBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkFsbG93QWxsIH07Ci0gICAgYm9vbCBtX2Vu
Zm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uIHsgZmFsc2UgfTsKLSAgICBib29sIG1fbmVlZHNTdG9y
YWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgeyBmYWxzZSB9OwogICAgIG11dGFibGUgc3RkOjpv
cHRpb25hbDxib29sPiBtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTsKLSAgICBib29sIG1faXNM
b2NhbCB7IGZhbHNlIH07CiB9OwogCiBib29sIHNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0
d29ydGh5KGNvbnN0IFVSTCYpOwpAQCAtMjYyLDExICsyNjIsMTEgQEAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gaW5saW5lIHZvaWQgU2VjdXJpdHlPcmlnaW46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb24KICAgICBlbmNvZGVyIDw8IG1fdW5pdmVyc2FsQWNjZXNzOwogICAgIGVuY29kZXIg
PDwgbV9kb21haW5XYXNTZXRJbkRPTTsKICAgICBlbmNvZGVyIDw8IG1fY2FuTG9hZExvY2FsUmVz
b3VyY2VzOwotICAgIGVuY29kZXIgPDwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3k7Ci0gICAgZW5j
b2RlciA8PCBtX2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uOwogICAgIGVuY29kZXIgPDwgbV9u
ZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyazsKLSAgICBlbmNvZGVyIDw8IG1faXNQ
b3RlbnRpYWxseVRydXN0d29ydGh5OwogICAgIGVuY29kZXIgPDwgbV9pc0xvY2FsOworICAgIGVu
Y29kZXIgPDwgbV9lbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbjsKKyAgICBlbmNvZGVyIDw8IG1f
c3RvcmFnZUJsb2NraW5nUG9saWN5OworICAgIGVuY29kZXIgPDwgbV9pc1BvdGVudGlhbGx5VHJ1
c3R3b3J0aHk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKQEAg
LTI4MywyNCArMjgzLDUzIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpkZWNvZGUoRGVjCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3JpZ2luLT5tX2ZpbGVQYXRoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4t
Pm1faXNVbmlxdWUpKQorICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNVbmlxdWU7Cisg
ICAgZGVjb2RlciA+PiBpc1VuaXF1ZTsKKyAgICBpZiAoIWlzVW5pcXVlKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBvcmlnaW4tPm1faXNVbmlxdWUgPSAqaXNVbmlxdWU7CisKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IHVuaXZlcnNhbEFjY2VzczsKKyAgICBkZWNvZGVyID4+IHVuaXZl
cnNhbEFjY2VzczsKKyAgICBpZiAoIXVuaXZlcnNhbEFjY2VzcykKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fdW5pdmVyc2FsQWNjZXNz
KSkKKyAgICBvcmlnaW4tPm1fdW5pdmVyc2FsQWNjZXNzID0gKnVuaXZlcnNhbEFjY2VzczsKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZG9tYWluV2FzU2V0SW5ET007CisgICAgZGVjb2RlciA+
PiBkb21haW5XYXNTZXRJbkRPTTsKKyAgICBpZiAoIWRvbWFpbldhc1NldEluRE9NKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9yaWdpbi0+bV9kb21h
aW5XYXNTZXRJbkRPTSkpCisgICAgb3JpZ2luLT5tX2RvbWFpbldhc1NldEluRE9NID0gKmRvbWFp
bldhc1NldEluRE9NOworCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBjYW5Mb2FkTG9jYWxSZXNv
dXJjZXM7CisgICAgZGVjb2RlciA+PiBjYW5Mb2FkTG9jYWxSZXNvdXJjZXM7CisgICAgaWYgKCFj
YW5Mb2FkTG9jYWxSZXNvdXJjZXMpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUob3JpZ2luLT5tX2NhbkxvYWRMb2NhbFJlc291cmNlcykpCisgICAgb3Jp
Z2luLT5tX2NhbkxvYWRMb2NhbFJlc291cmNlcyA9ICpjYW5Mb2FkTG9jYWxSZXNvdXJjZXM7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1
aXJrOworICAgIGRlY29kZXIgPj4gbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcms7
CisgICAgaWYgKCFuZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaykKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fc3RvcmFn
ZUJsb2NraW5nUG9saWN5KSkKKyAgICBvcmlnaW4tPm1fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZp
bGVVUkxzUXVpcmsgPSAqbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcms7CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTG9jYWw7CisgICAgZGVjb2RlciA+PiBpc0xvY2FsOwor
ICAgIGlmICghaXNMb2NhbCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShvcmlnaW4tPm1fZW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRpb24pKQorICAgIG9y
aWdpbi0+bV9pc0xvY2FsID0gKmlzTG9jYWw7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGVu
Zm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uOworICAgIGRlY29kZXIgPj4gZW5mb3JjZXNGaWxlUGF0
aFNlcGFyYXRpb247CisgICAgaWYgKCFlbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fbmVl
ZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmspKQorICAgIG9yaWdpbi0+bV9lbmZvcmNl
c0ZpbGVQYXRoU2VwYXJhdGlvbiA9ICplbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbjsKKworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUob3JpZ2luLT5tX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3JpZ2luLT5t
X2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUob3JpZ2luLT5tX2lzTG9jYWwpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIHJldHVybiBvcmlnaW47CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0cmljcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaAppbmRleCBmMWVhNzZlMWRi
MTEzZGM2NDY5MDg4Njc5YmE5N2M3OGE5MjEzNzc1Li43MWIzMmMwZmQwOTkwZDRlM2EzNmRhNjE1
ZWIzOWY5NzMzNTE1OGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtMb2FkTWV0cmljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmgKQEAgLTYyLDYgKzYyLDE2IEBAIGNvbnN0ZXhwciBN
b25vdG9uaWNUaW1lIHJldXNlZFRMU0Nvbm5lY3Rpb25TZW50aW5lbCB7IE1vbm90b25pY1RpbWU6
OmZyb21SYXdTZWNvCiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3NXaXRob3V0Tm9uVGltaW5nRGF0
YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoTmV0d29ya0xvYWRNZXRyaWNzV2l0aG91
dE5vblRpbWluZ0RhdGEpOwogcHVibGljOgorICAgIE5ldHdvcmtMb2FkTWV0cmljc1dpdGhvdXRO
b25UaW1pbmdEYXRhKCkKKyAgICAgICAgOiBjb21wbGV0ZShmYWxzZSkKKyAgICAgICAgLCBjZWxs
dWxhcihmYWxzZSkKKyAgICAgICAgLCBleHBlbnNpdmUoZmFsc2UpCisgICAgICAgICwgY29uc3Ry
YWluZWQoZmFsc2UpCisgICAgICAgICwgbXVsdGlwYXRoKGZhbHNlKQorICAgICAgICAsIGlzUmV1
c2VkQ29ubmVjdGlvbihmYWxzZSkKKyAgICAgICAgLCBmYWlsc1RBT0NoZWNrKGZhbHNlKQorICAg
ICAgICAsIGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QoZmFsc2UpIHsgfQorICAgIAogICAgIGJvb2wg
aXNDb21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIGNvbXBsZXRlOyB9CiAgICAgdm9pZCBtYXJrQ29t
cGxldGUoKSB7IGNvbXBsZXRlID0gdHJ1ZTsgfQogCkBAIC04MiwxNSArOTIsMTQgQEAgcHVibGlj
OgogCiAgICAgdWludDE2X3QgcmVkaXJlY3RDb3VudCB7IDAgfTsKIAotICAgIC8vIEZJWE1FOiBU
aGVzZSBjb3VsZCBhbGwgYmUgbWFkZSBiaXQgZmllbGRzLgotICAgIGJvb2wgY29tcGxldGUgeyBm
YWxzZSB9OwotICAgIGJvb2wgY2VsbHVsYXIgeyBmYWxzZSB9OwotICAgIGJvb2wgZXhwZW5zaXZl
IHsgZmFsc2UgfTsKLSAgICBib29sIGNvbnN0cmFpbmVkIHsgZmFsc2UgfTsKLSAgICBib29sIG11
bHRpcGF0aCB7IGZhbHNlIH07Ci0gICAgYm9vbCBpc1JldXNlZENvbm5lY3Rpb24geyBmYWxzZSB9
OwotICAgIGJvb2wgZmFpbHNUQU9DaGVjayB7IGZhbHNlIH07Ci0gICAgYm9vbCBoYXNDcm9zc09y
aWdpblJlZGlyZWN0IHsgZmFsc2UgfTsKKyAgICBib29sIGNvbXBsZXRlIDogMTsKKyAgICBib29s
IGNlbGx1bGFyIDogMTsKKyAgICBib29sIGV4cGVuc2l2ZSA6IDE7CisgICAgYm9vbCBjb25zdHJh
aW5lZCA6IDE7CisgICAgYm9vbCBtdWx0aXBhdGggOiAxOworICAgIGJvb2wgaXNSZXVzZWRDb25u
ZWN0aW9uIDogMTsKKyAgICBib29sIGZhaWxzVEFPQ2hlY2sgOiAxOworICAgIGJvb2wgaGFzQ3Jv
c3NPcmlnaW5SZWRpcmVjdCA6IDE7CiB9OwogCiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3MgOiBw
dWJsaWMgTmV0d29ya0xvYWRNZXRyaWNzV2l0aG91dE5vblRpbWluZ0RhdGEgewpAQCAtMjE1LDYg
KzIyNCwxNCBAQCB2b2lkIE5ldHdvcmtMb2FkTWV0cmljczo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7CiAgICAgc3RhdGljX2Fzc2VydChFbmNvZGVyOjppc0lQQ0VuY29kZXIsICJO
ZXR3b3JrTG9hZE1ldHJpY3Mgc2hvdWxkIG5vdCBiZSBzdG9yZWQgYnkgdGhlIFdURjo6UGVyc2lz
dGVuY2U6OkVuY29kZXIiKTsKIAorICAgIGVuY29kZXIgPDwgY29tcGxldGU7CisgICAgZW5jb2Rl
ciA8PCBjZWxsdWxhcjsKKyAgICBlbmNvZGVyIDw8IGV4cGVuc2l2ZTsKKyAgICBlbmNvZGVyIDw8
IGNvbnN0cmFpbmVkOworICAgIGVuY29kZXIgPDwgbXVsdGlwYXRoOworICAgIGVuY29kZXIgPDwg
aXNSZXVzZWRDb25uZWN0aW9uOworICAgIGVuY29kZXIgPDwgZmFpbHNUQU9DaGVjazsKKyAgICBl
bmNvZGVyIDw8IGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3Q7CiAgICAgZW5jb2RlciA8PCByZWRpcmVj
dFN0YXJ0OwogICAgIGVuY29kZXIgPDwgZmV0Y2hTdGFydDsKICAgICBlbmNvZGVyIDw8IGRvbWFp
bkxvb2t1cFN0YXJ0OwpAQCAtMjI1LDE0ICsyNDIsNiBAQCB2b2lkIE5ldHdvcmtMb2FkTWV0cmlj
czo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCByZXF1ZXN0
U3RhcnQ7CiAgICAgZW5jb2RlciA8PCByZXNwb25zZVN0YXJ0OwogICAgIGVuY29kZXIgPDwgcmVz
cG9uc2VFbmQ7Ci0gICAgZW5jb2RlciA8PCBjb21wbGV0ZTsKLSAgICBlbmNvZGVyIDw8IGNlbGx1
bGFyOwotICAgIGVuY29kZXIgPDwgZXhwZW5zaXZlOwotICAgIGVuY29kZXIgPDwgY29uc3RyYWlu
ZWQ7Ci0gICAgZW5jb2RlciA8PCBtdWx0aXBhdGg7Ci0gICAgZW5jb2RlciA8PCBpc1JldXNlZENv
bm5lY3Rpb247Ci0gICAgZW5jb2RlciA8PCBmYWlsc1RBT0NoZWNrOwotICAgIGVuY29kZXIgPDwg
aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdDsKICAgICBlbmNvZGVyIDw8IHByb3RvY29sOwogICAgIGVu
Y29kZXIgPDwgcmVkaXJlY3RDb3VudDsKICAgICBlbmNvZGVyIDw8IHJlbW90ZUFkZHJlc3M7CkBA
IC0yNTQsNiArMjYzLDU0IEBAIGJvb2wgTmV0d29ya0xvYWRNZXRyaWNzOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHN0YXRpY19h
c3NlcnQoRGVjb2Rlcjo6aXNJUENEZWNvZGVyLCAiTmV0d29ya0xvYWRNZXRyaWNzIHNob3VsZCBu
b3QgYmUgc3RvcmVkIGJ5IHRoZSBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIik7CiAKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGNvbXBsZXRlOworICAgIGRlY29kZXIgPj4gY29tcGxldGU7Cisg
ICAgaWYgKCFjb21wbGV0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1ldHJpY3MuY29t
cGxldGUgPSAqY29tcGxldGU7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNlbGx1bGFyOwor
ICAgIGRlY29kZXIgPj4gY2VsbHVsYXI7CisgICAgaWYgKCFjZWxsdWxhcikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIG1ldHJpY3MuY2VsbHVsYXIgPSAqY2VsbHVsYXI7CisKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGV4cGVuc2l2ZTsKKyAgICBkZWNvZGVyID4+IGV4cGVuc2l2ZTsKKyAg
ICBpZiAoIWV4cGVuc2l2ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1ldHJpY3MuZXhw
ZW5zaXZlID0gKmV4cGVuc2l2ZTsKKworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY29uc3RyYWlu
ZWQ7CisgICAgZGVjb2RlciA+PiBjb25zdHJhaW5lZDsKKyAgICBpZiAoIWNvbnN0cmFpbmVkKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbWV0cmljcy5jb25zdHJhaW5lZCA9ICpjb25zdHJh
aW5lZDsKKworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbXVsdGlwYXRoOworICAgIGRlY29kZXIg
Pj4gbXVsdGlwYXRoOworICAgIGlmICghbXVsdGlwYXRoKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgbWV0cmljcy5tdWx0aXBhdGggPSAqbXVsdGlwYXRoOworCisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBpc1JldXNlZENvbm5lY3Rpb247CisgICAgZGVjb2RlciA+PiBpc1JldXNlZENvbm5l
Y3Rpb247CisgICAgaWYgKCFpc1JldXNlZENvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBtZXRyaWNzLmlzUmV1c2VkQ29ubmVjdGlvbiA9ICppc1JldXNlZENvbm5lY3Rpb247
CisKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZhaWxzVEFPQ2hlY2s7CisgICAgZGVjb2RlciA+
PiBmYWlsc1RBT0NoZWNrOworICAgIGlmICghZmFpbHNUQU9DaGVjaykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIG1ldHJpY3MuZmFpbHNUQU9DaGVjayA9ICpmYWlsc1RBT0NoZWNrOworCisg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNDcm9zc09yaWdpblJlZGlyZWN0OworICAgIGRlY29k
ZXIgPj4gaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdDsKKyAgICBpZiAoIWhhc0Nyb3NzT3JpZ2luUmVk
aXJlY3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtZXRyaWNzLmhhc0Nyb3NzT3JpZ2lu
UmVkaXJlY3QgPSAqaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdDsKKwogICAgIHJldHVybiBkZWNvZGVy
LmRlY29kZShtZXRyaWNzLnJlZGlyZWN0U3RhcnQpCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2Rl
KG1ldHJpY3MuZmV0Y2hTdGFydCkKICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5k
b21haW5Mb29rdXBTdGFydCkKQEAgLTI2NCwxNCArMzIxLDYgQEAgYm9vbCBOZXR3b3JrTG9hZE1l
dHJpY3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVxdWVzdFN0YXJ0KQogICAg
ICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnJlc3BvbnNlU3RhcnQpCiAgICAgICAgICYm
IGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVzcG9uc2VFbmQpCi0gICAgICAgICYmIGRlY29kZXIu
ZGVjb2RlKG1ldHJpY3MuY29tcGxldGUpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJp
Y3MuY2VsbHVsYXIpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuZXhwZW5zaXZl
KQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmNvbnN0cmFpbmVkKQotICAgICAg
ICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLm11bHRpcGF0aCkKLSAgICAgICAgJiYgZGVjb2Rl
ci5kZWNvZGUobWV0cmljcy5pc1JldXNlZENvbm5lY3Rpb24pCi0gICAgICAgICYmIGRlY29kZXIu
ZGVjb2RlKG1ldHJpY3MuZmFpbHNUQU9DaGVjaykKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUo
bWV0cmljcy5oYXNDcm9zc09yaWdpblJlZGlyZWN0KQogICAgICAgICAmJiBkZWNvZGVyLmRlY29k
ZShtZXRyaWNzLnByb3RvY29sKQogICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnJl
ZGlyZWN0Q291bnQpCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVtb3RlQWRk
cmVzcykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435928</attachid>
            <date>2021-08-19 17:12:36 -0700</date>
            <delta_ts>2021-08-20 02:33:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226982-20210819171235.patch</filename>
            <type>text/plain</type>
            <size>51853</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhlOTQ0YmFhZGY4MmFi
OWZiZDM3ZmRjZWFiMWUwYmVmNmQwNGE5Mi4uNGI5NzE4YjZiOWZjNWZkOTQ3MmZiZjM0NmQ3NDE3
ODQyYmRhNWFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIxLTA4LTE5ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNl
IHNpemVvZihOZXR3b3JrTG9hZE1ldHJpY3MpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuICBKdXN0IGdyZWF0bHkg
cmVkdWNpbmcgdGhlIHNpemUgb2YgYSBjb21tb24gc3RydWN0dXJlLgorCisgICAgICAgIFdlIHRh
a2UgYWxsIHRoZSBtZW1iZXJzIHRoYXQgYXJlbid0IHVzZWQgd2l0aG91dCB0aGUgaW5zcGVjdG9y
IGFuZCBtb3ZlIHRoZW0gdG8gYSBuZXcgc3RydWN0LAorICAgICAgICBBZGRpdGlvbmFsTmV0d29y
a0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yLiAgV2UgYWxzbyByZW1vdmUgc29tZSBlcXVhbGl0
eSBjb21wYXJpc29uIHRoYXQKKyAgICAgICAgd2FzIHVubmVjZXNzYXJ5IGJlY2F1c2UgaXQgd2Fz
IG9ubHkgdXNlZCBmb3IgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgZXF1YWxpdHkgY29tcGFyaXNv
bnMgaW4KKyAgICAgICAgUmVzb3VyY2VIYW5kbGVNYWMuICBXZSBhbHNvIHVzZSBlbXB0eU1ldHJp
Y3MoKSB0byByZW1vdmUgYSBmZXcgdW5uZWNlc3NhcnkgYW5kIGhhcmQgdG8gc2VlCisgICAgICAg
IGNvcHkgY29uc3RydWN0b3IgY2FsbHMuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvck1ldHJpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvclJlc291cmNlUmVz
cG9uc2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFsRm9yV2ViS2l0TGVnYWN5Q2hh
bGxlbmdlQ29tcGFyaXNvbik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUJhc2U6OmNvbXBhcmUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
cj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6Ok5ldHdvcmtMb2FkTWV0cmlj
cyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcyk6
CisgICAgICAgIChXZWJDb3JlOjpBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5z
cGVjdG9yOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0
d29ya0xvYWRNZXRyaWNzLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9y
V2ViSW5zcGVjdG9yOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWRkaXRpb25h
bE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcjo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljc1dpdGhvdXROb25UaW1pbmdEYXRhOjppc0NvbXBsZXRl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljc1dp
dGhvdXROb25UaW1pbmdEYXRhOjptYXJrQ29tcGxldGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjpOZXR3b3JrTG9hZE1ldHJpY3MpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjppc29sYXRlZENvcHkgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjpvcGVyYXRv
cj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
czo6b3BlcmF0b3IhPSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9w
ZXJhdG9yIT0pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2Vp
dmVkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2
ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJl
amVjdGlvbik6CisKIDIwMjEtMDgtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVuYW1lIEVsZW1lbnQ6OmNsaWVudFJlY3QoKSB3aGljaCBkb2Vz
IG5vdCByZXR1cm4gYSB2YWx1ZSBpbiB3ZWItZXhwb3NlZCAiY2xpZW50IiBjb29yZGluYXRlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBjNDIwYzM3NDc1YWFhMjJlNTIzN2VlNmY1NTNlNjA1NmRlNGRiZDMwLi5lZTcz
NzM4NzBlMzY3Nzg0MThiNzE3ZjM2OWExODY2NjFjNTU4MGFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDIxLTA4LTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHNpemVvZihOZXR3b3JrTG9hZE1ldHJpY3MpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5ODIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2VuZFJlc3VsdEZvckNhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0
d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkRmluaXNoQ29sbGVjdGluZ01l
dHJpY3M6XSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorCiAy
MDIxLTA4LTE5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbmFtZSBFbGVtZW50OjpjbGllbnRSZWN0KCkgd2hpY2ggZG9lcyBub3QgcmV0dXJuIGEg
dmFsdWUgaW4gd2ViLWV4cG9zZWQgImNsaWVudCIgY29vcmRpbmF0ZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5k
ZXggMDNlMTJhN2E3ODcyMzFkNmE4OWVjMzc1YWZhNWM0N2RjMTZmMjljMy4uMjEzZjUwMjU2ZDY0
MTNiMGU3MmU5YTgzYjE3ZTNlMzNiNmZjZTA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIwODQsNiAr
MjA4NCw3IEBAIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvSFRUUEhlYWRlclZhbHVlcy5jcHAKIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMu
Y3BwCiBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCitwbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtMb2FkTWV0cmljcy5jcHAKIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZp
ZXIuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKIHBsYXRm
b3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM4M2IyNWNjZmIyYmVmMTA4
NmMyMDQ0MThlZTc2ZTI1YjEwMWFmYmIuLjI0Y2ExMDMwZjAyOGJkOTNhYThhZTE0OTcyNjNiYTg5
YTkyZWYzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTk2NTYsNiArOTY1Niw3IEBACiAJCTVDOUVGMkYyMjFGMDYxNzEwMDNC
REM1NiAvKiBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUNBMURFQzIxRjcxRTY4NjAwRTcxQkQzIC8qIEhUVFBIZWFkZXJGaWVsZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVFRQSGVhZGVyRmllbGQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0ExREVDNDFGNzFFNjg3MDBFNzFCRDMg
LyogSFRUUEhlYWRlckZpZWxkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhU
VFBIZWFkZXJGaWVsZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0FDNUQwODI2
Q0VGMDAxMDBCQUZEMTQgLyogTmV0d29ya0xvYWRNZXRyaWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtMb2FkTWV0cmljcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDQjM3RkZDMUM2MkQyNzgwMEYyMDE4OCAvKiBTY3JvbGxBbmlt
YXRvck1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xs
QW5pbWF0b3JNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMzdGRkQx
QzYyRDI3ODAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRvck1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUNCQzhEQUExQUFBMzAyMjAwRTFDODAzIC8qIE1lZGlhQWNjZXNzaWJpbGl0
eVNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlh
QWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIxNjkzLDYgKzIxNjk0LDcgQEAKIAkJCQk1MTRDNzY1RTBDRTkyM0ExMDA3RUYzQ0QgLyogSFRU
UFBhcnNlcnMuaCAqLywKIAkJCQk2MjhEMjE0QjEyMTMxRUQxMDA1NURDRkMgLyogTmV0d29ya2lu
Z0NvbnRleHQuaCAqLywKIAkJCQk0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xv
YWRJbmZvcm1hdGlvbi5oICovLAorCQkJCTVDQUM1RDA4MjZDRUYwMDEwMEJBRkQxNCAvKiBOZXR3
b3JrTG9hZE1ldHJpY3MuY3BwICovLAogCQkJCThBODFCRjg0MTFEQ0ZEOTAwMERBMkI5OCAvKiBO
ZXR3b3JrTG9hZE1ldHJpY3MuaCAqLywKIAkJCQkxQTdGQTYxQTBEREEzQkJFMDAyOEY4QTUgLyog
TmV0d29ya1N0YXRlTm90aWZpZXIuY3BwICovLAogCQkJCTFBN0ZBNjE4MEREQTNCM0EwMDI4RjhB
NSAvKiBOZXR3b3JrU3RhdGVOb3RpZmllci5oICovLApAQCAtMzM1MjIsNyArMzM1MjQsNiBAQAog
CQkJCTdBRTZDOTNDMUJFMEM2MDEwMEUxOUUwMyAvKiBNYWluVGhyZWFkU2hhcmVkVGltZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0NTFDNjMyMjM5NDAzMUEwMDk5MzE5MCAvKiBNYXJnaW5UeXBl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxODY2NDUxRjcyRTVCNDAwQTBDQUI2IC8qIE1hcmtl
ZFRleHQuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0NDBGRDUzMjVBNEFGREYwMEY3Qzg0OSAvKiBT
dHlsZWRNYXJrZWRUZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURGODA5OUU2NDkyMDA1
NkU1ODEgLyogbWFya3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzI4QzMxNDEyNjhFNDM5MDA0
MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwQzYwRTNG
MTNENzZEN0UwMDkyQTI3NSAvKiBNYXJrdXBUb2tlbml6ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTM0Njk0LDYgKzM0Njk1LDcgQEAKIAkJCQlCQzc3OUUxNzFCQjIyN0NBMDBDQUE4QkYg
LyogU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QzRBN0ZE
MDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzVFQjhCOTBFODIwMUJEMDBCMjU5NjUgLyogU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRh
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDQwRkQ1MzI1QTRBRkRGMDBGN0M4NDkgLyogU3R5bGVk
TWFya2VkVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE5QUUwNjQxNDJENkIyNDAwNjU2M0Ex
IC8qIFN0eWxlRmlsdGVyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTMxNzYxMjMxM0M1MTY2
OTAwMjZFNDU0IC8qIFN0eWxlRmxleGlibGVCb3hEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NEQ1OEVCOTE3QjRFRDg5MDBDQkRDQTggLyogU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNzk0ODg1MmRkOWE2YmM0MmI0MDExNjk0
MWNlMDM0NmMzMmUxNmYyZC4uNjI0NjU1ODg4MTk1ODMyZGZlYzgxMGJhNjg1OTZmMTk2ZGNmODBi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMjYzLDIxICsyNjMsMjIgQEAgUmVmPFByb3RvY29s
OjpOZXR3b3JrOjpNZXRyaWNzPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
TWV0cmljcyhjb24KIAogICAgIGlmICghbmV0d29ya0xvYWRNZXRyaWNzLnByb3RvY29sLmlzTnVs
bCgpKQogICAgICAgICBtZXRyaWNzLT5zZXRQcm90b2NvbChuZXR3b3JrTG9hZE1ldHJpY3MucHJv
dG9jb2wpOwotICAgIGlmIChuZXR3b3JrTG9hZE1ldHJpY3MucHJpb3JpdHkgIT0gTmV0d29ya0xv
YWRQcmlvcml0eTo6VW5rbm93bikKLSAgICAgICAgbWV0cmljcy0+c2V0UHJpb3JpdHkodG9Qcm90
b2NvbChuZXR3b3JrTG9hZE1ldHJpY3MucHJpb3JpdHkpKTsKLSAgICBpZiAoIW5ldHdvcmtMb2Fk
TWV0cmljcy5yZW1vdGVBZGRyZXNzLmlzTnVsbCgpKQotICAgICAgICBtZXRyaWNzLT5zZXRSZW1v
dGVBZGRyZXNzKG5ldHdvcmtMb2FkTWV0cmljcy5yZW1vdGVBZGRyZXNzKTsKLSAgICBpZiAoIW5l
dHdvcmtMb2FkTWV0cmljcy5jb25uZWN0aW9uSWRlbnRpZmllci5pc051bGwoKSkKLSAgICAgICAg
bWV0cmljcy0+c2V0Q29ubmVjdGlvbklkZW50aWZpZXIobmV0d29ya0xvYWRNZXRyaWNzLmNvbm5l
Y3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIW5ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0SGVh
ZGVycy5pc0VtcHR5KCkpCi0gICAgICAgIG1ldHJpY3MtPnNldFJlcXVlc3RIZWFkZXJzKGJ1aWxk
T2JqZWN0Rm9ySGVhZGVycyhuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRlcnMpKTsKLQot
ICAgIGlmIChuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRlckJ5dGVzU2VudCAhPSBzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCi0gICAgICAgIG1ldHJpY3MtPnNldFJl
cXVlc3RIZWFkZXJCeXRlc1NlbnQobmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RIZWFkZXJCeXRl
c1NlbnQpOwotICAgIGlmIChuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEJvZHlCeXRlc1NlbnQg
IT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKQotICAgICAgICBtZXRyaWNz
LT5zZXRSZXF1ZXN0Qm9keUJ5dGVzU2VudChuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEJvZHlC
eXRlc1NlbnQpOwotICAgIGlmIChuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VIZWFkZXJCeXRl
c1JlY2VpdmVkICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSkKLSAgICAg
ICAgbWV0cmljcy0+c2V0UmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkKG5ldHdvcmtMb2FkTWV0
cmljcy5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQpOworICAgIGlmIChhdXRvKiBhZGRpdGlv
bmFsTWV0cmljcyA9IG5ldHdvcmtMb2FkTWV0cmljcy5hZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRy
aWNzRm9yV2ViSW5zcGVjdG9yLmdldCgpKSB7CisgICAgICAgIGlmIChhZGRpdGlvbmFsTWV0cmlj
cy0+cHJpb3JpdHkgIT0gTmV0d29ya0xvYWRQcmlvcml0eTo6VW5rbm93bikKKyAgICAgICAgICAg
IG1ldHJpY3MtPnNldFByaW9yaXR5KHRvUHJvdG9jb2woYWRkaXRpb25hbE1ldHJpY3MtPnByaW9y
aXR5KSk7CisgICAgICAgIGlmICghYWRkaXRpb25hbE1ldHJpY3MtPnJlbW90ZUFkZHJlc3MuaXNO
dWxsKCkpCisgICAgICAgICAgICBtZXRyaWNzLT5zZXRSZW1vdGVBZGRyZXNzKGFkZGl0aW9uYWxN
ZXRyaWNzLT5yZW1vdGVBZGRyZXNzKTsKKyAgICAgICAgaWYgKCFhZGRpdGlvbmFsTWV0cmljcy0+
Y29ubmVjdGlvbklkZW50aWZpZXIuaXNOdWxsKCkpCisgICAgICAgICAgICBtZXRyaWNzLT5zZXRD
b25uZWN0aW9uSWRlbnRpZmllcihhZGRpdGlvbmFsTWV0cmljcy0+Y29ubmVjdGlvbklkZW50aWZp
ZXIpOworICAgICAgICBpZiAoIWFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0SGVhZGVycy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICBtZXRyaWNzLT5zZXRSZXF1ZXN0SGVhZGVycyhidWlsZE9iamVj
dEZvckhlYWRlcnMoYWRkaXRpb25hbE1ldHJpY3MtPnJlcXVlc3RIZWFkZXJzKSk7CisgICAgICAg
IGlmIChhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEhlYWRlckJ5dGVzU2VudCAhPSBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCisgICAgICAgICAgICBtZXRyaWNzLT5zZXRS
ZXF1ZXN0SGVhZGVyQnl0ZXNTZW50KGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0SGVhZGVyQnl0
ZXNTZW50KTsKKyAgICAgICAgaWYgKGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0Qm9keUJ5dGVz
U2VudCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCisgICAgICAgICAg
ICBtZXRyaWNzLT5zZXRSZXF1ZXN0Qm9keUJ5dGVzU2VudChhZGRpdGlvbmFsTWV0cmljcy0+cmVx
dWVzdEJvZHlCeXRlc1NlbnQpOworICAgICAgICBpZiAoYWRkaXRpb25hbE1ldHJpY3MtPnJlc3Bv
bnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6
bWF4KCkpCisgICAgICAgICAgICBtZXRyaWNzLT5zZXRSZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2
ZWQoYWRkaXRpb25hbE1ldHJpY3MtPnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCk7CisgICAg
fQogICAgIGlmIChuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZCAh
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCiAgICAgICAgIG1ldHJpY3Mt
PnNldFJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQobmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNl
Qm9keUJ5dGVzUmVjZWl2ZWQpOwogICAgIGlmIChuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VC
b2R5RGVjb2RlZFNpemUgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKQpA
QCAtMjg2LDExICsyODcsMTIgQEAgUmVmPFByb3RvY29sOjpOZXR3b3JrOjpNZXRyaWNzPiBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTWV0cmljcyhjb24KICAgICBhdXRvIGNv
bm5lY3Rpb25QYXlsb2FkID0gUHJvdG9jb2w6OlNlY3VyaXR5OjpDb25uZWN0aW9uOjpjcmVhdGUo
KQogICAgICAgICAucmVsZWFzZSgpOwogCi0gICAgaWYgKCFuZXR3b3JrTG9hZE1ldHJpY3MudGxz
UHJvdG9jb2wuaXNFbXB0eSgpKQotICAgICAgICBjb25uZWN0aW9uUGF5bG9hZC0+c2V0UHJvdG9j
b2wobmV0d29ya0xvYWRNZXRyaWNzLnRsc1Byb3RvY29sKTsKLQotICAgIGlmICghbmV0d29ya0xv
YWRNZXRyaWNzLnRsc0NpcGhlci5pc0VtcHR5KCkpCi0gICAgICAgIGNvbm5lY3Rpb25QYXlsb2Fk
LT5zZXRDaXBoZXIobmV0d29ya0xvYWRNZXRyaWNzLnRsc0NpcGhlcik7CisgICAgaWYgKGF1dG8q
IGFkZGl0aW9uYWxNZXRyaWNzID0gbmV0d29ya0xvYWRNZXRyaWNzLmFkZGl0aW9uYWxOZXR3b3Jr
TG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IuZ2V0KCkpIHsKKyAgICAgICAgaWYgKCFhZGRpdGlv
bmFsTWV0cmljcy0+dGxzUHJvdG9jb2wuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29ubmVjdGlv
blBheWxvYWQtPnNldFByb3RvY29sKGFkZGl0aW9uYWxNZXRyaWNzLT50bHNQcm90b2NvbCk7Cisg
ICAgICAgIGlmICghYWRkaXRpb25hbE1ldHJpY3MtPnRsc0NpcGhlci5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBjb25uZWN0aW9uUGF5bG9hZC0+c2V0Q2lwaGVyKGFkZGl0aW9uYWxNZXRyaWNzLT50
bHNDaXBoZXIpOworICAgIH0KIAogICAgIG1ldHJpY3MtPnNldFNlY3VyaXR5Q29ubmVjdGlvbihX
VEZNb3ZlKGNvbm5lY3Rpb25QYXlsb2FkKSk7CiAKQEAgLTM1Myw3ICszNTUsNyBAQCBSZWZQdHI8
UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yUmVzb3VyYwogCiAgICAgaWYgKHJlc291cmNlTG9hZGVyKSB7CiAgICAgICAgIGF1
dG8qIG1ldHJpY3MgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxs
KCk7Ci0gICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRUaW1pbmcoYnVpbGRPYmplY3RGb3JUaW1p
bmcobWV0cmljcyA/ICptZXRyaWNzIDogTmV0d29ya0xvYWRNZXRyaWNzIHsgfSwgKnJlc291cmNl
TG9hZGVyKSk7CisgICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRUaW1pbmcoYnVpbGRPYmplY3RG
b3JUaW1pbmcobWV0cmljcyA/ICptZXRyaWNzIDogTmV0d29ya0xvYWRNZXRyaWNzOjplbXB0eU1l
dHJpY3MoKSwgKnJlc291cmNlTG9hZGVyKSk7CiAgICAgfQogCiAgICAgaWYgKGF1dG8mIGNlcnRp
ZmljYXRlSW5mbyA9IHJlc3BvbnNlLmNlcnRpZmljYXRlSW5mbygpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDQxYjhi
NDNiNDUwZDljYmIyNjUwYTNjM2YwM2Y3YWQ1ZmJhNzMzMjEuLjQwYTRjNDY1OTRiNTMzNTUyZGRi
NjFkZWJhOWI2NWRiZDYwOTE5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC02NjQsNyArNjY0LDcgQEAgdm9pZCBEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFNlY3VyaXR5Q2gKICAgICB9CiAKICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25z
ZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7Ci0gICAgYXV0byByZXNvdXJj
ZVRpbWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkws
IG1fb3B0aW9ucy5pbml0aWF0b3IsIGxvYWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3
b3JrTG9hZE1ldHJpY3MgeyB9LCByZXNwb25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgYXV0
byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9tU3luY2hyb25vdXNMb2FkKHJl
cXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxvYWRUaW1pbmcsIHRpbWluZyA/ICp0aW1p
bmcgOiBOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcygpLCByZXNwb25zZSwgc2VjdXJp
dHlPcmlnaW4oKSk7CiAgICAgaWYgKG9wdGlvbnMoKS5pbml0aWF0b3JDb250ZXh0ID09IEluaXRp
YXRvckNvbnRleHQ6OldvcmtlcikKICAgICAgICAgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2Fk
KHJlc291cmNlVGltaW5nKTsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFhZDg0MGJjZGY3ZTFmNjdkMjAyOGVlMGNlNzE4ZGMy
MWNkYjQwZTEuLjI2NDZiZmVkZWMzNDM4NDFjYTdmZGM4YzMwNDk2NWM0Zjk2MzljNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNDk4LDcgKzQ5
OCw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAgICAgICAgIGlmIChyZXNwb25zZUhhc0hU
VFBTdGF0dXNDb2RlRXJyb3IoKSkgewogICAgICAgICAgICAgbV9sb2FkVGltaW5nLm1hcmtFbmRU
aW1lKCk7CiAgICAgICAgICAgICBhdXRvKiBtZXRyaWNzID0gdGhpcy0+cmVzcG9uc2UoKS5kZXBy
ZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7Ci0gICAgICAgICAgICByZXBvcnRSZXNv
dXJjZVRpbWluZyhtZXRyaWNzID8gKm1ldHJpY3MgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9KTsK
KyAgICAgICAgICAgIHJlcG9ydFJlc291cmNlVGltaW5nKG1ldHJpY3MgPyAqbWV0cmljcyA6IE5l
dHdvcmtMb2FkTWV0cmljczo6ZW1wdHlNZXRyaWNzKCkpOwogCiAgICAgICAgICAgICBtX3N0YXRl
ID0gRmluaXNoaW5nOwogICAgICAgICAgICAgbV9yZXNvdXJjZS0+ZXJyb3IoQ2FjaGVkUmVzb3Vy
Y2U6OkxvYWRFcnJvcik7CkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2Fk
TWUKICAgICAgICAgLy8gY29tcGxldGUgbG9hZCBtZXRyaWNzIGluIGRpZEZpbmlzaExvYWQuIElu
IHRob3NlIGNhc2VzLCBmYWxsIGJhY2sgdG8gdGhlIHBvc3NpYmlsaXR5CiAgICAgICAgIC8vIHRo
YXQgdGhleSBwb3B1bGF0ZWQgcGFydGlhbCBsb2FkIHRpbWluZyBpbmZvcm1hdGlvbiBvbiB0aGUg
UmVzb3VyY2VSZXNwb25zZS4KICAgICAgICAgY29uc3QgYXV0byogdGltaW5nID0gbV9yZXNvdXJj
ZS0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7Ci0gICAg
ICAgIHJlcG9ydFJlc291cmNlVGltaW5nKHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1l
dHJpY3MgeyB9KTsKKyAgICAgICAgcmVwb3J0UmVzb3VyY2VUaW1pbmcodGltaW5nID8gKnRpbWlu
ZyA6IE5ldHdvcmtMb2FkTWV0cmljczo6ZW1wdHlNZXRyaWNzKCkpOwogICAgIH0KIAogICAgIGlm
IChtX3Jlc291cmNlLT50eXBlKCkgIT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJj
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDIxMWIzMmEzNDdmMWU5M2JmMGU0NDcwZjM0ZDQ0OTc3OTQyYTcxOTQu
LmRhNTg1MzQ1Yzk4YmQxOTNlNTZiZTEyZGZjOTk0MzM5NTNkYzIwNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAt
MTA0MCw3ICsxMDQwLDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXUKICAgICAgICAgICAgICAg
ICAvLyBmb3IgdGhpcyBkb2N1bWVudCBiZWNhdXNlIGl0IG1heSBoYXZlIGJlZW4gc3BlY3VsYXRp
dmVseSBwcmVsb2FkZWQuCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gbWV0cmljc0Zyb21SZXNv
dXJjZSA9IHJlc291cmNlLT50YWtlTmV0d29ya0xvYWRNZXRyaWNzKCk7IG1ldHJpY3NGcm9tUmVz
b3VyY2UgJiYgZG9jdW1lbnRMb2FkZXIgJiYgbWV0cmljc0Zyb21SZXNvdXJjZS0+cmVkaXJlY3RT
dGFydCA+PSBkb2N1bWVudExvYWRlci0+dGltaW5nKCkudGltZU9yaWdpbigpKQogICAgICAgICAg
ICAgICAgICAgICBtZXRyaWNzID0gV1RGTW92ZShtZXRyaWNzRnJvbVJlc291cmNlKTsKLSAgICAg
ICAgICAgICAgICBhdXRvIHJlc291cmNlVGltaW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21NZW1v
cnlDYWNoZSh1cmwsIHJlcXVlc3QuaW5pdGlhdG9yTmFtZSgpLCBsb2FkVGltaW5nLCByZXNvdXJj
ZS0+cmVzcG9uc2UoKSwgbWV0cmljcyA/ICptZXRyaWNzIDogTmV0d29ya0xvYWRNZXRyaWNzIHsg
fSwgKnJlcXVlc3Qub3JpZ2luKCkpOworICAgICAgICAgICAgICAgIGF1dG8gcmVzb3VyY2VUaW1p
bmcgPSBSZXNvdXJjZVRpbWluZzo6ZnJvbU1lbW9yeUNhY2hlKHVybCwgcmVxdWVzdC5pbml0aWF0
b3JOYW1lKCksIGxvYWRUaW1pbmcsIHJlc291cmNlLT5yZXNwb25zZSgpLCBtZXRyaWNzID8gKm1l
dHJpY3MgOiBOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcygpLCAqcmVxdWVzdC5vcmln
aW4oKSk7CiAgICAgICAgICAgICAgICAgaWYgKGluaXRpYXRvckNvbnRleHQgPT0gSW5pdGlhdG9y
Q29udGV4dDo6V29ya2VyKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpczxDYWNoZWRS
YXdSZXNvdXJjZT4ocmVzb3VyY2UuZ2V0KCkpKTsKICAgICAgICAgICAgICAgICAgICAgZG93bmNh
c3Q8Q2FjaGVkUmF3UmVzb3VyY2U+KHJlc291cmNlLmdldCgpKS0+ZmluaXNoZWRUaW1pbmdGb3JX
b3JrZXJMb2FkKFdURk1vdmUocmVzb3VyY2VUaW1pbmcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VC
YXNlLmNwcAppbmRleCA3YzE5ZTFmNTIxNjQ5MjU3OTk0Zjc1M2ZhZTAzMzc2NzczOWUzMzhhLi4x
YWVjZDJlNGY5YTQ5YmUxNThlZDhlMzY2MjQ5ZDhjYTE5Y2QzNjQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUJhc2UuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlOjpudWxsaWZ5KCkKICAgICBtX2lzTnVsbCA9IHRydWU7CiB9CiAKLWJvb2wgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjpjb21wYXJlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYikKK2Jvb2wgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VCYXNlOjplcXVhbEZvcldlYktpdExlZ2FjeUNoYWxsZW5nZUNvbXBh
cmlzb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBiKQogewogICAgIGlmIChhLmlzTnVsbCgpICYmIGIuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtOTksOSArOTksOSBAQCBib29sIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQmFzZTo6Y29tcGFyZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwg
Y29ucwogICAgIGlmIChhLnByZXZpb3VzRmFpbHVyZUNvdW50KCkgIT0gYi5wcmV2aW91c0ZhaWx1
cmVDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgIGlmIChhLmZh
aWx1cmVSZXNwb25zZSgpICE9IGIuZmFpbHVyZVJlc3BvbnNlKCkpCisgICAgaWYgKCFSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGEu
ZmFpbHVyZVJlc3BvbnNlKCksIGIuZmFpbHVyZVJlc3BvbnNlKCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIAorCiAgICAgaWYgKGEuZXJyb3IoKSAhPSBiLmVycm9yKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaAppbmRl
eCBhNGY3YjYyZWRhMTAyZWNmNTk5ODcxZDM3NTc4OTJkNzc5OWQwMjA3Li41ODYwNzBmZWE5Njlm
NGJjMjg4NTU1NjNkYjMwNmU2Zjk1MGNiZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmgK
QEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNOdWxs
KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBudWxsaWZ5KCk7CiAgICAgCi0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY29tcGFyZShjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIGVxdWFsRm9yV2ViS2l0TGVnYWN5Q2hhbGxlbmdlQ29tcGFy
aXNvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJik7CiAKIHByb3RlY3RlZDoKICAgICAvLyBUaGUgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2Ugc3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRvIGNvbXBhcmUgcGxhdGZv
cm0gc3BlY2lmaWMgZmllbGRzCkBAIC02Miw5ICs2Miw2IEBAIHByb3RlY3RlZDoKICAgICBSZXNv
dXJjZUVycm9yIG1fZXJyb3I7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
YikgeyByZXR1cm4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBh
LCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYikgeyByZXR1cm4gIShhID09IGIpOyB9
Ci0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtMb2FkTWV0cmljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtMb2FkTWV0cmljcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNhNGMyZmVkNGRlYTBjMjUz
YmYyY2E4YmExNTJkNTA2OTY2OTQ3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmNwcApAQCAtMCwwICsxLDEwMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrTG9hZE1ldHJpY3MuaCIKKworI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05ldHdvcmtM
b2FkTWV0cmljczo6TmV0d29ya0xvYWRNZXRyaWNzKCkKKyAgICA6IGNvbXBsZXRlKGZhbHNlKQor
ICAgICwgY2VsbHVsYXIoZmFsc2UpCisgICAgLCBleHBlbnNpdmUoZmFsc2UpCisgICAgLCBjb25z
dHJhaW5lZChmYWxzZSkKKyAgICAsIG11bHRpcGF0aChmYWxzZSkKKyAgICAsIGlzUmV1c2VkQ29u
bmVjdGlvbihmYWxzZSkKKyAgICAsIGZhaWxzVEFPQ2hlY2soZmFsc2UpCisgICAgLCBoYXNDcm9z
c09yaWdpblJlZGlyZWN0KGZhbHNlKSB7IH0KKworY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBO
ZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPE5ldHdvcmtMb2FkTWV0cmljcz4gbWV0cmljczsKKyAgICByZXR1cm4gbWV0cmljcy5n
ZXQoKTsKK30KKworUmVmPEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0
b3I+IEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I6Omlzb2xhdGVk
Q29weSgpCit7CisgICAgYXV0byBjb3B5ID0gYWRvcHRSZWYoKm5ldyBBZGRpdGlvbmFsTmV0d29y
a0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yKTsKKyAgICBjb3B5LT5wcmlvcml0eSA9IHByaW9y
aXR5OworICAgIGNvcHktPnJlbW90ZUFkZHJlc3MgPSByZW1vdGVBZGRyZXNzLmlzb2xhdGVkQ29w
eSgpOworICAgIGNvcHktPmNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbklkZW50aWZp
ZXIuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS0+dGxzUHJvdG9jb2wgPSB0bHNQcm90b2NvbC5p
c29sYXRlZENvcHkoKTsKKyAgICBjb3B5LT50bHNDaXBoZXIgPSB0bHNDaXBoZXIuaXNvbGF0ZWRD
b3B5KCk7CisgICAgY29weS0+cmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5pc29sYXRl
ZENvcHkoKTsKKyAgICBjb3B5LT5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50ID0gcmVxdWVzdEhlYWRl
ckJ5dGVzU2VudDsKKyAgICBjb3B5LT5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQgPSByZXNw
b25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQ7CisgICAgY29weS0+cmVxdWVzdEJvZHlCeXRlc1NlbnQg
PSByZXF1ZXN0Qm9keUJ5dGVzU2VudDsKKyAgICByZXR1cm4gY29weTsKK30KKworTmV0d29ya0xv
YWRNZXRyaWNzIE5ldHdvcmtMb2FkTWV0cmljczo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAg
ICBOZXR3b3JrTG9hZE1ldHJpY3MgY29weTsKKworICAgIGNvcHkucmVkaXJlY3RTdGFydCA9IHJl
ZGlyZWN0U3RhcnQuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5mZXRjaFN0YXJ0ID0gZmV0Y2hT
dGFydC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LmRvbWFpbkxvb2t1cFN0YXJ0ID0gZG9tYWlu
TG9va3VwU3RhcnQuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5kb21haW5Mb29rdXBFbmQgPSBk
b21haW5Mb29rdXBFbmQuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5jb25uZWN0U3RhcnQgPSBj
b25uZWN0U3RhcnQuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5zZWN1cmVDb25uZWN0aW9uU3Rh
cnQgPSBzZWN1cmVDb25uZWN0aW9uU3RhcnQuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5jb25u
ZWN0RW5kID0gY29ubmVjdEVuZC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LnJlcXVlc3RTdGFy
dCA9IHJlcXVlc3RTdGFydC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LnJlc3BvbnNlU3RhcnQg
PSByZXNwb25zZVN0YXJ0Lmlzb2xhdGVkQ29weSgpOworICAgIGNvcHkucmVzcG9uc2VFbmQgPSBy
ZXNwb25zZUVuZC5pc29sYXRlZENvcHkoKTsKKworICAgIGNvcHkucHJvdG9jb2wgPSBwcm90b2Nv
bC5pc29sYXRlZENvcHkoKTsKKworICAgIGNvcHkucmVkaXJlY3RDb3VudCA9IHJlZGlyZWN0Q291
bnQ7CisKKyAgICBjb3B5LmNvbXBsZXRlID0gY29tcGxldGU7CisgICAgY29weS5jZWxsdWxhciA9
IGNlbGx1bGFyOworICAgIGNvcHkuZXhwZW5zaXZlID0gZXhwZW5zaXZlOworICAgIGNvcHkuY29u
c3RyYWluZWQgPSBjb25zdHJhaW5lZDsKKyAgICBjb3B5Lm11bHRpcGF0aCA9IG11bHRpcGF0aDsK
KyAgICBjb3B5LmlzUmV1c2VkQ29ubmVjdGlvbiA9IGlzUmV1c2VkQ29ubmVjdGlvbjsKKyAgICBj
b3B5LmZhaWxzVEFPQ2hlY2sgPSBmYWlsc1RBT0NoZWNrOworICAgIGNvcHkuaGFzQ3Jvc3NPcmln
aW5SZWRpcmVjdCA9IGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3Q7CisKKyAgICBjb3B5LnByaXZhY3lT
dGFuY2UgPSBwcml2YWN5U3RhbmNlOworCisgICAgY29weS5yZXNwb25zZUJvZHlCeXRlc1JlY2Vp
dmVkID0gcmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZDsKKyAgICBjb3B5LnJlc3BvbnNlQm9keURl
Y29kZWRTaXplID0gcmVzcG9uc2VCb2R5RGVjb2RlZFNpemU7CisKKyAgICBpZiAoYWRkaXRpb25h
bE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcikKKyAgICAgICAgY29weS5hZGRpdGlv
bmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yID0gYWRkaXRpb25hbE5ldHdvcmtM
b2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvci0+aXNvbGF0ZWRDb3B5KCk7CisKKyAgICByZXR1cm4g
Y29weTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmgKaW5kZXggZjFlYTc2ZTFk
YjExM2RjNjQ2OTA4ODY3OWJhOTdjNzhhOTIxMzc3NS4uMjg0MjU3NTM2YWZhMGE4NzQwNGM1NTYw
YzU4ZDUyY2M1NDUxOWE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtMb2FkTWV0cmljcy5oCkBAIC0zNCw3ICszNCw2IEBACiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNVUkxDb25uZWN0aW9uOwotT0JKQ19DTEFTUyBOU1VS
TFJlc3BvbnNlOwogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25UYXNrTWV0cmljczsKICNlbmRpZgog
CkBAIC01OSw5ICs1OCwyNCBAQCBlbnVtIGNsYXNzIFByaXZhY3lTdGFuY2UgOiB1aW50OF90IHsK
IAogY29uc3RleHByIE1vbm90b25pY1RpbWUgcmV1c2VkVExTQ29ubmVjdGlvblNlbnRpbmVsIHsg
TW9ub3RvbmljVGltZTo6ZnJvbVJhd1NlY29uZHMoLTEpIH07CiAKLWNsYXNzIE5ldHdvcmtMb2Fk
TWV0cmljc1dpdGhvdXROb25UaW1pbmdEYXRhIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RChOZXR3b3JrTG9hZE1ldHJpY3NXaXRob3V0Tm9uVGltaW5nRGF0YSk7CitzdHJ1Y3QgQWRkaXRp
b25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcjsKKworY2xhc3MgTmV0d29ya0xv
YWRNZXRyaWNzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChOZXR3b3JrTG9hZE1ldHJp
Y3MpOwogcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtMb2FkTWV0cmljcygpOwor
ICAgIE5ldHdvcmtMb2FkTWV0cmljcyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IGRlZmF1
bHQ7CisgICAgTmV0d29ya0xvYWRNZXRyaWNzKE5ldHdvcmtMb2FkTWV0cmljcyYmKSA9IGRlZmF1
bHQ7CisgICAgTmV0d29ya0xvYWRNZXRyaWNzJiBvcGVyYXRvcj0oTmV0d29ya0xvYWRNZXRyaWNz
JiYpID0gZGVmYXVsdDsKKyAgICBOZXR3b3JrTG9hZE1ldHJpY3MmIG9wZXJhdG9yPShjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBlbXB0eU1ldHJpY3MoKTsKKworICAgIE5ldHdvcmtMb2FkTWV0cmljcyBp
c29sYXRlZENvcHkoKSBjb25zdDsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxOZXR3b3JrTG9hZE1ldHJpY3M+IGRlY29kZShEZWNvZGVyJik7CisK
ICAgICBib29sIGlzQ29tcGxldGUoKSBjb25zdCB7IHJldHVybiBjb21wbGV0ZTsgfQogICAgIHZv
aWQgbWFya0NvbXBsZXRlKCkgeyBjb21wbGV0ZSA9IHRydWU7IH0KIApAQCAtODIsMTEwICs5Niwz
MiBAQCBwdWJsaWM6CiAKICAgICB1aW50MTZfdCByZWRpcmVjdENvdW50IHsgMCB9OwogCi0gICAg
Ly8gRklYTUU6IFRoZXNlIGNvdWxkIGFsbCBiZSBtYWRlIGJpdCBmaWVsZHMuCi0gICAgYm9vbCBj
b21wbGV0ZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBjZWxsdWxhciB7IGZhbHNlIH07Ci0gICAgYm9v
bCBleHBlbnNpdmUgeyBmYWxzZSB9OwotICAgIGJvb2wgY29uc3RyYWluZWQgeyBmYWxzZSB9Owot
ICAgIGJvb2wgbXVsdGlwYXRoIHsgZmFsc2UgfTsKLSAgICBib29sIGlzUmV1c2VkQ29ubmVjdGlv
biB7IGZhbHNlIH07Ci0gICAgYm9vbCBmYWlsc1RBT0NoZWNrIHsgZmFsc2UgfTsKLSAgICBib29s
IGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QgeyBmYWxzZSB9OwotfTsKKyAgICBib29sIGNvbXBsZXRl
IDogMTsKKyAgICBib29sIGNlbGx1bGFyIDogMTsKKyAgICBib29sIGV4cGVuc2l2ZSA6IDE7Cisg
ICAgYm9vbCBjb25zdHJhaW5lZCA6IDE7CisgICAgYm9vbCBtdWx0aXBhdGggOiAxOworICAgIGJv
b2wgaXNSZXVzZWRDb25uZWN0aW9uIDogMTsKKyAgICBib29sIGZhaWxzVEFPQ2hlY2sgOiAxOwor
ICAgIGJvb2wgaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCA6IDE7CiAKLWNsYXNzIE5ldHdvcmtMb2Fk
TWV0cmljcyA6IHB1YmxpYyBOZXR3b3JrTG9hZE1ldHJpY3NXaXRob3V0Tm9uVGltaW5nRGF0YSB7
Ci1wdWJsaWM6Ci0gICAgTmV0d29ya0xvYWRNZXRyaWNzKCkKLSAgICAgICAgOiBOZXR3b3JrTG9h
ZE1ldHJpY3NXaXRob3V0Tm9uVGltaW5nRGF0YSgpCi0gICAgewotICAgIH0KKyAgICBQcml2YWN5
U3RhbmNlIHByaXZhY3lTdGFuY2UgeyBQcml2YWN5U3RhbmNlOjpVbmtub3duIH07CiAKLSAgICBO
ZXR3b3JrTG9hZE1ldHJpY3MgaXNvbGF0ZWRDb3B5KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5l
dHdvcmtMb2FkTWV0cmljcyBjb3B5OwotCi0gICAgICAgIGNvcHkucmVkaXJlY3RTdGFydCA9IHJl
ZGlyZWN0U3RhcnQ7Ci0gICAgICAgIGNvcHkuZmV0Y2hTdGFydCA9IGZldGNoU3RhcnQ7Ci0KLSAg
ICAgICAgY29weS5kb21haW5Mb29rdXBTdGFydCA9IGRvbWFpbkxvb2t1cFN0YXJ0OwotICAgICAg
ICBjb3B5LmRvbWFpbkxvb2t1cEVuZCA9IGRvbWFpbkxvb2t1cEVuZDsKLSAgICAgICAgY29weS5j
b25uZWN0U3RhcnQgPSBjb25uZWN0U3RhcnQ7Ci0gICAgICAgIGNvcHkuc2VjdXJlQ29ubmVjdGlv
blN0YXJ0ID0gc2VjdXJlQ29ubmVjdGlvblN0YXJ0OwotICAgICAgICBjb3B5LmNvbm5lY3RFbmQg
PSBjb25uZWN0RW5kOwotICAgICAgICBjb3B5LnJlcXVlc3RTdGFydCA9IHJlcXVlc3RTdGFydDsK
LSAgICAgICAgY29weS5yZXNwb25zZVN0YXJ0ID0gcmVzcG9uc2VTdGFydDsKLSAgICAgICAgY29w
eS5yZXNwb25zZUVuZCA9IHJlc3BvbnNlRW5kOwotICAgICAgICBjb3B5LmNvbXBsZXRlID0gY29t
cGxldGU7Ci0gICAgICAgIGNvcHkucHJvdG9jb2wgPSBwcm90b2NvbC5pc29sYXRlZENvcHkoKTsK
LSAgICAgICAgY29weS5yZWRpcmVjdENvdW50ID0gcmVkaXJlY3RDb3VudDsKLSAgICAgICAgY29w
eS5jZWxsdWxhciA9IGNlbGx1bGFyOwotICAgICAgICBjb3B5LmV4cGVuc2l2ZSA9IGV4cGVuc2l2
ZTsKLSAgICAgICAgY29weS5jb25zdHJhaW5lZCA9IGNvbnN0cmFpbmVkOwotICAgICAgICBjb3B5
Lm11bHRpcGF0aCA9IG11bHRpcGF0aDsKLSAgICAgICAgY29weS5pc1JldXNlZENvbm5lY3Rpb24g
PSBpc1JldXNlZENvbm5lY3Rpb247Ci0gICAgICAgIGNvcHkuZmFpbHNUQU9DaGVjayA9IGZhaWxz
VEFPQ2hlY2s7Ci0gICAgICAgIGNvcHkuaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCA9IGhhc0Nyb3Nz
T3JpZ2luUmVkaXJlY3Q7Ci0KLSAgICAgICAgY29weS5yZW1vdGVBZGRyZXNzID0gcmVtb3RlQWRk
cmVzcy5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgY29weS5jb25uZWN0aW9uSWRlbnRpZmllciA9
IGNvbm5lY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpOwotICAgICAgICBjb3B5LnRsc1By
b3RvY29sID0gdGxzUHJvdG9jb2wuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgICAgIGNvcHkudGxzQ2lw
aGVyID0gdGxzQ2lwaGVyLmlzb2xhdGVkQ29weSgpOwotICAgICAgICBjb3B5LnByaW9yaXR5ID0g
cHJpb3JpdHk7Ci0gICAgICAgIGNvcHkucHJpdmFjeVN0YW5jZSA9IHByaXZhY3lTdGFuY2U7Ci0g
ICAgICAgIGNvcHkucmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5pc29sYXRlZENvcHko
KTsKLQotICAgICAgICBjb3B5LnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQgPSByZXF1ZXN0SGVhZGVy
Qnl0ZXNTZW50OwotICAgICAgICBjb3B5LnJlcXVlc3RCb2R5Qnl0ZXNTZW50ID0gcmVxdWVzdEJv
ZHlCeXRlc1NlbnQ7Ci0gICAgICAgIGNvcHkucmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkID0g
cmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkOwotICAgICAgICBjb3B5LnJlc3BvbnNlQm9keUJ5
dGVzUmVjZWl2ZWQgPSByZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkOwotICAgICAgICBjb3B5LnJl
c3BvbnNlQm9keURlY29kZWRTaXplID0gcmVzcG9uc2VCb2R5RGVjb2RlZFNpemU7Ci0KLSAgICAg
ICAgcmV0dXJuIGNvcHk7Ci0gICAgfQorICAgIHVpbnQ2NF90IHJlc3BvbnNlQm9keUJ5dGVzUmVj
ZWl2ZWQgeyBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkgfTsKKyAgICB1aW50
NjRfdCByZXNwb25zZUJvZHlEZWNvZGVkU2l6ZSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0
X3Q+OjptYXgoKSB9OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcmVkaXJlY3RTdGFydCA9
PSBvdGhlci5yZWRpcmVjdFN0YXJ0Ci0gICAgICAgICAgICAmJiBmZXRjaFN0YXJ0ID09IG90aGVy
LmZldGNoU3RhcnQKLSAgICAgICAgICAgICYmIGRvbWFpbkxvb2t1cFN0YXJ0ID09IG90aGVyLmRv
bWFpbkxvb2t1cFN0YXJ0Ci0gICAgICAgICAgICAmJiBkb21haW5Mb29rdXBFbmQgPT0gb3RoZXIu
ZG9tYWluTG9va3VwRW5kCi0gICAgICAgICAgICAmJiBjb25uZWN0U3RhcnQgPT0gb3RoZXIuY29u
bmVjdFN0YXJ0Ci0gICAgICAgICAgICAmJiBzZWN1cmVDb25uZWN0aW9uU3RhcnQgPT0gb3RoZXIu
c2VjdXJlQ29ubmVjdGlvblN0YXJ0Ci0gICAgICAgICAgICAmJiBjb25uZWN0RW5kID09IG90aGVy
LmNvbm5lY3RFbmQKLSAgICAgICAgICAgICYmIHJlcXVlc3RTdGFydCA9PSBvdGhlci5yZXF1ZXN0
U3RhcnQKLSAgICAgICAgICAgICYmIHJlc3BvbnNlU3RhcnQgPT0gb3RoZXIucmVzcG9uc2VTdGFy
dAotICAgICAgICAgICAgJiYgcmVzcG9uc2VFbmQgPT0gb3RoZXIucmVzcG9uc2VFbmQKLSAgICAg
ICAgICAgICYmIGNvbXBsZXRlID09IG90aGVyLmNvbXBsZXRlCi0gICAgICAgICAgICAmJiBjZWxs
dWxhciA9PSBvdGhlci5jZWxsdWxhcgotICAgICAgICAgICAgJiYgZXhwZW5zaXZlID09IG90aGVy
LmV4cGVuc2l2ZQotICAgICAgICAgICAgJiYgY29uc3RyYWluZWQgPT0gb3RoZXIuY29uc3RyYWlu
ZWQKLSAgICAgICAgICAgICYmIG11bHRpcGF0aCA9PSBvdGhlci5tdWx0aXBhdGgKLSAgICAgICAg
ICAgICYmIGlzUmV1c2VkQ29ubmVjdGlvbiA9PSBvdGhlci5pc1JldXNlZENvbm5lY3Rpb24KLSAg
ICAgICAgICAgICYmIGZhaWxzVEFPQ2hlY2sgPT0gb3RoZXIuZmFpbHNUQU9DaGVjawotICAgICAg
ICAgICAgJiYgaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCA9PSBvdGhlci5oYXNDcm9zc09yaWdpblJl
ZGlyZWN0Ci0gICAgICAgICAgICAmJiBwcm90b2NvbCA9PSBvdGhlci5wcm90b2NvbAotICAgICAg
ICAgICAgJiYgcmVkaXJlY3RDb3VudCA9PSBvdGhlci5yZWRpcmVjdENvdW50Ci0gICAgICAgICAg
ICAmJiByZW1vdGVBZGRyZXNzID09IG90aGVyLnJlbW90ZUFkZHJlc3MKLSAgICAgICAgICAgICYm
IGNvbm5lY3Rpb25JZGVudGlmaWVyID09IG90aGVyLmNvbm5lY3Rpb25JZGVudGlmaWVyCi0gICAg
ICAgICAgICAmJiB0bHNQcm90b2NvbCA9PSBvdGhlci50bHNQcm90b2NvbAotICAgICAgICAgICAg
JiYgdGxzQ2lwaGVyID09IG90aGVyLnRsc0NpcGhlcgotICAgICAgICAgICAgJiYgcHJpb3JpdHkg
PT0gb3RoZXIucHJpb3JpdHkKLSAgICAgICAgICAgICYmIHByaXZhY3lTdGFuY2UgPT0gb3RoZXIu
cHJpdmFjeVN0YW5jZQotICAgICAgICAgICAgJiYgcmVxdWVzdEhlYWRlcnMgPT0gb3RoZXIucmVx
dWVzdEhlYWRlcnMKLSAgICAgICAgICAgICYmIHJlcXVlc3RIZWFkZXJCeXRlc1NlbnQgPT0gb3Ro
ZXIucmVxdWVzdEhlYWRlckJ5dGVzU2VudAotICAgICAgICAgICAgJiYgcmVxdWVzdEJvZHlCeXRl
c1NlbnQgPT0gb3RoZXIucmVxdWVzdEJvZHlCeXRlc1NlbnQKLSAgICAgICAgICAgICYmIHJlc3Bv
bnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCA9PSBvdGhlci5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2
ZWQKLSAgICAgICAgICAgICYmIHJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQgPT0gb3RoZXIucmVz
cG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZAotICAgICAgICAgICAgJiYgcmVzcG9uc2VCb2R5RGVjb2Rl
ZFNpemUgPT0gb3RoZXIucmVzcG9uc2VCb2R5RGVjb2RlZFNpemU7Ci0gICAgfQorICAgIFJlZlB0
cjxBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yPiBhZGRpdGlvbmFs
TmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yOworfTsKIAotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KK3N0cnVjdCBBZGRpdGlvbmFsTmV0
d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8QWRkaXRp
b25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcj4geworCisgICAgUmVmPEFkZGl0
aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I+IGlzb2xhdGVkQ29weSgpIGNv
bnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8QWRkaXRpb25hbE5ldHdvcmtMb2Fk
TWV0cmljc0ZvcldlYkluc3BlY3Rvcj4gZGVjb2RlKERlY29kZXImKTsKKyAgICBSZWY8QWRkaXRp
b25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcj4gaXNvbGF0ZWRDb3B5KCk7CisK
KyAgICBOZXR3b3JrTG9hZFByaW9yaXR5IHByaW9yaXR5IHsgTmV0d29ya0xvYWRQcmlvcml0eTo6
VW5rbm93biB9OwogCiAgICAgU3RyaW5nIHJlbW90ZUFkZHJlc3M7CiAgICAgU3RyaW5nIGNvbm5l
Y3Rpb25JZGVudGlmaWVyOwpAQCAtMTkzLDE2ICsxMjksMTEgQEAgcHVibGljOgogICAgIFN0cmlu
ZyB0bHNQcm90b2NvbDsKICAgICBTdHJpbmcgdGxzQ2lwaGVyOwogCi0gICAgTmV0d29ya0xvYWRQ
cmlvcml0eSBwcmlvcml0eSB7IE5ldHdvcmtMb2FkUHJpb3JpdHk6OlVua25vd24gfTsKLSAgICBQ
cml2YWN5U3RhbmNlIHByaXZhY3lTdGFuY2UgeyBQcml2YWN5U3RhbmNlOjpVbmtub3duIH07Ci0K
ICAgICBIVFRQSGVhZGVyTWFwIHJlcXVlc3RIZWFkZXJzOwogCiAgICAgdWludDY0X3QgcmVxdWVz
dEhlYWRlckJ5dGVzU2VudCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSB9
OwogICAgIHVpbnQ2NF90IHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCB7IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dWludDY0X3Q+OjptYXgoKSB9OwogICAgIHVpbnQ2NF90IHJlcXVlc3RCb2R5Qnl0
ZXNTZW50IHsgc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIH07Ci0gICAgdWlu
dDY0X3QgcmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDY0X3Q+OjptYXgoKSB9OwotICAgIHVpbnQ2NF90IHJlc3BvbnNlQm9keURlY29kZWRTaXplIHsg
c3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIH07CiB9OwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCkBAIC0yMjUsNiArMTU2LDExIEBAIHZvaWQgTmV0d29ya0xvYWRNZXRyaWNzOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHJlcXVlc3RTdGFy
dDsKICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlU3RhcnQ7CiAgICAgZW5jb2RlciA8PCByZXNwb25z
ZUVuZDsKKworICAgIGVuY29kZXIgPDwgcHJvdG9jb2w7CisKKyAgICBlbmNvZGVyIDw8IHJlZGly
ZWN0Q291bnQ7CisKICAgICBlbmNvZGVyIDw8IGNvbXBsZXRlOwogICAgIGVuY29kZXIgPDwgY2Vs
bHVsYXI7CiAgICAgZW5jb2RlciA8PCBleHBlbnNpdmU7CkBAIC0yMzMsMjggKzE2OSwyNiBAQCB2
b2lkIE5ldHdvcmtMb2FkTWV0cmljczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgZW5jb2RlciA8PCBpc1JldXNlZENvbm5lY3Rpb247CiAgICAgZW5jb2RlciA8PCBmYWlsc1RB
T0NoZWNrOwogICAgIGVuY29kZXIgPDwgaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdDsKLSAgICBlbmNv
ZGVyIDw8IHByb3RvY29sOwotICAgIGVuY29kZXIgPDwgcmVkaXJlY3RDb3VudDsKLSAgICBlbmNv
ZGVyIDw8IHJlbW90ZUFkZHJlc3M7Ci0gICAgZW5jb2RlciA8PCBjb25uZWN0aW9uSWRlbnRpZmll
cjsKLSAgICBlbmNvZGVyIDw8IHRsc1Byb3RvY29sOwotICAgIGVuY29kZXIgPDwgdGxzQ2lwaGVy
OwotICAgIGVuY29kZXIgPDwgcHJpb3JpdHk7CisKICAgICBlbmNvZGVyIDw8IHByaXZhY3lTdGFu
Y2U7Ci0gICAgZW5jb2RlciA8PCByZXF1ZXN0SGVhZGVyczsKLSAgICBlbmNvZGVyIDw8IHJlcXVl
c3RIZWFkZXJCeXRlc1NlbnQ7Ci0gICAgZW5jb2RlciA8PCByZXF1ZXN0Qm9keUJ5dGVzU2VudDsK
LSAgICBlbmNvZGVyIDw8IHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZDsKKwogICAgIGVuY29k
ZXIgPDwgcmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZDsKICAgICBlbmNvZGVyIDw8IHJlc3BvbnNl
Qm9keURlY29kZWRTaXplOworICAgIAorICAgIGlmIChhZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRy
aWNzRm9yV2ViSW5zcGVjdG9yKSB7CisgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKKyAgICAgICAg
ZW5jb2RlciA8PCAqYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcjsK
KyAgICB9IGVsc2UKKyAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KLWJvb2wgTmV0d29ya0xvYWRNZXRyaWNzOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQorc3RkOjpvcHRpb25hbDxOZXR3b3Jr
TG9hZE1ldHJpY3M+IE5ldHdvcmtMb2FkTWV0cmljczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7CiAgICAgc3RhdGljX2Fzc2VydChEZWNvZGVyOjppc0lQQ0RlY29kZXIsICJOZXR3b3JrTG9h
ZE1ldHJpY3Mgc2hvdWxkIG5vdCBiZSBzdG9yZWQgYnkgdGhlIFdURjo6UGVyc2lzdGVuY2U6OkVu
Y29kZXIiKTsKIAotICAgIHJldHVybiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnJlZGlyZWN0U3Rh
cnQpCisgICAgTmV0d29ya0xvYWRNZXRyaWNzIG1ldHJpY3M7CisgICAgaWYgKCEoZGVjb2Rlci5k
ZWNvZGUobWV0cmljcy5yZWRpcmVjdFN0YXJ0KQogICAgICAgICAmJiBkZWNvZGVyLmRlY29kZSht
ZXRyaWNzLmZldGNoU3RhcnQpCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuZG9t
YWluTG9va3VwU3RhcnQpCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuZG9tYWlu
TG9va3VwRW5kKQpAQCAtMjY0LDI4ICsxOTgsMTUxIEBAIGJvb2wgTmV0d29ya0xvYWRNZXRyaWNz
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQog
ICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnJlcXVlc3RTdGFydCkKICAgICAgICAg
JiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZXNwb25zZVN0YXJ0KQogICAgICAgICAmJiBkZWNv
ZGVyLmRlY29kZShtZXRyaWNzLnJlc3BvbnNlRW5kKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29k
ZShtZXRyaWNzLmNvbXBsZXRlKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmNl
bGx1bGFyKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmV4cGVuc2l2ZSkKLSAg
ICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5jb25zdHJhaW5lZCkKLSAgICAgICAgJiYg
ZGVjb2Rlci5kZWNvZGUobWV0cmljcy5tdWx0aXBhdGgpCi0gICAgICAgICYmIGRlY29kZXIuZGVj
b2RlKG1ldHJpY3MuaXNSZXVzZWRDb25uZWN0aW9uKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29k
ZShtZXRyaWNzLmZhaWxzVEFPQ2hlY2spCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJp
Y3MuaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCkKICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0
cmljcy5wcm90b2NvbCkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZWRpcmVj
dENvdW50KQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnJlbW90ZUFkZHJlc3Mp
Ci0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuY29ubmVjdGlvbklkZW50aWZpZXIp
Ci0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MudGxzUHJvdG9jb2wpCi0gICAgICAg
ICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MudGxzQ2lwaGVyKQotICAgICAgICAmJiBkZWNvZGVy
LmRlY29kZShtZXRyaWNzLnByaW9yaXR5KQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRy
aWNzLnByaXZhY3lTdGFuY2UpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVx
dWVzdEhlYWRlcnMpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVxdWVzdEhl
YWRlckJ5dGVzU2VudCkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZXF1ZXN0
Qm9keUJ5dGVzU2VudCkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZXNwb25z
ZUhlYWRlckJ5dGVzUmVjZWl2ZWQpCisgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3Mu
cmVkaXJlY3RDb3VudCkpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY29tcGxldGU7CisgICAgZGVjb2RlciA+PiBjb21wbGV0ZTsK
KyAgICBpZiAoIWNvbXBsZXRlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIG1l
dHJpY3MuY29tcGxldGUgPSBXVEZNb3ZlKCpjb21wbGV0ZSk7CisKKyAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGNlbGx1bGFyOworICAgIGRlY29kZXIgPj4gY2VsbHVsYXI7CisgICAgaWYgKCFjZWxs
dWxhcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBtZXRyaWNzLmNlbGx1bGFy
ID0gV1RGTW92ZSgqY2VsbHVsYXIpOworCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBleHBlbnNp
dmU7CisgICAgZGVjb2RlciA+PiBleHBlbnNpdmU7CisgICAgaWYgKCFleHBlbnNpdmUpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgbWV0cmljcy5leHBlbnNpdmUgPSBXVEZNb3Zl
KCpleHBlbnNpdmUpOworCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBjb25zdHJhaW5lZDsKKyAg
ICBkZWNvZGVyID4+IGNvbnN0cmFpbmVkOworICAgIGlmICghY29uc3RyYWluZWQpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgbWV0cmljcy5jb25zdHJhaW5lZCA9IFdURk1vdmUo
KmNvbnN0cmFpbmVkKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbXVsdGlwYXRoOworICAg
IGRlY29kZXIgPj4gbXVsdGlwYXRoOworICAgIGlmICghbXVsdGlwYXRoKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIG1ldHJpY3MubXVsdGlwYXRoID0gV1RGTW92ZSgqbXVsdGlw
YXRoKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNSZXVzZWRDb25uZWN0aW9uOworICAg
IGRlY29kZXIgPj4gaXNSZXVzZWRDb25uZWN0aW9uOworICAgIGlmICghaXNSZXVzZWRDb25uZWN0
aW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIG1ldHJpY3MuaXNSZXVzZWRD
b25uZWN0aW9uID0gV1RGTW92ZSgqaXNSZXVzZWRDb25uZWN0aW9uKTsKKworICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gZmFpbHNUQU9DaGVjazsKKyAgICBkZWNvZGVyID4+IGZhaWxzVEFPQ2hlY2s7
CisgICAgaWYgKCFmYWlsc1RBT0NoZWNrKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIG1ldHJpY3MuZmFpbHNUQU9DaGVjayA9IFdURk1vdmUoKmZhaWxzVEFPQ2hlY2spOworCisg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNDcm9zc09yaWdpblJlZGlyZWN0OworICAgIGRlY29k
ZXIgPj4gaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdDsKKyAgICBpZiAoIWhhc0Nyb3NzT3JpZ2luUmVk
aXJlY3QpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgbWV0cmljcy5oYXNDcm9z
c09yaWdpblJlZGlyZWN0ID0gV1RGTW92ZSgqaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCk7CisKKyAg
ICBpZiAoIShkZWNvZGVyLmRlY29kZShtZXRyaWNzLnByaXZhY3lTdGFuY2UpCiAgICAgICAgICYm
IGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZCkKLSAgICAg
ICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZXNwb25zZUJvZHlEZWNvZGVkU2l6ZSk7Cisg
ICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVzcG9uc2VCb2R5RGVjb2RlZFNpemUp
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gaGFzQWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcjsKKyAgICBk
ZWNvZGVyID4+IGhhc0FkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I7
CisgICAgaWYgKCFoYXNBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9y
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICgqaGFzQWRkaXRpb25hbE5l
dHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcikgeworICAgICAgICBtZXRyaWNzLmFkZGl0
aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IgPSBBZGRpdGlvbmFsTmV0d29y
a0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yOjpkZWNvZGUoZGVjb2Rlcik7CisgICAgICAgIGlm
ICghbWV0cmljcy5hZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisgICAgcmV0dXJuIFdURk1v
dmUobWV0cmljcyk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEFkZGl0aW9u
YWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgcHJpb3JpdHk7CisgICAgZW5jb2RlciA8PCBy
ZW1vdGVBZGRyZXNzOworICAgIGVuY29kZXIgPDwgY29ubmVjdGlvbklkZW50aWZpZXI7CisKKyAg
ICBlbmNvZGVyIDw8IHRsc1Byb3RvY29sOworICAgIGVuY29kZXIgPDwgdGxzQ2lwaGVyOworCisg
ICAgZW5jb2RlciA8PCByZXF1ZXN0SGVhZGVyczsKKworICAgIGVuY29kZXIgPDwgcmVxdWVzdEhl
YWRlckJ5dGVzU2VudDsKKyAgICBlbmNvZGVyIDw8IHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZl
ZDsKKyAgICBlbmNvZGVyIDw8IHJlcXVlc3RCb2R5Qnl0ZXNTZW50OworfQorCit0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgorUmVmUHRyPEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJ
bnNwZWN0b3I+IEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya0xvYWRQ
cmlvcml0eT4gcHJpb3JpdHk7CisgICAgZGVjb2RlciA+PiBwcmlvcml0eTsKKyAgICBpZiAoIXBy
aW9yaXR5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gcmVtb3RlQWRkcmVzczsKKyAgICBkZWNvZGVyID4+IHJlbW90ZUFkZHJlc3M7Cisg
ICAgaWYgKCFyZW1vdGVBZGRyZXNzKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+
IGNvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRsc1By
b3RvY29sOworICAgIGRlY29kZXIgPj4gdGxzUHJvdG9jb2w7CisgICAgaWYgKCF0bHNQcm90b2Nv
bCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
dGxzQ2lwaGVyOworICAgIGRlY29kZXIgPj4gdGxzQ2lwaGVyOworICAgIGlmICghdGxzQ2lwaGVy
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0ZDo6b3B0aW9uYWw8SFRUUEhlYWRl
ck1hcD4gcmVxdWVzdEhlYWRlcnM7CisgICAgZGVjb2RlciA+PiByZXF1ZXN0SGVhZGVyczsKKyAg
ICBpZiAoIXJlcXVlc3RIZWFkZXJzKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJlcXVlc3RIZWFkZXJCeXRlc1NlbnQ7CisgICAgZGVjb2Rl
ciA+PiByZXF1ZXN0SGVhZGVyQnl0ZXNTZW50OworICAgIGlmICghcmVxdWVzdEhlYWRlckJ5dGVz
U2VudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiByZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQ7CisgICAgZGVjb2RlciA+PiByZXNwb25z
ZUhlYWRlckJ5dGVzUmVjZWl2ZWQ7CisgICAgaWYgKCFyZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2
ZWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gcmVxdWVzdEJvZHlCeXRlc1NlbnQ7CisgICAgZGVjb2RlciA+PiByZXF1ZXN0Qm9keUJ5dGVz
U2VudDsKKyAgICBpZiAoIXJlcXVlc3RCb2R5Qnl0ZXNTZW50KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGF1dG8gZGVjb2RlZCA9IGFkb3B0UmVmKCpuZXcgQWRkaXRpb25hbE5ldHdv
cmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcik7CisgICAgZGVjb2RlZC0+cHJpb3JpdHkgPSBX
VEZNb3ZlKCpwcmlvcml0eSk7CisgICAgZGVjb2RlZC0+cmVtb3RlQWRkcmVzcyA9IFdURk1vdmUo
KnJlbW90ZUFkZHJlc3MpOworICAgIGRlY29kZWQtPmNvbm5lY3Rpb25JZGVudGlmaWVyID0gV1RG
TW92ZSgqY29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIGRlY29kZWQtPnRsc1Byb3RvY29sID0g
V1RGTW92ZSgqdGxzUHJvdG9jb2wpOworICAgIGRlY29kZWQtPnRsc0NpcGhlciA9IFdURk1vdmUo
KnRsc0NpcGhlcik7CisgICAgZGVjb2RlZC0+cmVxdWVzdEhlYWRlcnMgPSBXVEZNb3ZlKCpyZXF1
ZXN0SGVhZGVycyk7CisgICAgZGVjb2RlZC0+cmVxdWVzdEhlYWRlckJ5dGVzU2VudCA9IFdURk1v
dmUoKnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQpOworICAgIGRlY29kZWQtPnJlc3BvbnNlSGVhZGVy
Qnl0ZXNSZWNlaXZlZCA9IFdURk1vdmUoKnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCk7Cisg
ICAgZGVjb2RlZC0+cmVxdWVzdEJvZHlCeXRlc1NlbnQgPSBXVEZNb3ZlKCpyZXF1ZXN0Qm9keUJ5
dGVzU2VudCk7CisgICAgcmV0dXJuIFdURk1vdmUoZGVjb2RlZCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKQEAgLTMwMyw0ICszNjAsMTQgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJDb3JlOjpQcml2YWN5U3RhbmNlPiB7CiAgICAgPjsKIH07CiAKK3RlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eT4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJp
b3JpdHksCisgICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHk6OkxvdywKKyAgICAg
ICAgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eTo6TWVkaXVtLAorICAgICAgICBXZWJDb3Jl
OjpOZXR3b3JrTG9hZFByaW9yaXR5OjpIaWdoLAorICAgICAgICBXZWJDb3JlOjpOZXR3b3JrTG9h
ZFByaW9yaXR5OjpVbmtub3duCisgICAgPjsKK307CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKaW5kZXgg
NjEzNjAwNTQyMDkwYTJiOTc3MzFhZmZmM2JmZmY5OTU0NTY0OTRkMy4uOTUwZTgyNjdlMmE1ZTg2
YmE3OWQ2NzllN2Q3MzYxMTAxYzBmYmFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTgwMiw3ICs4
MDIsNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXp5SW5pdChJbml0TGV2ZWwgaW5p
dExldmVsKSBjb25zdAogICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VSZXNwb25zZSo+KHN0YXRpY19j
YXN0PGNvbnN0IFJlc291cmNlUmVzcG9uc2UqPih0aGlzKSktPnBsYXRmb3JtTGF6eUluaXQoaW5p
dExldmVsKTsKIH0KIAotYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKQorYm9vbCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29u
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpCiB7
CiAgICAgaWYgKGEuaXNOdWxsKCkgIT0gYi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OyAgCkBAIC04MjIsMTYgKzgyMiw2IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbXBh
cmUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoYS5odHRwSGVhZGVyRmllbGRzKCkgIT0gYi5odHRwSGVh
ZGVyRmllbGRzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5tX25ldHdvcmtM
b2FkTWV0cmljcy5nZXQoKSAhPSBiLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpKSB7Ci0gICAg
ICAgIGlmICghYS5tX25ldHdvcmtMb2FkTWV0cmljcykgewotICAgICAgICAgICAgaWYgKE5ldHdv
cmtMb2FkTWV0cmljcygpICE9ICpiLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlmICghYi5tX25ldHdvcmtM
b2FkTWV0cmljcykgewotICAgICAgICAgICAgaWYgKE5ldHdvcmtMb2FkTWV0cmljcygpICE9ICph
Lm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfSBlbHNlIGlmICgqYS5tX25ldHdvcmtMb2FkTWV0cmljcy5nZXQoKSAhPSAq
Yi5tX25ldHdvcmtMb2FkTWV0cmljcy5nZXQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9CiAgICAgcmV0dXJuIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShhLCBi
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5oCmluZGV4IDE3NmI3MzdkYTUzYmVjMTA2M2EyOTgxNDVmN2MxMzli
MWU2MzE0YWQuLjI2MmU1MzE4MGQ2ZGQ3YzRkMTMzZGRjMWRhZjU2NTJiZDZmMzFjNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmgKQEAgLTIwOSw3ICsyMDksNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVzb3VyY2VSZXNwb25zZSBzeW50aGV0aWNSZWRpcmVjdFJlc3BvbnNlKGNvbnN0
IFVSTCYgZnJvbVVSTCwgY29uc3QgVVJMJiB0b1VSTCk7CiAKLSAgICBzdGF0aWMgYm9vbCBjb21w
YXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Cisg
ICAgc3RhdGljIGJvb2wgZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZShEZWNvZGVyJiwgUmVzb3VyY2VSZXNwb25zZUJhc2UmKTsKQEAgLTI4NSw5ICsyODUsNiBA
QCBwcm90ZWN0ZWQ6CiAgICAgc2hvcnQgbV9odHRwU3RhdHVzQ29kZSB7IDAgfTsKIH07CiAKLWlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUo
YSwgYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
YSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gIShhID09IGIpOyB9Ci0KIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KaW5kZXggYmM0NGNiYjRj
YTE0NmYxNDA1ZTFhZGJmYmE3MzQ4OTAyZjhhODBkOC4uOTA5ZDkyZmRkMDZhYWIyYWM0ZTkzMGJj
MDM3YmU2MDBjNzU5NzFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTU3Nyw3ICs1NzcsNyBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGNoYWxsZW5nZQogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIHJlY2Vp
dmVkQ3JlZGVudGlhbCIsIHRoaXMpOwogCiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkp
OwotICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKQorICAgIGlm
ICghQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjplcXVhbEZvcldlYktpdExlZ2FjeUNoYWxs
ZW5nZUNvbXBhcmlzb24oY2hhbGxlbmdlLCBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCBlbXB0eSBjcmVkZW50aWFscy4g
Q3VycmVudGx5LCBhbiBlbXB0eSBjcmVkZW50aWFsIGNhbm5vdCBiZSBzdG9yZWQgaW4gV2ViQ29y
ZSBjcmVkZW50aWFsIHN0b3JhZ2UsIGFzIHRoYXQncyBlbXB0eSB2YWx1ZSBmb3IgaXRzIG1hcC4K
QEAgLTYwNyw3ICs2MDcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RU
b0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYQogICAgIExPRyhOZXR3
b3JrLCAiSGFuZGxlICVwIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlh
bCIsIHRoaXMpOwogCiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwotICAgIGlmIChj
aGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKQorICAgIGlmICghQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VCYXNlOjplcXVhbEZvcldlYktpdExlZ2FjeUNoYWxsZW5nZUNvbXBhcmlz
b24oY2hhbGxlbmdlLCBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm47
CiAKICAgICBbW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBzZW5kZXJdIGNvbnRpbnVlV2l0aG91
dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpkLT5tX2N1cnJlbnRNYWNDaGFs
bGVuZ2VdOwpAQCAtNjE5LDcgKzYxOSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVk
Q2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuCiB7CiAg
ICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgcmVjZWl2ZWRDYW5jZWxsYXRpb24iLCB0aGlzKTsK
IAotICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKQorICAgIGlm
ICghQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjplcXVhbEZvcldlYktpdExlZ2FjeUNoYWxs
ZW5nZUNvbXBhcmlzb24oY2hhbGxlbmdlLCBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoY2xpZW50KCkpCkBAIC02MzEsNyArNjMxLDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5n
KGNvbnN0IEF1dGhlbnRpY2F0aW8KICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCByZWNlaXZl
ZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmciLCB0aGlzKTsKIAogICAgIEFTU0VSVCgh
Y2hhbGxlbmdlLmlzTnVsbCgpKTsKLSAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdl
YkNoYWxsZW5nZSkKKyAgICBpZiAoIUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6ZXF1YWxG
b3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNoYWxsZW5nZSwgZC0+bV9jdXJyZW50
V2ViQ2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgW1tkLT5tX2N1cnJlbnRNYWND
aGFsbGVuZ2Ugc2VuZGVyXSBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6ZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlXTsKQEAgLTY0NCw3ICs2NDQsNyBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgYwogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIHJlY2Vp
dmVkQ2hhbGxlbmdlUmVqZWN0aW9uIiwgdGhpcyk7CiAKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5p
c051bGwoKSk7Ci0gICAgaWYgKGNoYWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2Up
CisgICAgaWYgKCFBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFsRm9yV2ViS2l0TGVn
YWN5Q2hhbGxlbmdlQ29tcGFyaXNvbihjaGFsbGVuZ2UsIGQtPm1fY3VycmVudFdlYkNoYWxsZW5n
ZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFtbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHNl
bmRlcl0gcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdlOmQtPm1f
Y3VycmVudE1hY0NoYWxsZW5nZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODJmMWU1MzAxNDRmYTBmZjJk
YWIxMWU2NDRjMDliN2Y2ODYxYTAwMC4uMjMwZTFmOGEwNzFjZTdlNWRiNDNkMTEwMDJkMDYwZDI0
OWYyZjg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTIyNyw5ICsxMjI3LDEzIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya0NhY2hlCiAKICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xv
YWRNZXRyaWNzOwogICAgIG5ldHdvcmtMb2FkTWV0cmljcy5tYXJrQ29tcGxldGUoKTsKLSAgICBu
ZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRlckJ5dGVzU2VudCA9IDA7Ci0gICAgbmV0d29y
a0xvYWRNZXRyaWNzLnJlcXVlc3RCb2R5Qnl0ZXNTZW50ID0gMDsKLSAgICBuZXR3b3JrTG9hZE1l
dHJpY3MucmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkID0gMDsKKyAgICBpZiAoc2hvdWxkQ2Fw
dHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkpIHsKKyAgICAgICAgYXV0byBhZGRpdGlvbmFs
TWV0cmljcyA9IGFkb3B0UmVmKCpuZXcgV2ViQ29yZTo6QWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0
cmljc0ZvcldlYkluc3BlY3Rvcik7CisgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0
SGVhZGVyQnl0ZXNTZW50ID0gMDsKKyAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlcXVlc3RC
b2R5Qnl0ZXNTZW50ID0gMDsKKyAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlc3BvbnNlSGVh
ZGVyQnl0ZXNSZWNlaXZlZCA9IDA7CisgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5hZGRpdGlv
bmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yID0gV1RGTW92ZShhZGRpdGlvbmFs
TWV0cmljcyk7CisgICAgfQogICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUJvZHlCeXRl
c1JlY2VpdmVkID0gMDsKICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5RGVjb2Rl
ZFNpemUgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMTM4YzRlOTI5MWQ1MzNlODdlYmY0
MmJjZDViMzZlZjA1ODZkMjI5OC4uNmUxYzY1YmQzMDIzNDlhZGIxODQ5MTZmYmE4YTEyZDg2ZGY4
ZTAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtODc4LDI4ICs4NzgsMjkgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKIAogICAgICAgICBpZiAobmV0d29ya0Rh
dGFUYXNrLT5zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkgewotICAgICAg
ICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnByaW9yaXR5ID0gdG9OZXR3b3JrTG9hZFByaW9yaXR5
KHRhc2sucHJpb3JpdHkpOworICAgICAgICAgICAgYXV0byBhZGRpdGlvbmFsTWV0cmljcyA9IGFk
b3B0UmVmKCpuZXcgV2ViQ29yZTo6QWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYklu
c3BlY3Rvcik7CisgICAgICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+cHJpb3JpdHkgPSB0b05l
dHdvcmtMb2FkUHJpb3JpdHkodGFzay5wcmlvcml0eSk7CiAKICNpZiBIQVZFKENGTkVUV09SS19N
RVRSSUNTX0FQSVNfVjQpCiAgICAgICAgICAgICBpZiAoYXV0byBwb3J0ID0gW20ucmVtb3RlUG9y
dCB1bnNpZ25lZEludFZhbHVlXSkKLSAgICAgICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3Mu
cmVtb3RlQWRkcmVzcyA9IG1ha2VTdHJpbmcoU3RyaW5nKG0ucmVtb3RlQWRkcmVzcyksICc6Jywg
cG9ydCk7CisgICAgICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlbW90ZUFkZHJlc3Mg
PSBtYWtlU3RyaW5nKFN0cmluZyhtLnJlbW90ZUFkZHJlc3MpLCAnOicsIHBvcnQpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZW1vdGVBZGRy
ZXNzID0gbS5yZW1vdGVBZGRyZXNzOworICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNz
LT5yZW1vdGVBZGRyZXNzID0gbS5yZW1vdGVBZGRyZXNzOwogI2Vsc2UKICAgICAgICAgICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgICAgICBuZXR3b3JrTG9h
ZE1ldHJpY3MucmVtb3RlQWRkcmVzcyA9IFN0cmluZyhtLl9yZW1vdGVBZGRyZXNzQW5kUG9ydCk7
CisgICAgICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVtb3RlQWRkcmVzcyA9IFN0cmluZyht
Ll9yZW1vdGVBZGRyZXNzQW5kUG9ydCk7CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICNlbmRpZgotICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLmNv
bm5lY3Rpb25JZGVudGlmaWVyID0gU3RyaW5nKFttLl9jb25uZWN0aW9uSWRlbnRpZmllciBVVUlE
U3RyaW5nXSk7CisgICAgICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+Y29ubmVjdGlvbklkZW50
aWZpZXIgPSBTdHJpbmcoW20uX2Nvbm5lY3Rpb25JZGVudGlmaWVyIFVVSURTdHJpbmddKTsKIAog
I2lmIEhBVkUoQ0ZORVRXT1JLX05FR09USUFURURfU1NMX1BST1RPQ09MX0NJUEhFUikKICNpZiBI
QVZFKENGTkVUV09SS19NRVRSSUNTX0FQSVNfVjQpCi0gICAgICAgICAgICBuZXR3b3JrTG9hZE1l
dHJpY3MudGxzUHJvdG9jb2wgPSBzdHJpbmdGb3JUTFNQcm90b2NvbFZlcnNpb24oKHRsc19wcm90
b2NvbF92ZXJzaW9uX3QpW20ubmVnb3RpYXRlZFRMU1Byb3RvY29sVmVyc2lvbiB1bnNpZ25lZFNo
b3J0VmFsdWVdKTsKLSAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy50bHNDaXBoZXIgPSBz
dHJpbmdGb3JUTFNDaXBoZXJTdWl0ZSgodGxzX2NpcGhlcnN1aXRlX3QpW20ubmVnb3RpYXRlZFRM
U0NpcGhlclN1aXRlIHVuc2lnbmVkU2hvcnRWYWx1ZV0pOworICAgICAgICAgICAgYWRkaXRpb25h
bE1ldHJpY3MtPnRsc1Byb3RvY29sID0gc3RyaW5nRm9yVExTUHJvdG9jb2xWZXJzaW9uKCh0bHNf
cHJvdG9jb2xfdmVyc2lvbl90KVttLm5lZ290aWF0ZWRUTFNQcm90b2NvbFZlcnNpb24gdW5zaWdu
ZWRTaG9ydFZhbHVlXSk7CisgICAgICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+dGxzQ2lwaGVy
ID0gc3RyaW5nRm9yVExTQ2lwaGVyU3VpdGUoKHRsc19jaXBoZXJzdWl0ZV90KVttLm5lZ290aWF0
ZWRUTFNDaXBoZXJTdWl0ZSB1bnNpZ25lZFNob3J0VmFsdWVdKTsKICNlbHNlCiAgICAgICAgICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAgICAgbmV0d29y
a0xvYWRNZXRyaWNzLnRsc1Byb3RvY29sID0gc3RyaW5nRm9yU1NMUHJvdG9jb2wobS5fbmVnb3Rp
YXRlZFRMU1Byb3RvY29sKTsKLSAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy50bHNDaXBo
ZXIgPSBzdHJpbmdGb3JTU0xDaXBoZXIobS5fbmVnb3RpYXRlZFRMU0NpcGhlcik7CisgICAgICAg
ICAgICBhZGRpdGlvbmFsTWV0cmljcy0+dGxzUHJvdG9jb2wgPSBzdHJpbmdGb3JTU0xQcm90b2Nv
bChtLl9uZWdvdGlhdGVkVExTUHJvdG9jb2wpOworICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJp
Y3MtPnRsc0NpcGhlciA9IHN0cmluZ0ZvclNTTENpcGhlcihtLl9uZWdvdGlhdGVkVExTQ2lwaGVy
KTsKICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2VuZGlm
CiAjZW5kaWYKQEAgLTkwOCw3ICs5MDksNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKICAgICAgICAgICAgIFttLnJlcXVlc3QuYWxsSFRUUEhlYWRlckZpZWxkcyBlbnVtZXJh
dGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAqbmFtZSwgTlNTdHJpbmcgKnZh
bHVlLCBCT09MICopIHsKICAgICAgICAgICAgICAgICByZXF1ZXN0SGVhZGVycy5zZXQoU3RyaW5n
KG5hbWUpLCBTdHJpbmcodmFsdWUpKTsKICAgICAgICAgICAgIH1dOwotICAgICAgICAgICAgbmV0
d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RIZWFkZXJzID0gV1RGTW92ZShyZXF1ZXN0SGVhZGVycyk7
CisgICAgICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEhlYWRlcnMgPSBXVEZNb3Zl
KHJlcXVlc3RIZWFkZXJzKTsKIAogICAgICAgICAgICAgdWludDY0X3QgcmVxdWVzdEhlYWRlckJ5
dGVzU2VudCA9IDA7CiAgICAgICAgICAgICB1aW50NjRfdCByZXNwb25zZUhlYWRlckJ5dGVzUmVj
ZWl2ZWQgPSAwOwpAQCAtOTI1LDkgKzkyNiwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICNlbmRpZgogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBuZXR3b3JrTG9h
ZE1ldHJpY3MucmVxdWVzdEhlYWRlckJ5dGVzU2VudCA9IHJlcXVlc3RIZWFkZXJCeXRlc1NlbnQ7
Ci0gICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEJvZHlCeXRlc1NlbnQgPSB0
YXNrLmNvdW50T2ZCeXRlc1NlbnQ7Ci0gICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVz
cG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkID0gcmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkOwor
ICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQgPSBy
ZXF1ZXN0SGVhZGVyQnl0ZXNTZW50OworICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJl
cXVlc3RCb2R5Qnl0ZXNTZW50ID0gdGFzay5jb3VudE9mQnl0ZXNTZW50OworICAgICAgICAgICAg
YWRkaXRpb25hbE1ldHJpY3MtPnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCA9IHJlc3BvbnNl
SGVhZGVyQnl0ZXNSZWNlaXZlZDsKKyAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5hZGRp
dGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yID0gV1RGTW92ZShhZGRpdGlv
bmFsTWV0cmljcyk7CiAgICAgICAgIH0KICNpZiBIQVZFKENGTkVUV09SS19NRVRSSUNTX0FQSVNf
VjQpCiAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVk
ID0gbS5jb3VudE9mUmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZTcwNGVjYjg4MTRjY2RkMDYxMGE3
YjIyODFjNzRjNzI5NWEwYzU3NS4uNTYyOGE3YzdjMGM5YWQ4Y2E2NWZjMGVhY2JhZTVmYjg1Nzhm
N2Y2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
QEAgLTkwMywxNiArOTAzLDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpJbnB1dE1vZGU+IHsKICAgICA+OwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5PiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eSwKLSAgICAgICAg
V2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eTo6TG93LAotICAgICAgICBXZWJDb3JlOjpOZXR3
b3JrTG9hZFByaW9yaXR5OjpNZWRpdW0sCi0gICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJp
b3JpdHk6OkhpZ2gsCi0gICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHk6OlVua25v
d24KLSAgICA+OwotfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpO
b3RpZmljYXRpb25EaXJlY3Rpb24+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAog
ICAgICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24sCg==
</data>
<flag name="commit-queue"
          id="458850"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435959</attachid>
            <date>2021-08-20 02:33:28 -0700</date>
            <delta_ts>2021-08-24 18:02:22 -0700</delta_ts>
            <desc>Patch including soup implementation</desc>
            <filename>wk2-additional-metrics.diff</filename>
            <type>text/plain</type>
            <size>56973</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjYjdiZTEzYjI5NGEuLjYzZmEzNDAzN2JhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY1IEBACisyMDIxLTA4LTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHNpemVvZihOZXR3b3JrTG9hZE1ldHJpY3Mp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5ODIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFu
Z2UgaW4gYmVoYXZpb3IuICBKdXN0IGdyZWF0bHkgcmVkdWNpbmcgdGhlIHNpemUgb2YgYSBjb21t
b24gc3RydWN0dXJlLgorCisgICAgICAgIFdlIHRha2UgYWxsIHRoZSBtZW1iZXJzIHRoYXQgYXJl
bid0IHVzZWQgd2l0aG91dCB0aGUgaW5zcGVjdG9yIGFuZCBtb3ZlIHRoZW0gdG8gYSBuZXcgc3Ry
dWN0LAorICAgICAgICBBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9y
LiAgV2UgYWxzbyByZW1vdmUgc29tZSBlcXVhbGl0eSBjb21wYXJpc29uIHRoYXQKKyAgICAgICAg
d2FzIHVubmVjZXNzYXJ5IGJlY2F1c2UgaXQgd2FzIG9ubHkgdXNlZCBmb3IgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgZXF1YWxpdHkgY29tcGFyaXNvbnMgaW4KKyAgICAgICAgUmVzb3VyY2VIYW5k
bGVNYWMuICBXZSBhbHNvIHVzZSBlbXB0eU1ldHJpY3MoKSB0byByZW1vdmUgYSBmZXcgdW5uZWNl
c3NhcnkgYW5kIGhhcmQgdG8gc2VlCisgICAgICAgIGNvcHkgY29uc3RydWN0b3IgY2FsbHMuCisK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWls
ZE9iamVjdEZvck1ldHJpY3MpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAqIGxvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUJhc2U6OmVxdWFsRm9yV2ViS2l0TGVnYWN5Q2hhbGxlbmdlQ29tcGFyaXNvbik6CisgICAgICAg
IChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmNvbXBhcmUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Om9wZXJhdG9yIT0pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
TmV0d29ya0xvYWRNZXRyaWNzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3M6Ok5ldHdvcmtMb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpBZGRpdGlv
bmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yOjppc29sYXRlZENvcHkpOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjppc29sYXRlZENvcHkgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmg6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpB
ZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYklu
c3BlY3Rvcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljc1dp
dGhvdXROb25UaW1pbmdEYXRhOjppc0NvbXBsZXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljc1dpdGhvdXROb25UaW1pbmdEYXRhOjptYXJrQ29t
cGxldGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjpO
ZXR3b3JrTG9hZE1ldHJpY3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzOjppc29sYXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzOjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljczo6b3BlcmF0b3IhPSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXF1YWxGb3JXZWJLaXRM
ZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2VCYXNlOjpjb21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRD
cmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENh
bmNlbGxhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRS
ZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbik6CisKIDIwMjEtMDgtMTggIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIGRvY3Vt
ZW50Lmhhc0ZvY3VzKCkgcmV0dXJucyB0cnVlIGZvciB1bmZvY3VzZWQgcGFnZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggMDNlMTJhN2E3ODcyLi4yMTNmNTAyNTZkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0y
MDg0LDYgKzIwODQsNyBAQCBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJWYWx1ZXMuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQ
YXJzZXJzLmNwcAogcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAorcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0
ZU5vdGlmaWVyLmNwcAogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
CiBwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRSYW5nZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjODNiMjVjY2Zi
MmIuLjI0Y2ExMDMwZjAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTY1Niw2ICs5NjU2LDcgQEAKIAkJNUM5RUYyRjIyMUYw
NjE3MTAwM0JEQzU2IC8qIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1Q0ExREVDMjFGNzFFNjg2MDBFNzFCRDMgLyogSFRUUEhlYWRlckZp
ZWxkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUVFBIZWFkZXJG
aWVsZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTFERUM0MUY3MUU2ODcw
MEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSFRUUEhlYWRlckZpZWxkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
QUM1RDA4MjZDRUYwMDEwMEJBRkQxNCAvKiBOZXR3b3JrTG9hZE1ldHJpY3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0xvYWRNZXRyaWNzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMzdGRkMxQzYyRDI3ODAwRjIwMTg4IC8qIFNj
cm9sbEFuaW1hdG9yTW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JvbGxBbmltYXRvck1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
Q0IzN0ZGRDFDNjJEMjc4MDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yTW9jay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOERBQTFBQUEzMDIyMDBFMUM4MDMgLyogTWVkaWFBY2Nl
c3NpYmlsaXR5U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjE2OTMsNiArMjE2OTQsNyBAQAogCQkJCTUxNEM3NjVFMENFOTIzQTEwMDdFRjND
RCAvKiBIVFRQUGFyc2Vycy5oICovLAogCQkJCTYyOEQyMTRCMTIxMzFFRDEwMDU1RENGQyAvKiBO
ZXR3b3JraW5nQ29udGV4dC5oICovLAogCQkJCTQxNkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAvKiBO
ZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggKi8sCisJCQkJNUNBQzVEMDgyNkNFRjAwMTAwQkFGRDE0
IC8qIE5ldHdvcmtMb2FkTWV0cmljcy5jcHAgKi8sCiAJCQkJOEE4MUJGODQxMURDRkQ5MDAwREEy
Qjk4IC8qIE5ldHdvcmtMb2FkTWV0cmljcy5oICovLAogCQkJCTFBN0ZBNjFBMEREQTNCQkUwMDI4
RjhBNSAvKiBOZXR3b3JrU3RhdGVOb3RpZmllci5jcHAgKi8sCiAJCQkJMUE3RkE2MTgwRERBM0Iz
QTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmggKi8sCkBAIC0zMzUyMiw3ICszMzUy
NCw2IEBACiAJCQkJN0FFNkM5M0MxQkUwQzYwMTAwRTE5RTAzIC8qIE1haW5UaHJlYWRTaGFyZWRU
aW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1MUM2MzIyMzk0MDMxQTAwOTkzMTkwIC8qIE1h
cmdpblR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTE4NjY0NTFGNzJFNUI0MDBBMENBQjYg
LyogTWFya2VkVGV4dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQ0MEZENTMyNUE0QUZERjAwRjdD
ODQ5IC8qIFN0eWxlZE1hcmtlZFRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REY4MDk5
RTY0OTIwMDU2RTU4MSAvKiBtYXJrdXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjhDMzE0MTI2
OEU0MzkwMDQxRTg5QiAvKiBNYXJrdXBBY2N1bXVsYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDBDNjBFM0YxM0Q3NkQ3RTAwOTJBMjc1IC8qIE1hcmt1cFRva2VuaXplcklubGluZXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzQ2OTQsNiArMzQ2OTUsNyBAQAogCQkJCUJDNzc5RTE3MUJCMjI3Q0Ew
MENBQThCRiAvKiBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QThDNEE3RkQwOUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDNUVCOEI5MEU4MjAxQkQwMEIyNTk2NSAvKiBTdHlsZURlcHJlY2F0ZWRGbGV4aWJs
ZUJveERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0NDBGRDUzMjVBNEFGREYwMEY3Qzg0OSAv
KiBTdHlsZWRNYXJrZWRUZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTlBRTA2NDE0MkQ2QjI0
MDA2NTYzQTEgLyogU3R5bGVGaWx0ZXJEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzE3NjEy
MzEzQzUxNjY5MDAyNkU0NTQgLyogU3R5bGVGbGV4aWJsZUJveERhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0RDU4RUI5MTdCNEVEODkwMENCRENBOCAvKiBTdHlsZUZvbnRTaXplRnVuY3Rpb25z
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA3OTQ4ODUyZGQ5YTYuLjYy
NDY1NTg4ODE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMjYzLDIxICsyNjMsMjIgQEAgUmVm
PFByb3RvY29sOjpOZXR3b3JrOjpNZXRyaWNzPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yTWV0cmljcyhjb24KIAogICAgIGlmICghbmV0d29ya0xvYWRNZXRyaWNzLnByb3Rv
Y29sLmlzTnVsbCgpKQogICAgICAgICBtZXRyaWNzLT5zZXRQcm90b2NvbChuZXR3b3JrTG9hZE1l
dHJpY3MucHJvdG9jb2wpOwotICAgIGlmIChuZXR3b3JrTG9hZE1ldHJpY3MucHJpb3JpdHkgIT0g
TmV0d29ya0xvYWRQcmlvcml0eTo6VW5rbm93bikKLSAgICAgICAgbWV0cmljcy0+c2V0UHJpb3Jp
dHkodG9Qcm90b2NvbChuZXR3b3JrTG9hZE1ldHJpY3MucHJpb3JpdHkpKTsKLSAgICBpZiAoIW5l
dHdvcmtMb2FkTWV0cmljcy5yZW1vdGVBZGRyZXNzLmlzTnVsbCgpKQotICAgICAgICBtZXRyaWNz
LT5zZXRSZW1vdGVBZGRyZXNzKG5ldHdvcmtMb2FkTWV0cmljcy5yZW1vdGVBZGRyZXNzKTsKLSAg
ICBpZiAoIW5ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0aW9uSWRlbnRpZmllci5pc051bGwoKSkK
LSAgICAgICAgbWV0cmljcy0+c2V0Q29ubmVjdGlvbklkZW50aWZpZXIobmV0d29ya0xvYWRNZXRy
aWNzLmNvbm5lY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIW5ldHdvcmtMb2FkTWV0cmljcy5y
ZXF1ZXN0SGVhZGVycy5pc0VtcHR5KCkpCi0gICAgICAgIG1ldHJpY3MtPnNldFJlcXVlc3RIZWFk
ZXJzKGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRl
cnMpKTsKLQotICAgIGlmIChuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRlckJ5dGVzU2Vu
dCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCi0gICAgICAgIG1ldHJp
Y3MtPnNldFJlcXVlc3RIZWFkZXJCeXRlc1NlbnQobmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RI
ZWFkZXJCeXRlc1NlbnQpOwotICAgIGlmIChuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEJvZHlC
eXRlc1NlbnQgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKQotICAgICAg
ICBtZXRyaWNzLT5zZXRSZXF1ZXN0Qm9keUJ5dGVzU2VudChuZXR3b3JrTG9hZE1ldHJpY3MucmVx
dWVzdEJvZHlCeXRlc1NlbnQpOwotICAgIGlmIChuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VI
ZWFkZXJCeXRlc1JlY2VpdmVkICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgo
KSkKLSAgICAgICAgbWV0cmljcy0+c2V0UmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkKG5ldHdv
cmtMb2FkTWV0cmljcy5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQpOworICAgIGlmIChhdXRv
KiBhZGRpdGlvbmFsTWV0cmljcyA9IG5ldHdvcmtMb2FkTWV0cmljcy5hZGRpdGlvbmFsTmV0d29y
a0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yLmdldCgpKSB7CisgICAgICAgIGlmIChhZGRpdGlv
bmFsTWV0cmljcy0+cHJpb3JpdHkgIT0gTmV0d29ya0xvYWRQcmlvcml0eTo6VW5rbm93bikKKyAg
ICAgICAgICAgIG1ldHJpY3MtPnNldFByaW9yaXR5KHRvUHJvdG9jb2woYWRkaXRpb25hbE1ldHJp
Y3MtPnByaW9yaXR5KSk7CisgICAgICAgIGlmICghYWRkaXRpb25hbE1ldHJpY3MtPnJlbW90ZUFk
ZHJlc3MuaXNOdWxsKCkpCisgICAgICAgICAgICBtZXRyaWNzLT5zZXRSZW1vdGVBZGRyZXNzKGFk
ZGl0aW9uYWxNZXRyaWNzLT5yZW1vdGVBZGRyZXNzKTsKKyAgICAgICAgaWYgKCFhZGRpdGlvbmFs
TWV0cmljcy0+Y29ubmVjdGlvbklkZW50aWZpZXIuaXNOdWxsKCkpCisgICAgICAgICAgICBtZXRy
aWNzLT5zZXRDb25uZWN0aW9uSWRlbnRpZmllcihhZGRpdGlvbmFsTWV0cmljcy0+Y29ubmVjdGlv
bklkZW50aWZpZXIpOworICAgICAgICBpZiAoIWFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0SGVh
ZGVycy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtZXRyaWNzLT5zZXRSZXF1ZXN0SGVhZGVycyhi
dWlsZE9iamVjdEZvckhlYWRlcnMoYWRkaXRpb25hbE1ldHJpY3MtPnJlcXVlc3RIZWFkZXJzKSk7
CisgICAgICAgIGlmIChhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEhlYWRlckJ5dGVzU2VudCAh
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCisgICAgICAgICAgICBtZXRy
aWNzLT5zZXRSZXF1ZXN0SGVhZGVyQnl0ZXNTZW50KGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0
SGVhZGVyQnl0ZXNTZW50KTsKKyAgICAgICAgaWYgKGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0
Qm9keUJ5dGVzU2VudCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCisg
ICAgICAgICAgICBtZXRyaWNzLT5zZXRSZXF1ZXN0Qm9keUJ5dGVzU2VudChhZGRpdGlvbmFsTWV0
cmljcy0+cmVxdWVzdEJvZHlCeXRlc1NlbnQpOworICAgICAgICBpZiAoYWRkaXRpb25hbE1ldHJp
Y3MtPnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQ2NF90Pjo6bWF4KCkpCisgICAgICAgICAgICBtZXRyaWNzLT5zZXRSZXNwb25zZUhlYWRlckJ5
dGVzUmVjZWl2ZWQoYWRkaXRpb25hbE1ldHJpY3MtPnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZl
ZCk7CisgICAgfQogICAgIGlmIChuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5Qnl0ZXNS
ZWNlaXZlZCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCiAgICAgICAg
IG1ldHJpY3MtPnNldFJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQobmV0d29ya0xvYWRNZXRyaWNz
LnJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQpOwogICAgIGlmIChuZXR3b3JrTG9hZE1ldHJpY3Mu
cmVzcG9uc2VCb2R5RGVjb2RlZFNpemUgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46
Om1heCgpKQpAQCAtMjg2LDExICsyODcsMTIgQEAgUmVmPFByb3RvY29sOjpOZXR3b3JrOjpNZXRy
aWNzPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTWV0cmljcyhjb24KICAg
ICBhdXRvIGNvbm5lY3Rpb25QYXlsb2FkID0gUHJvdG9jb2w6OlNlY3VyaXR5OjpDb25uZWN0aW9u
OjpjcmVhdGUoKQogICAgICAgICAucmVsZWFzZSgpOwogCi0gICAgaWYgKCFuZXR3b3JrTG9hZE1l
dHJpY3MudGxzUHJvdG9jb2wuaXNFbXB0eSgpKQotICAgICAgICBjb25uZWN0aW9uUGF5bG9hZC0+
c2V0UHJvdG9jb2wobmV0d29ya0xvYWRNZXRyaWNzLnRsc1Byb3RvY29sKTsKLQotICAgIGlmICgh
bmV0d29ya0xvYWRNZXRyaWNzLnRsc0NpcGhlci5pc0VtcHR5KCkpCi0gICAgICAgIGNvbm5lY3Rp
b25QYXlsb2FkLT5zZXRDaXBoZXIobmV0d29ya0xvYWRNZXRyaWNzLnRsc0NpcGhlcik7CisgICAg
aWYgKGF1dG8qIGFkZGl0aW9uYWxNZXRyaWNzID0gbmV0d29ya0xvYWRNZXRyaWNzLmFkZGl0aW9u
YWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IuZ2V0KCkpIHsKKyAgICAgICAgaWYg
KCFhZGRpdGlvbmFsTWV0cmljcy0+dGxzUHJvdG9jb2wuaXNFbXB0eSgpKQorICAgICAgICAgICAg
Y29ubmVjdGlvblBheWxvYWQtPnNldFByb3RvY29sKGFkZGl0aW9uYWxNZXRyaWNzLT50bHNQcm90
b2NvbCk7CisgICAgICAgIGlmICghYWRkaXRpb25hbE1ldHJpY3MtPnRsc0NpcGhlci5pc0VtcHR5
KCkpCisgICAgICAgICAgICBjb25uZWN0aW9uUGF5bG9hZC0+c2V0Q2lwaGVyKGFkZGl0aW9uYWxN
ZXRyaWNzLT50bHNDaXBoZXIpOworICAgIH0KIAogICAgIG1ldHJpY3MtPnNldFNlY3VyaXR5Q29u
bmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb25QYXlsb2FkKSk7CiAKQEAgLTM1Myw3ICszNTUsNyBA
QCBSZWZQdHI8UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlPiBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmJ1aWxkT2JqZWN0Rm9yUmVzb3VyYwogCiAgICAgaWYgKHJlc291cmNlTG9hZGVyKSB7CiAg
ICAgICAgIGF1dG8qIG1ldHJpY3MgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRy
aWNzT3JOdWxsKCk7Ci0gICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRUaW1pbmcoYnVpbGRPYmpl
Y3RGb3JUaW1pbmcobWV0cmljcyA/ICptZXRyaWNzIDogTmV0d29ya0xvYWRNZXRyaWNzIHsgfSwg
KnJlc291cmNlTG9hZGVyKSk7CisgICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRUaW1pbmcoYnVp
bGRPYmplY3RGb3JUaW1pbmcobWV0cmljcyA/ICptZXRyaWNzIDogTmV0d29ya0xvYWRNZXRyaWNz
OjplbXB0eU1ldHJpY3MoKSwgKnJlc291cmNlTG9hZGVyKSk7CiAgICAgfQogCiAgICAgaWYgKGF1
dG8mIGNlcnRpZmljYXRlSW5mbyA9IHJlc3BvbnNlLmNlcnRpZmljYXRlSW5mbygpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDQxYjhiNDNiNDUwZC4uNDBhNGM0NjU5NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNjY0LDcgKzY2NCw3IEBA
IHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgfQogCiAgICAgY29uc3QgYXV0byogdGltaW5n
ID0gcmVzcG9uc2UuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOwotICAgIGF1
dG8gcmVzb3VyY2VUaW1pbmcgPSBSZXNvdXJjZVRpbWluZzo6ZnJvbVN5bmNocm9ub3VzTG9hZChy
ZXF1ZXN0VVJMLCBtX29wdGlvbnMuaW5pdGlhdG9yLCBsb2FkVGltaW5nLCB0aW1pbmcgPyAqdGlt
aW5nIDogTmV0d29ya0xvYWRNZXRyaWNzIHsgfSwgcmVzcG9uc2UsIHNlY3VyaXR5T3JpZ2luKCkp
OworICAgIGF1dG8gcmVzb3VyY2VUaW1pbmcgPSBSZXNvdXJjZVRpbWluZzo6ZnJvbVN5bmNocm9u
b3VzTG9hZChyZXF1ZXN0VVJMLCBtX29wdGlvbnMuaW5pdGlhdG9yLCBsb2FkVGltaW5nLCB0aW1p
bmcgPyAqdGltaW5nIDogTmV0d29ya0xvYWRNZXRyaWNzOjplbXB0eU1ldHJpY3MoKSwgcmVzcG9u
c2UsIHNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGlmIChvcHRpb25zKCkuaW5pdGlhdG9yQ29udGV4
dCA9PSBJbml0aWF0b3JDb250ZXh0OjpXb3JrZXIpCiAgICAgICAgIGZpbmlzaGVkVGltaW5nRm9y
V29ya2VyTG9hZChyZXNvdXJjZVRpbWluZyk7CiAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCAxYWQ4NDBiY2RmN2UuLjI2NDZiZmVk
ZWMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC00OTgsNyArNDk4LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb20KICAgICAgICAgaWYgKHJl
c3BvbnNlSGFzSFRUUFN0YXR1c0NvZGVFcnJvcigpKSB7CiAgICAgICAgICAgICBtX2xvYWRUaW1p
bmcubWFya0VuZFRpbWUoKTsKICAgICAgICAgICAgIGF1dG8qIG1ldHJpY3MgPSB0aGlzLT5yZXNw
b25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKLSAgICAgICAgICAg
IHJlcG9ydFJlc291cmNlVGltaW5nKG1ldHJpY3MgPyAqbWV0cmljcyA6IE5ldHdvcmtMb2FkTWV0
cmljcyB7IH0pOworICAgICAgICAgICAgcmVwb3J0UmVzb3VyY2VUaW1pbmcobWV0cmljcyA/ICpt
ZXRyaWNzIDogTmV0d29ya0xvYWRNZXRyaWNzOjplbXB0eU1ldHJpY3MoKSk7CiAKICAgICAgICAg
ICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7CiAgICAgICAgICAgICBtX3Jlc291cmNlLT5lcnJvcihD
YWNoZWRSZXNvdXJjZTo6TG9hZEVycm9yKTsKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFN1YnJl
c291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bmV0d29ya0xvYWRNZQogICAgICAgICAvLyBjb21wbGV0ZSBsb2FkIG1ldHJpY3MgaW4gZGlkRmlu
aXNoTG9hZC4gSW4gdGhvc2UgY2FzZXMsIGZhbGwgYmFjayB0byB0aGUgcG9zc2liaWxpdHkKICAg
ICAgICAgLy8gdGhhdCB0aGV5IHBvcHVsYXRlZCBwYXJ0aWFsIGxvYWQgdGltaW5nIGluZm9ybWF0
aW9uIG9uIHRoZSBSZXNvdXJjZVJlc3BvbnNlLgogICAgICAgICBjb25zdCBhdXRvKiB0aW1pbmcg
PSBtX3Jlc291cmNlLT5yZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51
bGwoKTsKLSAgICAgICAgcmVwb3J0UmVzb3VyY2VUaW1pbmcodGltaW5nID8gKnRpbWluZyA6IE5l
dHdvcmtMb2FkTWV0cmljcyB7IH0pOworICAgICAgICByZXBvcnRSZXNvdXJjZVRpbWluZyh0aW1p
bmcgPyAqdGltaW5nIDogTmV0d29ya0xvYWRNZXRyaWNzOjplbXB0eU1ldHJpY3MoKSk7CiAgICAg
fQogCiAgICAgaWYgKG1fcmVzb3VyY2UtPnR5cGUoKSAhPSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6
TWFpblJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjExYjMyYTM0N2YxLi5kYTU4NTM0NWM5OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcApAQCAtMTA0MCw3ICsxMDQwLDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXUKICAg
ICAgICAgICAgICAgICAvLyBmb3IgdGhpcyBkb2N1bWVudCBiZWNhdXNlIGl0IG1heSBoYXZlIGJl
ZW4gc3BlY3VsYXRpdmVseSBwcmVsb2FkZWQuCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gbWV0
cmljc0Zyb21SZXNvdXJjZSA9IHJlc291cmNlLT50YWtlTmV0d29ya0xvYWRNZXRyaWNzKCk7IG1l
dHJpY3NGcm9tUmVzb3VyY2UgJiYgZG9jdW1lbnRMb2FkZXIgJiYgbWV0cmljc0Zyb21SZXNvdXJj
ZS0+cmVkaXJlY3RTdGFydCA+PSBkb2N1bWVudExvYWRlci0+dGltaW5nKCkudGltZU9yaWdpbigp
KQogICAgICAgICAgICAgICAgICAgICBtZXRyaWNzID0gV1RGTW92ZShtZXRyaWNzRnJvbVJlc291
cmNlKTsKLSAgICAgICAgICAgICAgICBhdXRvIHJlc291cmNlVGltaW5nID0gUmVzb3VyY2VUaW1p
bmc6OmZyb21NZW1vcnlDYWNoZSh1cmwsIHJlcXVlc3QuaW5pdGlhdG9yTmFtZSgpLCBsb2FkVGlt
aW5nLCByZXNvdXJjZS0+cmVzcG9uc2UoKSwgbWV0cmljcyA/ICptZXRyaWNzIDogTmV0d29ya0xv
YWRNZXRyaWNzIHsgfSwgKnJlcXVlc3Qub3JpZ2luKCkpOworICAgICAgICAgICAgICAgIGF1dG8g
cmVzb3VyY2VUaW1pbmcgPSBSZXNvdXJjZVRpbWluZzo6ZnJvbU1lbW9yeUNhY2hlKHVybCwgcmVx
dWVzdC5pbml0aWF0b3JOYW1lKCksIGxvYWRUaW1pbmcsIHJlc291cmNlLT5yZXNwb25zZSgpLCBt
ZXRyaWNzID8gKm1ldHJpY3MgOiBOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcygpLCAq
cmVxdWVzdC5vcmlnaW4oKSk7CiAgICAgICAgICAgICAgICAgaWYgKGluaXRpYXRvckNvbnRleHQg
PT0gSW5pdGlhdG9yQ29udGV4dDo6V29ya2VyKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChpczxDYWNoZWRSYXdSZXNvdXJjZT4ocmVzb3VyY2UuZ2V0KCkpKTsKICAgICAgICAgICAgICAg
ICAgICAgZG93bmNhc3Q8Q2FjaGVkUmF3UmVzb3VyY2U+KHJlc291cmNlLmdldCgpKS0+ZmluaXNo
ZWRUaW1pbmdGb3JXb3JrZXJMb2FkKFdURk1vdmUocmVzb3VyY2VUaW1pbmcpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VCYXNlLmNwcAppbmRleCA3YzE5ZTFmNTIxNjQuLjFhZWNkMmU0ZjlhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6bnVsbGlmeSgpCiAgICAgbV9pc051bGwgPSB0cnVlOwog
fQogCi1ib29sIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6Y29tcGFyZShjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGIp
Citib29sIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lD
aGFsbGVuZ2VDb21wYXJpc29uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYikKIHsKICAgICBpZiAoYS5pc051bGwoKSAmJiBi
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk5LDkgKzk5LDkgQEAgYm9vbCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmNvbXBhcmUoY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGEsIGNvbnMKICAgICBpZiAoYS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpICE9IGIu
cHJldmlvdXNGYWlsdXJlQ291bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAK
LSAgICBpZiAoYS5mYWlsdXJlUmVzcG9uc2UoKSAhPSBiLmZhaWx1cmVSZXNwb25zZSgpKQorICAg
IGlmICghUmVzb3VyY2VSZXNwb25zZUJhc2U6OmVxdWFsRm9yV2ViS2l0TGVnYWN5Q2hhbGxlbmdl
Q29tcGFyaXNvbihhLmZhaWx1cmVSZXNwb25zZSgpLCBiLmZhaWx1cmVSZXNwb25zZSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKKwogICAgIGlmIChhLmVycm9yKCkgIT0gYi5l
cnJvcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VCYXNlLmgKaW5kZXggYTRmN2I2MmVkYTEwLi41ODYwNzBmZWE5NjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUJhc2UuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc051bGwoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG51bGxpZnko
KTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
Yik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZXF1YWxGb3JXZWJLaXRMZWdhY3lD
aGFsbGVuZ2VDb21wYXJpc29uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKIAogcHJvdGVjdGVkOgogICAgIC8vIFRoZSBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSBzdWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBtZXRob2QgdG8g
Y29tcGFyZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWVsZHMKQEAgLTYyLDkgKzYyLDYgQEAgcHJvdGVj
dGVkOgogICAgIFJlc291cmNlRXJyb3IgbV9lcnJvcjsKIH07CiAKLWlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBiKSB7IHJldHVybiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmNv
bXBhcmUoYSwgYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKSB7IHJldHVy
biAhKGEgPT0gYik7IH0KLQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjYzYTRjMmZlZDRkZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmNwcApA
QCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrTG9hZE1ldHJpY3Mu
aCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK05ldHdvcmtMb2FkTWV0cmljczo6TmV0d29ya0xvYWRNZXRyaWNzKCkKKyAgICA6IGNv
bXBsZXRlKGZhbHNlKQorICAgICwgY2VsbHVsYXIoZmFsc2UpCisgICAgLCBleHBlbnNpdmUoZmFs
c2UpCisgICAgLCBjb25zdHJhaW5lZChmYWxzZSkKKyAgICAsIG11bHRpcGF0aChmYWxzZSkKKyAg
ICAsIGlzUmV1c2VkQ29ubmVjdGlvbihmYWxzZSkKKyAgICAsIGZhaWxzVEFPQ2hlY2soZmFsc2Up
CisgICAgLCBoYXNDcm9zc09yaWdpblJlZGlyZWN0KGZhbHNlKSB7IH0KKworY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcygpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPE5ldHdvcmtMb2FkTWV0cmljcz4gbWV0cmljczsKKyAgICBy
ZXR1cm4gbWV0cmljcy5nZXQoKTsKK30KKworUmVmPEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJp
Y3NGb3JXZWJJbnNwZWN0b3I+IEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNw
ZWN0b3I6Omlzb2xhdGVkQ29weSgpCit7CisgICAgYXV0byBjb3B5ID0gYWRvcHRSZWYoKm5ldyBB
ZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yKTsKKyAgICBjb3B5LT5w
cmlvcml0eSA9IHByaW9yaXR5OworICAgIGNvcHktPnJlbW90ZUFkZHJlc3MgPSByZW1vdGVBZGRy
ZXNzLmlzb2xhdGVkQ29weSgpOworICAgIGNvcHktPmNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29u
bmVjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS0+dGxzUHJvdG9jb2wg
PSB0bHNQcm90b2NvbC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LT50bHNDaXBoZXIgPSB0bHND
aXBoZXIuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS0+cmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0
SGVhZGVycy5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LT5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50
ID0gcmVxdWVzdEhlYWRlckJ5dGVzU2VudDsKKyAgICBjb3B5LT5yZXNwb25zZUhlYWRlckJ5dGVz
UmVjZWl2ZWQgPSByZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQ7CisgICAgY29weS0+cmVxdWVz
dEJvZHlCeXRlc1NlbnQgPSByZXF1ZXN0Qm9keUJ5dGVzU2VudDsKKyAgICByZXR1cm4gY29weTsK
K30KKworTmV0d29ya0xvYWRNZXRyaWNzIE5ldHdvcmtMb2FkTWV0cmljczo6aXNvbGF0ZWRDb3B5
KCkgY29uc3QKK3sKKyAgICBOZXR3b3JrTG9hZE1ldHJpY3MgY29weTsKKworICAgIGNvcHkucmVk
aXJlY3RTdGFydCA9IHJlZGlyZWN0U3RhcnQuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5mZXRj
aFN0YXJ0ID0gZmV0Y2hTdGFydC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LmRvbWFpbkxvb2t1
cFN0YXJ0ID0gZG9tYWluTG9va3VwU3RhcnQuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5kb21h
aW5Mb29rdXBFbmQgPSBkb21haW5Mb29rdXBFbmQuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5j
b25uZWN0U3RhcnQgPSBjb25uZWN0U3RhcnQuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5zZWN1
cmVDb25uZWN0aW9uU3RhcnQgPSBzZWN1cmVDb25uZWN0aW9uU3RhcnQuaXNvbGF0ZWRDb3B5KCk7
CisgICAgY29weS5jb25uZWN0RW5kID0gY29ubmVjdEVuZC5pc29sYXRlZENvcHkoKTsKKyAgICBj
b3B5LnJlcXVlc3RTdGFydCA9IHJlcXVlc3RTdGFydC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5
LnJlc3BvbnNlU3RhcnQgPSByZXNwb25zZVN0YXJ0Lmlzb2xhdGVkQ29weSgpOworICAgIGNvcHku
cmVzcG9uc2VFbmQgPSByZXNwb25zZUVuZC5pc29sYXRlZENvcHkoKTsKKworICAgIGNvcHkucHJv
dG9jb2wgPSBwcm90b2NvbC5pc29sYXRlZENvcHkoKTsKKworICAgIGNvcHkucmVkaXJlY3RDb3Vu
dCA9IHJlZGlyZWN0Q291bnQ7CisKKyAgICBjb3B5LmNvbXBsZXRlID0gY29tcGxldGU7CisgICAg
Y29weS5jZWxsdWxhciA9IGNlbGx1bGFyOworICAgIGNvcHkuZXhwZW5zaXZlID0gZXhwZW5zaXZl
OworICAgIGNvcHkuY29uc3RyYWluZWQgPSBjb25zdHJhaW5lZDsKKyAgICBjb3B5Lm11bHRpcGF0
aCA9IG11bHRpcGF0aDsKKyAgICBjb3B5LmlzUmV1c2VkQ29ubmVjdGlvbiA9IGlzUmV1c2VkQ29u
bmVjdGlvbjsKKyAgICBjb3B5LmZhaWxzVEFPQ2hlY2sgPSBmYWlsc1RBT0NoZWNrOworICAgIGNv
cHkuaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCA9IGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3Q7CisKKyAg
ICBjb3B5LnByaXZhY3lTdGFuY2UgPSBwcml2YWN5U3RhbmNlOworCisgICAgY29weS5yZXNwb25z
ZUJvZHlCeXRlc1JlY2VpdmVkID0gcmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZDsKKyAgICBjb3B5
LnJlc3BvbnNlQm9keURlY29kZWRTaXplID0gcmVzcG9uc2VCb2R5RGVjb2RlZFNpemU7CisKKyAg
ICBpZiAoYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcikKKyAgICAg
ICAgY29weS5hZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yID0gYWRk
aXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvci0+aXNvbGF0ZWRDb3B5KCk7
CisKKyAgICByZXR1cm4gY29weTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3Mu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmgK
aW5kZXggZjFlYTc2ZTFkYjExLi42YjQ2MjlkNWY0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaApAQCAtMzQsNyArMzQs
NiBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBPQkpDX0NMQVNTIE5TVVJMQ29ubmVjdGlvbjsK
LU9CSkNfQ0xBU1MgTlNVUkxSZXNwb25zZTsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uVGFza01l
dHJpY3M7CiAjZW5kaWYKIApAQCAtNTksOSArNTgsMjQgQEAgZW51bSBjbGFzcyBQcml2YWN5U3Rh
bmNlIDogdWludDhfdCB7CiAKIGNvbnN0ZXhwciBNb25vdG9uaWNUaW1lIHJldXNlZFRMU0Nvbm5l
Y3Rpb25TZW50aW5lbCB7IE1vbm90b25pY1RpbWU6OmZyb21SYXdTZWNvbmRzKC0xKSB9OwogCi1j
bGFzcyBOZXR3b3JrTG9hZE1ldHJpY3NXaXRob3V0Tm9uVGltaW5nRGF0YSB7Ci0gICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQoTmV0d29ya0xvYWRNZXRyaWNzV2l0aG91dE5vblRpbWluZ0RhdGEp
Oworc3RydWN0IEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I7CisK
K2NsYXNzIE5ldHdvcmtMb2FkTWV0cmljcyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQo
TmV0d29ya0xvYWRNZXRyaWNzKTsKIHB1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBOZXR3b3Jr
TG9hZE1ldHJpY3MoKTsKKyAgICBOZXR3b3JrTG9hZE1ldHJpY3MoY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgPSBkZWZhdWx0OworICAgIE5ldHdvcmtMb2FkTWV0cmljcyhOZXR3b3JrTG9hZE1l
dHJpY3MmJikgPSBkZWZhdWx0OworICAgIE5ldHdvcmtMb2FkTWV0cmljcyYgb3BlcmF0b3I9KE5l
dHdvcmtMb2FkTWV0cmljcyYmKSA9IGRlZmF1bHQ7CisgICAgTmV0d29ya0xvYWRNZXRyaWNzJiBv
cGVyYXRvcj0oY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgPSBkZWZhdWx0OworCisgICAgc3Rh
dGljIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgZW1wdHlNZXRyaWNzKCk7CisKKyAgICBOZXR3
b3JrTG9hZE1ldHJpY3MgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TmV0d29ya0xvYWRNZXRyaWNzPiBkZWNv
ZGUoRGVjb2RlciYpOworCiAgICAgYm9vbCBpc0NvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gY29t
cGxldGU7IH0KICAgICB2b2lkIG1hcmtDb21wbGV0ZSgpIHsgY29tcGxldGUgPSB0cnVlOyB9CiAK
QEAgLTgyLDExMCArOTYsMzIgQEAgcHVibGljOgogCiAgICAgdWludDE2X3QgcmVkaXJlY3RDb3Vu
dCB7IDAgfTsKIAotICAgIC8vIEZJWE1FOiBUaGVzZSBjb3VsZCBhbGwgYmUgbWFkZSBiaXQgZmll
bGRzLgotICAgIGJvb2wgY29tcGxldGUgeyBmYWxzZSB9OwotICAgIGJvb2wgY2VsbHVsYXIgeyBm
YWxzZSB9OwotICAgIGJvb2wgZXhwZW5zaXZlIHsgZmFsc2UgfTsKLSAgICBib29sIGNvbnN0cmFp
bmVkIHsgZmFsc2UgfTsKLSAgICBib29sIG11bHRpcGF0aCB7IGZhbHNlIH07Ci0gICAgYm9vbCBp
c1JldXNlZENvbm5lY3Rpb24geyBmYWxzZSB9OwotICAgIGJvb2wgZmFpbHNUQU9DaGVjayB7IGZh
bHNlIH07Ci0gICAgYm9vbCBoYXNDcm9zc09yaWdpblJlZGlyZWN0IHsgZmFsc2UgfTsKLX07Cisg
ICAgYm9vbCBjb21wbGV0ZSA6IDE7CisgICAgYm9vbCBjZWxsdWxhciA6IDE7CisgICAgYm9vbCBl
eHBlbnNpdmUgOiAxOworICAgIGJvb2wgY29uc3RyYWluZWQgOiAxOworICAgIGJvb2wgbXVsdGlw
YXRoIDogMTsKKyAgICBib29sIGlzUmV1c2VkQ29ubmVjdGlvbiA6IDE7CisgICAgYm9vbCBmYWls
c1RBT0NoZWNrIDogMTsKKyAgICBib29sIGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QgOiAxOwogCi1j
bGFzcyBOZXR3b3JrTG9hZE1ldHJpY3MgOiBwdWJsaWMgTmV0d29ya0xvYWRNZXRyaWNzV2l0aG91
dE5vblRpbWluZ0RhdGEgewotcHVibGljOgotICAgIE5ldHdvcmtMb2FkTWV0cmljcygpCi0gICAg
ICAgIDogTmV0d29ya0xvYWRNZXRyaWNzV2l0aG91dE5vblRpbWluZ0RhdGEoKQotICAgIHsKLSAg
ICB9CisgICAgUHJpdmFjeVN0YW5jZSBwcml2YWN5U3RhbmNlIHsgUHJpdmFjeVN0YW5jZTo6VW5r
bm93biB9OwogCi0gICAgTmV0d29ya0xvYWRNZXRyaWNzIGlzb2xhdGVkQ29weSgpIGNvbnN0Ci0g
ICAgewotICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgY29weTsKLQotICAgICAgICBjb3B5LnJl
ZGlyZWN0U3RhcnQgPSByZWRpcmVjdFN0YXJ0OwotICAgICAgICBjb3B5LmZldGNoU3RhcnQgPSBm
ZXRjaFN0YXJ0OwotCi0gICAgICAgIGNvcHkuZG9tYWluTG9va3VwU3RhcnQgPSBkb21haW5Mb29r
dXBTdGFydDsKLSAgICAgICAgY29weS5kb21haW5Mb29rdXBFbmQgPSBkb21haW5Mb29rdXBFbmQ7
Ci0gICAgICAgIGNvcHkuY29ubmVjdFN0YXJ0ID0gY29ubmVjdFN0YXJ0OwotICAgICAgICBjb3B5
LnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IHNlY3VyZUNvbm5lY3Rpb25TdGFydDsKLSAgICAgICAg
Y29weS5jb25uZWN0RW5kID0gY29ubmVjdEVuZDsKLSAgICAgICAgY29weS5yZXF1ZXN0U3RhcnQg
PSByZXF1ZXN0U3RhcnQ7Ci0gICAgICAgIGNvcHkucmVzcG9uc2VTdGFydCA9IHJlc3BvbnNlU3Rh
cnQ7Ci0gICAgICAgIGNvcHkucmVzcG9uc2VFbmQgPSByZXNwb25zZUVuZDsKLSAgICAgICAgY29w
eS5jb21wbGV0ZSA9IGNvbXBsZXRlOwotICAgICAgICBjb3B5LnByb3RvY29sID0gcHJvdG9jb2wu
aXNvbGF0ZWRDb3B5KCk7Ci0gICAgICAgIGNvcHkucmVkaXJlY3RDb3VudCA9IHJlZGlyZWN0Q291
bnQ7Ci0gICAgICAgIGNvcHkuY2VsbHVsYXIgPSBjZWxsdWxhcjsKLSAgICAgICAgY29weS5leHBl
bnNpdmUgPSBleHBlbnNpdmU7Ci0gICAgICAgIGNvcHkuY29uc3RyYWluZWQgPSBjb25zdHJhaW5l
ZDsKLSAgICAgICAgY29weS5tdWx0aXBhdGggPSBtdWx0aXBhdGg7Ci0gICAgICAgIGNvcHkuaXNS
ZXVzZWRDb25uZWN0aW9uID0gaXNSZXVzZWRDb25uZWN0aW9uOwotICAgICAgICBjb3B5LmZhaWxz
VEFPQ2hlY2sgPSBmYWlsc1RBT0NoZWNrOwotICAgICAgICBjb3B5Lmhhc0Nyb3NzT3JpZ2luUmVk
aXJlY3QgPSBoYXNDcm9zc09yaWdpblJlZGlyZWN0OwotCi0gICAgICAgIGNvcHkucmVtb3RlQWRk
cmVzcyA9IHJlbW90ZUFkZHJlc3MuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgICAgIGNvcHkuY29ubmVj
dGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uSWRlbnRpZmllci5pc29sYXRlZENvcHkoKTsKLSAg
ICAgICAgY29weS50bHNQcm90b2NvbCA9IHRsc1Byb3RvY29sLmlzb2xhdGVkQ29weSgpOwotICAg
ICAgICBjb3B5LnRsc0NpcGhlciA9IHRsc0NpcGhlci5pc29sYXRlZENvcHkoKTsKLSAgICAgICAg
Y29weS5wcmlvcml0eSA9IHByaW9yaXR5OwotICAgICAgICBjb3B5LnByaXZhY3lTdGFuY2UgPSBw
cml2YWN5U3RhbmNlOwotICAgICAgICBjb3B5LnJlcXVlc3RIZWFkZXJzID0gcmVxdWVzdEhlYWRl
cnMuaXNvbGF0ZWRDb3B5KCk7Ci0KLSAgICAgICAgY29weS5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50
ID0gcmVxdWVzdEhlYWRlckJ5dGVzU2VudDsKLSAgICAgICAgY29weS5yZXF1ZXN0Qm9keUJ5dGVz
U2VudCA9IHJlcXVlc3RCb2R5Qnl0ZXNTZW50OwotICAgICAgICBjb3B5LnJlc3BvbnNlSGVhZGVy
Qnl0ZXNSZWNlaXZlZCA9IHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZDsKLSAgICAgICAgY29w
eS5yZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkID0gcmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZDsK
LSAgICAgICAgY29weS5yZXNwb25zZUJvZHlEZWNvZGVkU2l6ZSA9IHJlc3BvbnNlQm9keURlY29k
ZWRTaXplOwotCi0gICAgICAgIHJldHVybiBjb3B5OwotICAgIH0KKyAgICB1aW50NjRfdCByZXNw
b25zZUJvZHlCeXRlc1JlY2VpdmVkIHsgc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1h
eCgpIH07CisgICAgdWludDY0X3QgcmVzcG9uc2VCb2R5RGVjb2RlZFNpemUgeyBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkgfTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IHJlZGlyZWN0U3RhcnQgPT0gb3RoZXIucmVkaXJlY3RTdGFydAotICAgICAgICAgICAgJiYgZmV0
Y2hTdGFydCA9PSBvdGhlci5mZXRjaFN0YXJ0Ci0gICAgICAgICAgICAmJiBkb21haW5Mb29rdXBT
dGFydCA9PSBvdGhlci5kb21haW5Mb29rdXBTdGFydAotICAgICAgICAgICAgJiYgZG9tYWluTG9v
a3VwRW5kID09IG90aGVyLmRvbWFpbkxvb2t1cEVuZAotICAgICAgICAgICAgJiYgY29ubmVjdFN0
YXJ0ID09IG90aGVyLmNvbm5lY3RTdGFydAotICAgICAgICAgICAgJiYgc2VjdXJlQ29ubmVjdGlv
blN0YXJ0ID09IG90aGVyLnNlY3VyZUNvbm5lY3Rpb25TdGFydAotICAgICAgICAgICAgJiYgY29u
bmVjdEVuZCA9PSBvdGhlci5jb25uZWN0RW5kCi0gICAgICAgICAgICAmJiByZXF1ZXN0U3RhcnQg
PT0gb3RoZXIucmVxdWVzdFN0YXJ0Ci0gICAgICAgICAgICAmJiByZXNwb25zZVN0YXJ0ID09IG90
aGVyLnJlc3BvbnNlU3RhcnQKLSAgICAgICAgICAgICYmIHJlc3BvbnNlRW5kID09IG90aGVyLnJl
c3BvbnNlRW5kCi0gICAgICAgICAgICAmJiBjb21wbGV0ZSA9PSBvdGhlci5jb21wbGV0ZQotICAg
ICAgICAgICAgJiYgY2VsbHVsYXIgPT0gb3RoZXIuY2VsbHVsYXIKLSAgICAgICAgICAgICYmIGV4
cGVuc2l2ZSA9PSBvdGhlci5leHBlbnNpdmUKLSAgICAgICAgICAgICYmIGNvbnN0cmFpbmVkID09
IG90aGVyLmNvbnN0cmFpbmVkCi0gICAgICAgICAgICAmJiBtdWx0aXBhdGggPT0gb3RoZXIubXVs
dGlwYXRoCi0gICAgICAgICAgICAmJiBpc1JldXNlZENvbm5lY3Rpb24gPT0gb3RoZXIuaXNSZXVz
ZWRDb25uZWN0aW9uCi0gICAgICAgICAgICAmJiBmYWlsc1RBT0NoZWNrID09IG90aGVyLmZhaWxz
VEFPQ2hlY2sKLSAgICAgICAgICAgICYmIGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QgPT0gb3RoZXIu
aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdAotICAgICAgICAgICAgJiYgcHJvdG9jb2wgPT0gb3RoZXIu
cHJvdG9jb2wKLSAgICAgICAgICAgICYmIHJlZGlyZWN0Q291bnQgPT0gb3RoZXIucmVkaXJlY3RD
b3VudAotICAgICAgICAgICAgJiYgcmVtb3RlQWRkcmVzcyA9PSBvdGhlci5yZW1vdGVBZGRyZXNz
Ci0gICAgICAgICAgICAmJiBjb25uZWN0aW9uSWRlbnRpZmllciA9PSBvdGhlci5jb25uZWN0aW9u
SWRlbnRpZmllcgotICAgICAgICAgICAgJiYgdGxzUHJvdG9jb2wgPT0gb3RoZXIudGxzUHJvdG9j
b2wKLSAgICAgICAgICAgICYmIHRsc0NpcGhlciA9PSBvdGhlci50bHNDaXBoZXIKLSAgICAgICAg
ICAgICYmIHByaW9yaXR5ID09IG90aGVyLnByaW9yaXR5Ci0gICAgICAgICAgICAmJiBwcml2YWN5
U3RhbmNlID09IG90aGVyLnByaXZhY3lTdGFuY2UKLSAgICAgICAgICAgICYmIHJlcXVlc3RIZWFk
ZXJzID09IG90aGVyLnJlcXVlc3RIZWFkZXJzCi0gICAgICAgICAgICAmJiByZXF1ZXN0SGVhZGVy
Qnl0ZXNTZW50ID09IG90aGVyLnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQKLSAgICAgICAgICAgICYm
IHJlcXVlc3RCb2R5Qnl0ZXNTZW50ID09IG90aGVyLnJlcXVlc3RCb2R5Qnl0ZXNTZW50Ci0gICAg
ICAgICAgICAmJiByZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQgPT0gb3RoZXIucmVzcG9uc2VI
ZWFkZXJCeXRlc1JlY2VpdmVkCi0gICAgICAgICAgICAmJiByZXNwb25zZUJvZHlCeXRlc1JlY2Vp
dmVkID09IG90aGVyLnJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQKLSAgICAgICAgICAgICYmIHJl
c3BvbnNlQm9keURlY29kZWRTaXplID09IG90aGVyLnJlc3BvbnNlQm9keURlY29kZWRTaXplOwot
ICAgIH0KKyAgICBSZWZQdHI8QWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3Bl
Y3Rvcj4gYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcjsKK307CiAK
LSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBvdGhlcikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CitzdHJ1
Y3QgQWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvciA6IHB1YmxpYyBS
ZWZDb3VudGVkPEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I+IHsK
KworICAgIFJlZjxBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yPiBp
c29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBOZXR3b3JrTG9hZE1l
dHJpY3MmKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPEFkZGl0
aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I+IGRlY29kZShEZWNvZGVyJik7
CisgICAgUmVmPEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I+IGlz
b2xhdGVkQ29weSgpOworCisgICAgTmV0d29ya0xvYWRQcmlvcml0eSBwcmlvcml0eSB7IE5ldHdv
cmtMb2FkUHJpb3JpdHk6OlVua25vd24gfTsKIAogICAgIFN0cmluZyByZW1vdGVBZGRyZXNzOwog
ICAgIFN0cmluZyBjb25uZWN0aW9uSWRlbnRpZmllcjsKQEAgLTE5MywxNiArMTI5LDExIEBAIHB1
YmxpYzoKICAgICBTdHJpbmcgdGxzUHJvdG9jb2w7CiAgICAgU3RyaW5nIHRsc0NpcGhlcjsKIAot
ICAgIE5ldHdvcmtMb2FkUHJpb3JpdHkgcHJpb3JpdHkgeyBOZXR3b3JrTG9hZFByaW9yaXR5OjpV
bmtub3duIH07Ci0gICAgUHJpdmFjeVN0YW5jZSBwcml2YWN5U3RhbmNlIHsgUHJpdmFjeVN0YW5j
ZTo6VW5rbm93biB9OwotCiAgICAgSFRUUEhlYWRlck1hcCByZXF1ZXN0SGVhZGVyczsKIAogICAg
IHVpbnQ2NF90IHJlcXVlc3RIZWFkZXJCeXRlc1NlbnQgeyBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQ2NF90Pjo6bWF4KCkgfTsKICAgICB1aW50NjRfdCByZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2
ZWQgeyBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkgfTsKICAgICB1aW50NjRf
dCByZXF1ZXN0Qm9keUJ5dGVzU2VudCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+Ojpt
YXgoKSB9OwotICAgIHVpbnQ2NF90IHJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQgeyBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkgfTsKLSAgICB1aW50NjRfdCByZXNwb25zZUJv
ZHlEZWNvZGVkU2l6ZSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSB9Owog
fTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMjI1LDYgKzE1NiwxMSBAQCB2b2lkIE5ldHdv
cmtMb2FkTWV0cmljczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rl
ciA8PCByZXF1ZXN0U3RhcnQ7CiAgICAgZW5jb2RlciA8PCByZXNwb25zZVN0YXJ0OwogICAgIGVu
Y29kZXIgPDwgcmVzcG9uc2VFbmQ7CisKKyAgICBlbmNvZGVyIDw8IHByb3RvY29sOworCisgICAg
ZW5jb2RlciA8PCByZWRpcmVjdENvdW50OworCiAgICAgZW5jb2RlciA8PCBjb21wbGV0ZTsKICAg
ICBlbmNvZGVyIDw8IGNlbGx1bGFyOwogICAgIGVuY29kZXIgPDwgZXhwZW5zaXZlOwpAQCAtMjMz
LDI4ICsxNjksMjYgQEAgdm9pZCBOZXR3b3JrTG9hZE1ldHJpY3M6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaXNSZXVzZWRDb25uZWN0aW9uOwogICAgIGVu
Y29kZXIgPDwgZmFpbHNUQU9DaGVjazsKICAgICBlbmNvZGVyIDw8IGhhc0Nyb3NzT3JpZ2luUmVk
aXJlY3Q7Ci0gICAgZW5jb2RlciA8PCBwcm90b2NvbDsKLSAgICBlbmNvZGVyIDw8IHJlZGlyZWN0
Q291bnQ7Ci0gICAgZW5jb2RlciA8PCByZW1vdGVBZGRyZXNzOwotICAgIGVuY29kZXIgPDwgY29u
bmVjdGlvbklkZW50aWZpZXI7Ci0gICAgZW5jb2RlciA8PCB0bHNQcm90b2NvbDsKLSAgICBlbmNv
ZGVyIDw8IHRsc0NpcGhlcjsKLSAgICBlbmNvZGVyIDw8IHByaW9yaXR5OworCiAgICAgZW5jb2Rl
ciA8PCBwcml2YWN5U3RhbmNlOwotICAgIGVuY29kZXIgPDwgcmVxdWVzdEhlYWRlcnM7Ci0gICAg
ZW5jb2RlciA8PCByZXF1ZXN0SGVhZGVyQnl0ZXNTZW50OwotICAgIGVuY29kZXIgPDwgcmVxdWVz
dEJvZHlCeXRlc1NlbnQ7Ci0gICAgZW5jb2RlciA8PCByZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2
ZWQ7CisKICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQ7CiAgICAgZW5j
b2RlciA8PCByZXNwb25zZUJvZHlEZWNvZGVkU2l6ZTsKKyAgICAKKyAgICBpZiAoYWRkaXRpb25h
bE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcikgeworICAgICAgICBlbmNvZGVyIDw8
IHRydWU7CisgICAgICAgIGVuY29kZXIgPDwgKmFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NG
b3JXZWJJbnNwZWN0b3I7CisgICAgfSBlbHNlCisgICAgICAgIGVuY29kZXIgPDwgZmFsc2U7CiB9
CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1ib29sIE5ldHdvcmtMb2FkTWV0cmljczo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3N0ZDo6
b3B0aW9uYWw8TmV0d29ya0xvYWRNZXRyaWNzPiBOZXR3b3JrTG9hZE1ldHJpY3M6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewogICAgIHN0YXRpY19hc3NlcnQoRGVjb2Rlcjo6aXNJUENEZWNv
ZGVyLCAiTmV0d29ya0xvYWRNZXRyaWNzIHNob3VsZCBub3QgYmUgc3RvcmVkIGJ5IHRoZSBXVEY6
OlBlcnNpc3RlbmNlOjpFbmNvZGVyIik7CiAKLSAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUobWV0
cmljcy5yZWRpcmVjdFN0YXJ0KQorICAgIE5ldHdvcmtMb2FkTWV0cmljcyBtZXRyaWNzOworICAg
IGlmICghKGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVkaXJlY3RTdGFydCkKICAgICAgICAgJiYg
ZGVjb2Rlci5kZWNvZGUobWV0cmljcy5mZXRjaFN0YXJ0KQogICAgICAgICAmJiBkZWNvZGVyLmRl
Y29kZShtZXRyaWNzLmRvbWFpbkxvb2t1cFN0YXJ0KQogICAgICAgICAmJiBkZWNvZGVyLmRlY29k
ZShtZXRyaWNzLmRvbWFpbkxvb2t1cEVuZCkKQEAgLTI2NCwyOCArMTk4LDE1MSBAQCBib29sIE5l
dHdvcmtMb2FkTWV0cmljczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZXF1ZXN0
U3RhcnQpCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVzcG9uc2VTdGFydCkK
ICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZXNwb25zZUVuZCkKLSAgICAgICAg
JiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5jb21wbGV0ZSkKLSAgICAgICAgJiYgZGVjb2Rlci5k
ZWNvZGUobWV0cmljcy5jZWxsdWxhcikKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmlj
cy5leHBlbnNpdmUpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuY29uc3RyYWlu
ZWQpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MubXVsdGlwYXRoKQotICAgICAg
ICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmlzUmV1c2VkQ29ubmVjdGlvbikKLSAgICAgICAg
JiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5mYWlsc1RBT0NoZWNrKQotICAgICAgICAmJiBkZWNv
ZGVyLmRlY29kZShtZXRyaWNzLmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QpCiAgICAgICAgICYmIGRl
Y29kZXIuZGVjb2RlKG1ldHJpY3MucHJvdG9jb2wpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2Rl
KG1ldHJpY3MucmVkaXJlY3RDb3VudCkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmlj
cy5yZW1vdGVBZGRyZXNzKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmNvbm5l
Y3Rpb25JZGVudGlmaWVyKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnRsc1By
b3RvY29sKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnRsc0NpcGhlcikKLSAg
ICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5wcmlvcml0eSkKLSAgICAgICAgJiYgZGVj
b2Rlci5kZWNvZGUobWV0cmljcy5wcml2YWN5U3RhbmNlKQotICAgICAgICAmJiBkZWNvZGVyLmRl
Y29kZShtZXRyaWNzLnJlcXVlc3RIZWFkZXJzKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZSht
ZXRyaWNzLnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2Rl
KG1ldHJpY3MucmVxdWVzdEJvZHlCeXRlc1NlbnQpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2Rl
KG1ldHJpY3MucmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkKQorICAgICAgICAmJiBkZWNvZGVy
LmRlY29kZShtZXRyaWNzLnJlZGlyZWN0Q291bnQpKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNvbXBsZXRlOworICAgIGRlY29k
ZXIgPj4gY29tcGxldGU7CisgICAgaWYgKCFjb21wbGV0ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICBtZXRyaWNzLmNvbXBsZXRlID0gV1RGTW92ZSgqY29tcGxldGUpOworCisg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBjZWxsdWxhcjsKKyAgICBkZWNvZGVyID4+IGNlbGx1bGFy
OworICAgIGlmICghY2VsbHVsYXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
bWV0cmljcy5jZWxsdWxhciA9IFdURk1vdmUoKmNlbGx1bGFyKTsKKworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gZXhwZW5zaXZlOworICAgIGRlY29kZXIgPj4gZXhwZW5zaXZlOworICAgIGlmICgh
ZXhwZW5zaXZlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIG1ldHJpY3MuZXhw
ZW5zaXZlID0gV1RGTW92ZSgqZXhwZW5zaXZlKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
Y29uc3RyYWluZWQ7CisgICAgZGVjb2RlciA+PiBjb25zdHJhaW5lZDsKKyAgICBpZiAoIWNvbnN0
cmFpbmVkKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIG1ldHJpY3MuY29uc3Ry
YWluZWQgPSBXVEZNb3ZlKCpjb25zdHJhaW5lZCk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IG11bHRpcGF0aDsKKyAgICBkZWNvZGVyID4+IG11bHRpcGF0aDsKKyAgICBpZiAoIW11bHRpcGF0
aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBtZXRyaWNzLm11bHRpcGF0aCA9
IFdURk1vdmUoKm11bHRpcGF0aCk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzUmV1c2Vk
Q29ubmVjdGlvbjsKKyAgICBkZWNvZGVyID4+IGlzUmV1c2VkQ29ubmVjdGlvbjsKKyAgICBpZiAo
IWlzUmV1c2VkQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBt
ZXRyaWNzLmlzUmV1c2VkQ29ubmVjdGlvbiA9IFdURk1vdmUoKmlzUmV1c2VkQ29ubmVjdGlvbik7
CisKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZhaWxzVEFPQ2hlY2s7CisgICAgZGVjb2RlciA+
PiBmYWlsc1RBT0NoZWNrOworICAgIGlmICghZmFpbHNUQU9DaGVjaykKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICBtZXRyaWNzLmZhaWxzVEFPQ2hlY2sgPSBXVEZNb3ZlKCpmYWls
c1RBT0NoZWNrKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzQ3Jvc3NPcmlnaW5SZWRp
cmVjdDsKKyAgICBkZWNvZGVyID4+IGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3Q7CisgICAgaWYgKCFo
YXNDcm9zc09yaWdpblJlZGlyZWN0KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IG1ldHJpY3MuaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCA9IFdURk1vdmUoKmhhc0Nyb3NzT3JpZ2lu
UmVkaXJlY3QpOworCisgICAgaWYgKCEoZGVjb2Rlci5kZWNvZGUobWV0cmljcy5wcml2YWN5U3Rh
bmNlKQogICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnJlc3BvbnNlQm9keUJ5dGVz
UmVjZWl2ZWQpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVzcG9uc2VCb2R5
RGVjb2RlZFNpemUpOworICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnJlc3BvbnNl
Qm9keURlY29kZWRTaXplKSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0FkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJ
bnNwZWN0b3I7CisgICAgZGVjb2RlciA+PiBoYXNBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNz
Rm9yV2ViSW5zcGVjdG9yOworICAgIGlmICghaGFzQWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmlj
c0ZvcldlYkluc3BlY3RvcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAo
Kmhhc0FkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IpIHsKKyAgICAg
ICAgbWV0cmljcy5hZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yID0g
QWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcjo6ZGVjb2RlKGRlY29k
ZXIpOworICAgICAgICBpZiAoIW1ldHJpY3MuYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0Zv
cldlYkluc3BlY3RvcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQor
ICAgIHJldHVybiBtZXRyaWNzOworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBB
ZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHByaW9yaXR5OworICAgIGVuY29k
ZXIgPDwgcmVtb3RlQWRkcmVzczsKKyAgICBlbmNvZGVyIDw8IGNvbm5lY3Rpb25JZGVudGlmaWVy
OworCisgICAgZW5jb2RlciA8PCB0bHNQcm90b2NvbDsKKyAgICBlbmNvZGVyIDw8IHRsc0NpcGhl
cjsKKworICAgIGVuY29kZXIgPDwgcmVxdWVzdEhlYWRlcnM7CisKKyAgICBlbmNvZGVyIDw8IHJl
cXVlc3RIZWFkZXJCeXRlc1NlbnQ7CisgICAgZW5jb2RlciA8PCByZXNwb25zZUhlYWRlckJ5dGVz
UmVjZWl2ZWQ7CisgICAgZW5jb2RlciA8PCByZXF1ZXN0Qm9keUJ5dGVzU2VudDsKK30KKwordGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK1JlZlB0cjxBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNz
Rm9yV2ViSW5zcGVjdG9yPiBBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVj
dG9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdv
cmtMb2FkUHJpb3JpdHk+IHByaW9yaXR5OworICAgIGRlY29kZXIgPj4gcHJpb3JpdHk7CisgICAg
aWYgKCFwcmlvcml0eSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IHJlbW90ZUFkZHJlc3M7CisgICAgZGVjb2RlciA+PiByZW1vdGVBZGRy
ZXNzOworICAgIGlmICghcmVtb3RlQWRkcmVzcykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgZGVj
b2RlciA+PiBjb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlm
aWVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiB0bHNQcm90b2NvbDsKKyAgICBkZWNvZGVyID4+IHRsc1Byb3RvY29sOworICAgIGlmICghdGxz
UHJvdG9jb2wpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IHRsc0NpcGhlcjsKKyAgICBkZWNvZGVyID4+IHRsc0NpcGhlcjsKKyAgICBpZiAoIXRs
c0NpcGhlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEhU
VFBIZWFkZXJNYXA+IHJlcXVlc3RIZWFkZXJzOworICAgIGRlY29kZXIgPj4gcmVxdWVzdEhlYWRl
cnM7CisgICAgaWYgKCFyZXF1ZXN0SGVhZGVycykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiByZXF1ZXN0SGVhZGVyQnl0ZXNTZW50OworICAg
IGRlY29kZXIgPj4gcmVxdWVzdEhlYWRlckJ5dGVzU2VudDsKKyAgICBpZiAoIXJlcXVlc3RIZWFk
ZXJCeXRlc1NlbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gcmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkOworICAgIGRlY29kZXIgPj4g
cmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkOworICAgIGlmICghcmVzcG9uc2VIZWFkZXJCeXRl
c1JlY2VpdmVkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHJlcXVlc3RCb2R5Qnl0ZXNTZW50OworICAgIGRlY29kZXIgPj4gcmVxdWVzdEJv
ZHlCeXRlc1NlbnQ7CisgICAgaWYgKCFyZXF1ZXN0Qm9keUJ5dGVzU2VudCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGRlY29kZWQgPSBhZG9wdFJlZigqbmV3IEFkZGl0aW9u
YWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IpOworICAgIGRlY29kZWQtPnByaW9y
aXR5ID0gV1RGTW92ZSgqcHJpb3JpdHkpOworICAgIGRlY29kZWQtPnJlbW90ZUFkZHJlc3MgPSBX
VEZNb3ZlKCpyZW1vdGVBZGRyZXNzKTsKKyAgICBkZWNvZGVkLT5jb25uZWN0aW9uSWRlbnRpZmll
ciA9IFdURk1vdmUoKmNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICBkZWNvZGVkLT50bHNQcm90
b2NvbCA9IFdURk1vdmUoKnRsc1Byb3RvY29sKTsKKyAgICBkZWNvZGVkLT50bHNDaXBoZXIgPSBX
VEZNb3ZlKCp0bHNDaXBoZXIpOworICAgIGRlY29kZWQtPnJlcXVlc3RIZWFkZXJzID0gV1RGTW92
ZSgqcmVxdWVzdEhlYWRlcnMpOworICAgIGRlY29kZWQtPnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQg
PSBXVEZNb3ZlKCpyZXF1ZXN0SGVhZGVyQnl0ZXNTZW50KTsKKyAgICBkZWNvZGVkLT5yZXNwb25z
ZUhlYWRlckJ5dGVzUmVjZWl2ZWQgPSBXVEZNb3ZlKCpyZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2
ZWQpOworICAgIGRlY29kZWQtPnJlcXVlc3RCb2R5Qnl0ZXNTZW50ID0gV1RGTW92ZSgqcmVxdWVz
dEJvZHlCeXRlc1NlbnQpOworICAgIHJldHVybiBkZWNvZGVkOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkBAIC0zMDMsNCArMzYwLDE0IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6UHJpdmFjeVN0YW5jZT4gewogICAgID47CiB9OwogCit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHk+IHsKKyAgICB1c2lu
ZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9y
aXR5LAorICAgICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5OjpMb3csCisgICAgICAg
IFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHk6Ok1lZGl1bSwKKyAgICAgICAgV2ViQ29yZTo6
TmV0d29ya0xvYWRQcmlvcml0eTo6SGlnaCwKKyAgICAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRQ
cmlvcml0eTo6VW5rbm93bgorICAgID47Cit9OworCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IDYx
MzYwMDU0MjA5MC4uOTUwZTgyNjdlMmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtODAyLDcgKzgw
Miw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmxhenlJbml0KEluaXRMZXZlbCBpbml0
TGV2ZWwpIGNvbnN0CiAgICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlc3BvbnNlKj4oc3RhdGljX2Nh
c3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpKS0+cGxhdGZvcm1MYXp5SW5pdChpbml0
TGV2ZWwpOwogfQogCi1ib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpCitib29sIFJlc291
cmNlUmVzcG9uc2VCYXNlOjplcXVhbEZvcldlYktpdExlZ2FjeUNoYWxsZW5nZUNvbXBhcmlzb24o
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikKIHsK
ICAgICBpZiAoYS5pc051bGwoKSAhPSBiLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
ICAKQEAgLTgyMiwxNiArODIyLDYgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFy
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3AKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmIChhLmh0dHBIZWFkZXJGaWVsZHMoKSAhPSBiLmh0dHBIZWFk
ZXJGaWVsZHMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLm1fbmV0d29ya0xv
YWRNZXRyaWNzLmdldCgpICE9IGIubV9uZXR3b3JrTG9hZE1ldHJpY3MuZ2V0KCkpIHsKLSAgICAg
ICAgaWYgKCFhLm1fbmV0d29ya0xvYWRNZXRyaWNzKSB7Ci0gICAgICAgICAgICBpZiAoTmV0d29y
a0xvYWRNZXRyaWNzKCkgIT0gKmIubV9uZXR3b3JrTG9hZE1ldHJpY3MuZ2V0KCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9IGVsc2UgaWYgKCFiLm1fbmV0d29ya0xv
YWRNZXRyaWNzKSB7Ci0gICAgICAgICAgICBpZiAoTmV0d29ya0xvYWRNZXRyaWNzKCkgIT0gKmEu
bV9uZXR3b3JrTG9hZE1ldHJpY3MuZ2V0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9IGVsc2UgaWYgKCphLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpICE9ICpi
Lm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KICAgICByZXR1cm4gUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGEsIGIp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggMTc2YjczN2RhNTNiLi4yNjJlNTMxODBkNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmgKQEAgLTIwOSw3ICsyMDksNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVzb3VyY2VSZXNwb25zZSBzeW50aGV0aWNSZWRpcmVjdFJlc3BvbnNlKGNvbnN0
IFVSTCYgZnJvbVVSTCwgY29uc3QgVVJMJiB0b1VSTCk7CiAKLSAgICBzdGF0aWMgYm9vbCBjb21w
YXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Cisg
ICAgc3RhdGljIGJvb2wgZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZShEZWNvZGVyJiwgUmVzb3VyY2VSZXNwb25zZUJhc2UmKTsKQEAgLTI4NSw5ICsyODUsNiBA
QCBwcm90ZWN0ZWQ6CiAgICAgc2hvcnQgbV9odHRwU3RhdHVzQ29kZSB7IDAgfTsKIH07CiAKLWlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUo
YSwgYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
YSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gIShhID09IGIpOyB9Ci0KIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KaW5kZXggYmM0NGNiYjRj
YTE0Li45MDlkOTJmZGQwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCkBAIC01NzcsNyArNTc3LDcgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UKICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCByZWNl
aXZlZENyZWRlbnRpYWwiLCB0aGlzKTsKIAogICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgp
KTsKLSAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKKyAgICBp
ZiAoIUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFs
bGVuZ2VDb21wYXJpc29uKGNoYWxsZW5nZSwgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IFN1cHBvcnQgZW1wdHkgY3JlZGVudGlhbHMu
IEN1cnJlbnRseSwgYW4gZW1wdHkgY3JlZGVudGlhbCBjYW5ub3QgYmUgc3RvcmVkIGluIFdlYkNv
cmUgY3JlZGVudGlhbCBzdG9yYWdlLCBhcyB0aGF0J3MgZW1wdHkgdmFsdWUgZm9yIGl0cyBtYXAu
CkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0
VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2EKICAgICBMT0coTmV0
d29yaywgIkhhbmRsZSAlcCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRp
YWwiLCB0aGlzKTsKIAogICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKLSAgICBpZiAo
Y2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKKyAgICBpZiAoIUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJp
c29uKGNoYWxsZW5nZSwgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgW1tkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2Ugc2VuZGVyXSBjb250aW51ZVdpdGhv
dXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6ZC0+bV9jdXJyZW50TWFjQ2hh
bGxlbmdlXTsKQEAgLTYxOSw3ICs2MTksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZl
ZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbgogewog
ICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIHJlY2VpdmVkQ2FuY2VsbGF0aW9uIiwgdGhpcyk7
CiAKLSAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKKyAgICBp
ZiAoIUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFs
bGVuZ2VDb21wYXJpc29uKGNoYWxsZW5nZSwgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGNsaWVudCgpKQpAQCAtNjMxLDcgKzYzMSw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGlu
Zyhjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgcmVjZWl2
ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nIiwgdGhpcyk7CiAKICAgICBBU1NFUlQo
IWNoYWxsZW5nZS5pc051bGwoKSk7Ci0gICAgaWYgKGNoYWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRX
ZWJDaGFsbGVuZ2UpCisgICAgaWYgKCFBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFs
Rm9yV2ViS2l0TGVnYWN5Q2hhbGxlbmdlQ29tcGFyaXNvbihjaGFsbGVuZ2UsIGQtPm1fY3VycmVu
dFdlYkNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFtbZC0+bV9jdXJyZW50TWFj
Q2hhbGxlbmdlIHNlbmRlcl0gcGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOmQtPm1fY3VycmVudE1hY0NoYWxsZW5nZV07CkBAIC02NDQsNyArNjQ0LDcgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGMKICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCByZWNl
aXZlZENoYWxsZW5nZVJlamVjdGlvbiIsIHRoaXMpOwogCiAgICAgQVNTRVJUKCFjaGFsbGVuZ2Uu
aXNOdWxsKCkpOwotICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdl
KQorICAgIGlmICghQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjplcXVhbEZvcldlYktpdExl
Z2FjeUNoYWxsZW5nZUNvbXBhcmlzb24oY2hhbGxlbmdlLCBkLT5tX2N1cnJlbnRXZWJDaGFsbGVu
Z2UpKQogICAgICAgICByZXR1cm47CiAKICAgICBbW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBz
ZW5kZXJdIHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENoYWxsZW5nZTpkLT5t
X2N1cnJlbnRNYWNDaGFsbGVuZ2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZmQwMjVhYjU5ODMuLjExZTkwNGMx
NGEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wOC0yMCAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBzaXplb2Yo
TmV0d29ya0xvYWRNZXRyaWNzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2OTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRGb3JDYWNo
ZUVudHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0
YXNrOmRpZEZpbmlzaENvbGxlY3RpbmdNZXRyaWNzOl0pOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKwogMjAyMS0wOC0xOSAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgYW4gT2JqZWN0SWRlbnRpZmllcjw+IGZv
ciB0ZXh0IGNoZWNrZXIgcmVxdWVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA4MmYxZTUzMDE0NGYuLjIz
MGUxZjhhMDcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTIyNyw5ICsxMjI3LDEzIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya0NhY2hlCiAKICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29y
a0xvYWRNZXRyaWNzOwogICAgIG5ldHdvcmtMb2FkTWV0cmljcy5tYXJrQ29tcGxldGUoKTsKLSAg
ICBuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRlckJ5dGVzU2VudCA9IDA7Ci0gICAgbmV0
d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RCb2R5Qnl0ZXNTZW50ID0gMDsKLSAgICBuZXR3b3JrTG9h
ZE1ldHJpY3MucmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkID0gMDsKKyAgICBpZiAoc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkpIHsKKyAgICAgICAgYXV0byBhZGRpdGlv
bmFsTWV0cmljcyA9IGFkb3B0UmVmKCpuZXcgV2ViQ29yZTo6QWRkaXRpb25hbE5ldHdvcmtMb2Fk
TWV0cmljc0ZvcldlYkluc3BlY3Rvcik7CisgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1
ZXN0SGVhZGVyQnl0ZXNTZW50ID0gMDsKKyAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlcXVl
c3RCb2R5Qnl0ZXNTZW50ID0gMDsKKyAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlc3BvbnNl
SGVhZGVyQnl0ZXNSZWNlaXZlZCA9IDA7CisgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5hZGRp
dGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yID0gV1RGTW92ZShhZGRpdGlv
bmFsTWV0cmljcyk7CisgICAgfQogICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUJvZHlC
eXRlc1JlY2VpdmVkID0gMDsKICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5RGVj
b2RlZFNpemUgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMTM4YzRlOTI5MWQ1Li42ZTFj
NjViZDMwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTg3OCwyOCArODc4LDI5IEBAIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2VuZGlmCiAKICAgICAgICAgaWYgKG5ldHdv
cmtEYXRhVGFzay0+c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkpIHsKLSAg
ICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5wcmlvcml0eSA9IHRvTmV0d29ya0xvYWRQcmlv
cml0eSh0YXNrLnByaW9yaXR5KTsKKyAgICAgICAgICAgIGF1dG8gYWRkaXRpb25hbE1ldHJpY3Mg
PSBhZG9wdFJlZigqbmV3IFdlYkNvcmU6OkFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JX
ZWJJbnNwZWN0b3IpOworICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnByaW9yaXR5ID0g
dG9OZXR3b3JrTG9hZFByaW9yaXR5KHRhc2sucHJpb3JpdHkpOwogCiAjaWYgSEFWRShDRk5FVFdP
UktfTUVUUklDU19BUElTX1Y0KQogICAgICAgICAgICAgaWYgKGF1dG8gcG9ydCA9IFttLnJlbW90
ZVBvcnQgdW5zaWduZWRJbnRWYWx1ZV0pCi0gICAgICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRy
aWNzLnJlbW90ZUFkZHJlc3MgPSBtYWtlU3RyaW5nKFN0cmluZyhtLnJlbW90ZUFkZHJlc3MpLCAn
OicsIHBvcnQpOworICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZW1vdGVBZGRy
ZXNzID0gbWFrZVN0cmluZyhTdHJpbmcobS5yZW1vdGVBZGRyZXNzKSwgJzonLCBwb3J0KTsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVtb3Rl
QWRkcmVzcyA9IG0ucmVtb3RlQWRkcmVzczsKKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWV0
cmljcy0+cmVtb3RlQWRkcmVzcyA9IG0ucmVtb3RlQWRkcmVzczsKICNlbHNlCiAgICAgICAgICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAgICAgbmV0d29y
a0xvYWRNZXRyaWNzLnJlbW90ZUFkZHJlc3MgPSBTdHJpbmcobS5fcmVtb3RlQWRkcmVzc0FuZFBv
cnQpOworICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlbW90ZUFkZHJlc3MgPSBTdHJp
bmcobS5fcmVtb3RlQWRkcmVzc0FuZFBvcnQpOwogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKLSAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmlj
cy5jb25uZWN0aW9uSWRlbnRpZmllciA9IFN0cmluZyhbbS5fY29ubmVjdGlvbklkZW50aWZpZXIg
VVVJRFN0cmluZ10pOworICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPmNvbm5lY3Rpb25J
ZGVudGlmaWVyID0gU3RyaW5nKFttLl9jb25uZWN0aW9uSWRlbnRpZmllciBVVUlEU3RyaW5nXSk7
CiAKICNpZiBIQVZFKENGTkVUV09SS19ORUdPVElBVEVEX1NTTF9QUk9UT0NPTF9DSVBIRVIpCiAj
aWYgSEFWRShDRk5FVFdPUktfTUVUUklDU19BUElTX1Y0KQotICAgICAgICAgICAgbmV0d29ya0xv
YWRNZXRyaWNzLnRsc1Byb3RvY29sID0gc3RyaW5nRm9yVExTUHJvdG9jb2xWZXJzaW9uKCh0bHNf
cHJvdG9jb2xfdmVyc2lvbl90KVttLm5lZ290aWF0ZWRUTFNQcm90b2NvbFZlcnNpb24gdW5zaWdu
ZWRTaG9ydFZhbHVlXSk7Ci0gICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MudGxzQ2lwaGVy
ID0gc3RyaW5nRm9yVExTQ2lwaGVyU3VpdGUoKHRsc19jaXBoZXJzdWl0ZV90KVttLm5lZ290aWF0
ZWRUTFNDaXBoZXJTdWl0ZSB1bnNpZ25lZFNob3J0VmFsdWVdKTsKKyAgICAgICAgICAgIGFkZGl0
aW9uYWxNZXRyaWNzLT50bHNQcm90b2NvbCA9IHN0cmluZ0ZvclRMU1Byb3RvY29sVmVyc2lvbigo
dGxzX3Byb3RvY29sX3ZlcnNpb25fdClbbS5uZWdvdGlhdGVkVExTUHJvdG9jb2xWZXJzaW9uIHVu
c2lnbmVkU2hvcnRWYWx1ZV0pOworICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnRsc0Np
cGhlciA9IHN0cmluZ0ZvclRMU0NpcGhlclN1aXRlKCh0bHNfY2lwaGVyc3VpdGVfdClbbS5uZWdv
dGlhdGVkVExTQ2lwaGVyU3VpdGUgdW5zaWduZWRTaG9ydFZhbHVlXSk7CiAjZWxzZQogICAgICAg
ICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAgIG5l
dHdvcmtMb2FkTWV0cmljcy50bHNQcm90b2NvbCA9IHN0cmluZ0ZvclNTTFByb3RvY29sKG0uX25l
Z290aWF0ZWRUTFNQcm90b2NvbCk7Ci0gICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MudGxz
Q2lwaGVyID0gc3RyaW5nRm9yU1NMQ2lwaGVyKG0uX25lZ290aWF0ZWRUTFNDaXBoZXIpOworICAg
ICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnRsc1Byb3RvY29sID0gc3RyaW5nRm9yU1NMUHJv
dG9jb2wobS5fbmVnb3RpYXRlZFRMU1Byb3RvY29sKTsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxN
ZXRyaWNzLT50bHNDaXBoZXIgPSBzdHJpbmdGb3JTU0xDaXBoZXIobS5fbmVnb3RpYXRlZFRMU0Np
cGhlcik7CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNl
bmRpZgogI2VuZGlmCkBAIC05MDgsNyArOTA5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAgICAgICAgICAgICBbbS5yZXF1ZXN0LmFsbEhUVFBIZWFkZXJGaWVsZHMgZW51
bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKm5hbWUsIE5TU3RyaW5n
ICp2YWx1ZSwgQk9PTCAqKSB7CiAgICAgICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMuc2V0KFN0
cmluZyhuYW1lKSwgU3RyaW5nKHZhbHVlKSk7CiAgICAgICAgICAgICB9XTsKLSAgICAgICAgICAg
IG5ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0SGVhZGVycyA9IFdURk1vdmUocmVxdWVzdEhlYWRl
cnMpOworICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlcXVlc3RIZWFkZXJzID0gV1RG
TW92ZShyZXF1ZXN0SGVhZGVycyk7CiAKICAgICAgICAgICAgIHVpbnQ2NF90IHJlcXVlc3RIZWFk
ZXJCeXRlc1NlbnQgPSAwOwogICAgICAgICAgICAgdWludDY0X3QgcmVzcG9uc2VIZWFkZXJCeXRl
c1JlY2VpdmVkID0gMDsKQEAgLTkyNSw5ICs5MjYsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAjZW5kaWYKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbmV0d29y
a0xvYWRNZXRyaWNzLnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQgPSByZXF1ZXN0SGVhZGVyQnl0ZXNT
ZW50OwotICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RCb2R5Qnl0ZXNTZW50
ID0gdGFzay5jb3VudE9mQnl0ZXNTZW50OwotICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNz
LnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCA9IHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZl
ZDsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50
ID0gcmVxdWVzdEhlYWRlckJ5dGVzU2VudDsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNz
LT5yZXF1ZXN0Qm9keUJ5dGVzU2VudCA9IHRhc2suY291bnRPZkJ5dGVzU2VudDsKKyAgICAgICAg
ICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQgPSByZXNw
b25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQ7CisgICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3Mu
YWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvciA9IFdURk1vdmUoYWRk
aXRpb25hbE1ldHJpY3MpOwogICAgICAgICB9CiAjaWYgSEFWRShDRk5FVFdPUktfTUVUUklDU19B
UElTX1Y0KQogICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5Qnl0ZXNSZWNl
aXZlZCA9IG0uY291bnRPZlJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAKaW5kZXggZmFmMTk2MzI1MzAxLi44ZmNkMGYwN2RlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAK
QEAgLTExODQsNiArMTE4NCwxMyBAQCBzdGF0aWMgQXRvbVN0cmluZyBzb3VwSFRUUFZlcnNpb25U
b1N0cmluZyhTb3VwSFRUUFZlcnNpb24gdmVyc2lvbikKICAgICByZXR1cm4geyB9OwogfQogCitX
ZWJDb3JlOjpBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yJiBOZXR3
b3JrRGF0YVRhc2tTb3VwOjphZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVj
dG9yKCkKK3sKKyAgICBpZiAoIW1fbmV0d29ya0xvYWRNZXRyaWNzLmFkZGl0aW9uYWxOZXR3b3Jr
TG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IpCisgICAgICAgIG1fbmV0d29ya0xvYWRNZXRyaWNz
LmFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IgPSBhZG9wdFJlZigq
bmV3IFdlYkNvcmU6OkFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3Ip
OworICAgIHJldHVybiAqbV9uZXR3b3JrTG9hZE1ldHJpY3MuYWRkaXRpb25hbE5ldHdvcmtMb2Fk
TWV0cmljc0ZvcldlYkluc3BlY3RvcjsKK30KKwogdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpk
aWRHZXRIZWFkZXJzKCkKIHsKICAgICAvLyBXZSBhcmUgYSBiaXQgbW9yZSBjb25zZXJ2YXRpdmUg
d2l0aCB0aGUgcGVyc2lzdGVudCBjcmVkZW50aWFsIHN0b3JhZ2UgdGhhbiB0aGUgc2Vzc2lvbiBz
dG9yZSwKQEAgLTEyMDcsNiArMTIxNCw4IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlk
R2V0SGVhZGVycygpCiAgICAgLy8gaXMgdGhlIGZpcnN0IG9uZSB3ZSByZWNlaXZlIGFmdGVyIHN0
YXJ0aW5nLCBzbyB3ZSB1c2UgaXQgYWxzbyB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlCiAg
ICAgLy8gcmVxdWVzdCBoZWFkZXJzLgogICAgIGlmIChzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3MoKSkgeworICAgICAgICBhdXRvJiBhZGRpdGlvbmFsTWV0cmljcyA9IGFkZGl0
aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IoKTsKKwogICAgICAgICBIVFRQ
SGVhZGVyTWFwIHJlcXVlc3RIZWFkZXJzOwogICAgICAgICBTb3VwTWVzc2FnZUhlYWRlcnNJdGVy
IGhlYWRlcnNJdGVyOwogICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19pdGVyX2luaXQoJmhl
YWRlcnNJdGVyLCBzb3VwX21lc3NhZ2VfZ2V0X3JlcXVlc3RfaGVhZGVycyhtX3NvdXBNZXNzYWdl
LmdldCgpKSk7CkBAIC0xMjE0LDE3ICsxMjIzLDE3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6ZGlkR2V0SGVhZGVycygpCiAgICAgICAgIGNvbnN0IGNoYXIqIGhlYWRlclZhbHVlOwogICAg
ICAgICB3aGlsZSAoc291cF9tZXNzYWdlX2hlYWRlcnNfaXRlcl9uZXh0KCZoZWFkZXJzSXRlciwg
JmhlYWRlck5hbWUsICZoZWFkZXJWYWx1ZSkpCiAgICAgICAgICAgICByZXF1ZXN0SGVhZGVycy5z
ZXQoU3RyaW5nKGhlYWRlck5hbWUpLCBTdHJpbmcoaGVhZGVyVmFsdWUpKTsKLSAgICAgICAgbV9u
ZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRlcnMgPSBXVEZNb3ZlKHJlcXVlc3RIZWFkZXJz
KTsKKyAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MucmVxdWVzdEhlYWRlcnMgPSBXVEZNb3ZlKHJl
cXVlc3RIZWFkZXJzKTsKIAotICAgICAgICBtX25ldHdvcmtMb2FkTWV0cmljcy5wcmlvcml0eSA9
IHRvTmV0d29ya0xvYWRQcmlvcml0eShzb3VwX21lc3NhZ2VfZ2V0X3ByaW9yaXR5KG1fc291cE1l
c3NhZ2UuZ2V0KCkpKTsKKyAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MucHJpb3JpdHkgPSB0b05l
dHdvcmtMb2FkUHJpb3JpdHkoc291cF9tZXNzYWdlX2dldF9wcmlvcml0eShtX3NvdXBNZXNzYWdl
LmdldCgpKSk7CiAjaWYgIVVTRShTT1VQMikKLSAgICAgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3Mu
Y29ubmVjdGlvbklkZW50aWZpZXIgPSBTdHJpbmc6Om51bWJlcihzb3VwX21lc3NhZ2VfZ2V0X2Nv
bm5lY3Rpb25faWQobV9zb3VwTWVzc2FnZS5nZXQoKSkpOworICAgICAgICBhZGRpdGlvbmFsTWV0
cmljcy5jb25uZWN0aW9uSWRlbnRpZmllciA9IFN0cmluZzo6bnVtYmVyKHNvdXBfbWVzc2FnZV9n
ZXRfY29ubmVjdGlvbl9pZChtX3NvdXBNZXNzYWdlLmdldCgpKSk7CiAgICAgICAgIGF1dG8qIGFk
ZHJlc3MgPSBzb3VwX21lc3NhZ2VfZ2V0X3JlbW90ZV9hZGRyZXNzKG1fc291cE1lc3NhZ2UuZ2V0
KCkpOwogICAgICAgICBpZiAoR19JU19JTkVUX1NPQ0tFVF9BRERSRVNTKGFkZHJlc3MpKSB7CiAg
ICAgICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGlwQWRkcmVzcyhnX2luZXRfYWRkcmVzc190b19z
dHJpbmcoZ19pbmV0X3NvY2tldF9hZGRyZXNzX2dldF9hZGRyZXNzKEdfSU5FVF9TT0NLRVRfQURE
UkVTUyhhZGRyZXNzKSkpKTsKLSAgICAgICAgICAgIG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlbW90
ZUFkZHJlc3MgPSBtYWtlU3RyaW5nKGlwQWRkcmVzcy5nZXQoKSwgJzonLCBnX2luZXRfc29ja2V0
X2FkZHJlc3NfZ2V0X3BvcnQoR19JTkVUX1NPQ0tFVF9BRERSRVNTKGFkZHJlc3MpKSk7CisgICAg
ICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy5yZW1vdGVBZGRyZXNzID0gbWFrZVN0cmluZyhpcEFk
ZHJlc3MuZ2V0KCksICc6JywgZ19pbmV0X3NvY2tldF9hZGRyZXNzX2dldF9wb3J0KEdfSU5FVF9T
T0NLRVRfQUREUkVTUyhhZGRyZXNzKSkpOwogICAgICAgICB9Ci0gICAgICAgIG1fbmV0d29ya0xv
YWRNZXRyaWNzLnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCA9IHNvdXBfbWVzc2FnZV9tZXRy
aWNzX2dldF9yZXNwb25zZV9oZWFkZXJfYnl0ZXNfcmVjZWl2ZWQobWV0cmljcyk7CisgICAgICAg
IGFkZGl0aW9uYWxNZXRyaWNzLnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCA9IHNvdXBfbWVz
c2FnZV9tZXRyaWNzX2dldF9yZXNwb25zZV9oZWFkZXJfYnl0ZXNfcmVjZWl2ZWQobWV0cmljcyk7
CiAjZW5kaWYKICAgICB9CiAKQEAgLTEyNDAsNyArMTI0OSw3IEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrU291cDo6d3JvdGVIZWFkZXJzQ2FsbGJhY2soU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBO
ZXR3b3JrCiAgICAgfQogICAgIEFTU0VSVCh0YXNrLT5tX3NvdXBNZXNzYWdlLmdldCgpID09IHNv
dXBNZXNzYWdlKTsKICAgICBhdXRvKiBtZXRyaWNzID0gc291cF9tZXNzYWdlX2dldF9tZXRyaWNz
KHNvdXBNZXNzYWdlKTsKLSAgICB0YXNrLT5tX25ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0SGVh
ZGVyQnl0ZXNTZW50ID0gc291cF9tZXNzYWdlX21ldHJpY3NfZ2V0X3JlcXVlc3RfaGVhZGVyX2J5
dGVzX3NlbnQobWV0cmljcyk7CisgICAgdGFzay0+YWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmlj
c0ZvcldlYkluc3BlY3RvcigpLnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQgPSBzb3VwX21lc3NhZ2Vf
bWV0cmljc19nZXRfcmVxdWVzdF9oZWFkZXJfYnl0ZXNfc2VudChtZXRyaWNzKTsKIH0KIAogdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjp3cm90ZUJvZHlDYWxsYmFjayhTb3VwTWVzc2FnZSogc291
cE1lc3NhZ2UsIE5ldHdvcmtEYXRhVGFza1NvdXAqIHRhc2spCkBAIC0xMjUxLDcgKzEyNjAsNyBA
QCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Ondyb3RlQm9keUNhbGxiYWNrKFNvdXBNZXNzYWdl
KiBzb3VwTWVzc2FnZSwgTmV0d29ya0RhdAogICAgIH0KICAgICBBU1NFUlQodGFzay0+bV9zb3Vw
TWVzc2FnZS5nZXQoKSA9PSBzb3VwTWVzc2FnZSk7CiAgICAgYXV0byogbWV0cmljcyA9IHNvdXBf
bWVzc2FnZV9nZXRfbWV0cmljcyhzb3VwTWVzc2FnZSk7Ci0gICAgdGFzay0+bV9uZXR3b3JrTG9h
ZE1ldHJpY3MucmVxdWVzdEJvZHlCeXRlc1NlbnQgPSBzb3VwX21lc3NhZ2VfbWV0cmljc19nZXRf
cmVxdWVzdF9ib2R5X2J5dGVzX3NlbnQobWV0cmljcyk7CisgICAgdGFzay0+YWRkaXRpb25hbE5l
dHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcigpLnJlcXVlc3RCb2R5Qnl0ZXNTZW50ID0g
c291cF9tZXNzYWdlX21ldHJpY3NfZ2V0X3JlcXVlc3RfYm9keV9ieXRlc19zZW50KG1ldHJpY3Mp
OwogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmdvdEJvZHlDYWxsYmFjayhTb3VwTWVz
c2FnZSogc291cE1lc3NhZ2UsIE5ldHdvcmtEYXRhVGFza1NvdXAqIHRhc2spCkBAIC0xNDg3LDcg
KzE0OTYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Om5ldHdvcmtFdmVudChHU29ja2V0
Q2xpZW50RXZlbnQgZXZlbnQsIEdJT1N0cmVhbSogc3RyZQogICAgICAgICAgICAgR1JlZlB0cjxH
U29ja2V0QWRkcmVzcz4gYWRkcmVzcyA9IGFkb3B0R1JlZihnX3NvY2tldF9jb25uZWN0aW9uX2dl
dF9yZW1vdGVfYWRkcmVzcyhHX1NPQ0tFVF9DT05ORUNUSU9OKHN0cmVhbSksIG51bGxwdHIpKTsK
ICAgICAgICAgICAgIGlmIChHX0lTX0lORVRfU09DS0VUX0FERFJFU1MoYWRkcmVzcy5nZXQoKSkp
IHsKICAgICAgICAgICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGlwQWRkcmVzcyhnX2luZXRfYWRk
cmVzc190b19zdHJpbmcoZ19pbmV0X3NvY2tldF9hZGRyZXNzX2dldF9hZGRyZXNzKEdfSU5FVF9T
T0NLRVRfQUREUkVTUyhhZGRyZXNzLmdldCgpKSkpKTsKLSAgICAgICAgICAgICAgICBtX25ldHdv
cmtMb2FkTWV0cmljcy5yZW1vdGVBZGRyZXNzID0gbWFrZVN0cmluZyhpcEFkZHJlc3MuZ2V0KCks
ICc6JywgZ19pbmV0X3NvY2tldF9hZGRyZXNzX2dldF9wb3J0KEdfSU5FVF9TT0NLRVRfQUREUkVT
UyhhZGRyZXNzLmdldCgpKSkpOworICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxOZXR3b3JrTG9h
ZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IoKS5yZW1vdGVBZGRyZXNzID0gbWFrZVN0cmluZyhpcEFk
ZHJlc3MuZ2V0KCksICc6JywgZ19pbmV0X3NvY2tldF9hZGRyZXNzX2dldF9wb3J0KEdfSU5FVF9T
T0NLRVRfQUREUkVTUyhhZGRyZXNzLmdldCgpKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICAgIC8vIFdlYiBUaW1pbmcgY29uc2lkZXJzIHRoYXQgY29ubmVjdGlvbiB0aW1lIGlu
dm9sdmVzIGRucywgcHJveHkgJiBUTFMgbmVnb3RpYXRpb24uLi4KQEAgLTE2MDYsNyArMTYxNSw3
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6cmVzdGFydGVkQ2FsbGJhY2soU291cE1lc3Nh
Z2UqIHNvdXBNZXNzYWdlLCBOZXR3b3JrRGF0CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6
ZGlkUmVzdGFydCgpCiB7Ci0gICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MgPSB7IH07CisgICAgbV9u
ZXR3b3JrTG9hZE1ldHJpY3MgPSBOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcygpOwog
I2lmIFVTRShTT1VQMikKICAgICBtX25ldHdvcmtMb2FkTWV0cmljcy5mZXRjaFN0YXJ0ID0gTW9u
b3RvbmljVGltZTo6bm93KCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgKaW5kZXggYzMzMzA2NTFkNjYy
Li5jZmVkNmIzODI2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaApAQCAtMTgxLDYgKzE4MSw4IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGF0
YVVSTERlY29kZXI6OlJlc3VsdD4mJik7CiAKKyAgICBXZWJDb3JlOjpBZGRpdGlvbmFsTmV0d29y
a0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yJiBhZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNz
Rm9yV2ViSW5zcGVjdG9yKCk7CisKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbV9mcmFt
ZUlEOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIFN0YXRlIG1f
c3RhdGUgeyBTdGF0ZTo6U3VzcGVuZGVkIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCmluZGV4IGU3MDRlY2I4ODE0Yy4uNTYyOGE3YzdjMGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtOTAzLDE2
ICs5MDMsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OklucHV0TW9k
ZT4gewogICAgID47CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
Ok5ldHdvcmtMb2FkUHJpb3JpdHk+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAot
ICAgICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5LAotICAgICAgICBXZWJDb3JlOjpO
ZXR3b3JrTG9hZFByaW9yaXR5OjpMb3csCi0gICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJp
b3JpdHk6Ok1lZGl1bSwKLSAgICAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eTo6SGln
aCwKLSAgICAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eTo6VW5rbm93bgotICAgID47
Ci19OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkRpcmVjdGlvbj4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRpcmVjdGlvbiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436357</attachid>
            <date>2021-08-24 18:02:33 -0700</date>
            <delta_ts>2021-08-24 19:26:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226982-20210825100232.patch</filename>
            <type>text/plain</type>
            <size>61854</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc0NWU3MGQ0MDE2ZGVk
MGIyYTQxY2Q3ZmQ5N2NhM2Y1ZjAzMmE0ZS4uZTg0NDU4OGFjODEwZWE4NjE3OWJmNTRjZTUwNWY2
YjQ0NjVjNzI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIxLTA4LTI0ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNl
IHNpemVvZihOZXR3b3JrTG9hZE1ldHJpY3MpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuICBKdXN0IGdyZWF0bHkg
cmVkdWNpbmcgdGhlIHNpemUgb2YgYSBjb21tb24gc3RydWN0dXJlLgorCisgICAgICAgIFdlIHRh
a2UgYWxsIHRoZSBtZW1iZXJzIHRoYXQgYXJlbid0IHVzZWQgd2l0aG91dCB0aGUgaW5zcGVjdG9y
IGFuZCBtb3ZlIHRoZW0gdG8gYSBuZXcgc3RydWN0LAorICAgICAgICBBZGRpdGlvbmFsTmV0d29y
a0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yLiAgV2UgYWxzbyByZW1vdmUgc29tZSBlcXVhbGl0
eSBjb21wYXJpc29uIHRoYXQKKyAgICAgICAgd2FzIHVubmVjZXNzYXJ5IGJlY2F1c2UgaXQgd2Fz
IG9ubHkgdXNlZCBmb3IgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgZXF1YWxpdHkgY29tcGFyaXNv
bnMgaW4KKyAgICAgICAgUmVzb3VyY2VIYW5kbGVNYWMuICBXZSBhbHNvIHVzZSBlbXB0eU1ldHJp
Y3MoKSB0byByZW1vdmUgYSBmZXcgdW5uZWNlc3NhcnkgYW5kIGhhcmQgdG8gc2VlCisgICAgICAg
IGNvcHkgY29uc3RydWN0b3IgY2FsbHMuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvck1ldHJpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvclJlc291cmNlUmVz
cG9uc2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFsRm9yV2ViS2l0TGVnYWN5Q2hh
bGxlbmdlQ29tcGFyaXNvbik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUJhc2U6OmNvbXBhcmUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
cj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6Ok5ldHdvcmtMb2FkTWV0cmlj
cyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcyk6
CisgICAgICAgIChXZWJDb3JlOjpBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5z
cGVjdG9yOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0
d29ya0xvYWRNZXRyaWNzLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9y
V2ViSW5zcGVjdG9yOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWRkaXRpb25h
bE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcjo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljc1dpdGhvdXROb25UaW1pbmdEYXRhOjppc0NvbXBsZXRl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljc1dp
dGhvdXROb25UaW1pbmdEYXRhOjptYXJrQ29tcGxldGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjpOZXR3b3JrTG9hZE1ldHJpY3MpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjppc29sYXRlZENvcHkgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjpvcGVyYXRv
cj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
czo6b3BlcmF0b3IhPSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9w
ZXJhdG9yIT0pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsSGFuZGxlOjphZGRFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpuZXR3b3JrTG9hZE1ldHJp
Y3MpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlh
bCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9D
b250aW51ZVdpdGhvdXRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0
SGFuZGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hh
bGxlbmdlUmVqZWN0aW9uKToKKwogMjAyMS0wOC0yMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnRyb2wgY2hhcmFjdGVycyAoVW5pY29kZSBj
YXRlZ29yeSBDYykgc2hvdWxkIGJlIHJlbmRlcmVkIHZpc2libHkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzhkNzdl
ZDY3ZTQwZDVmNGYzNDUwODg0ODQ1MTY1Y2Y0NzNhMmVlZi4uMWY5MTY1NDBlNGVlNmJjZWE3ZWVl
ODViZTI3YTE0ZjY4ZWQxNmI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wOC0y
NCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlZHVjZSBzaXplb2YoTmV0d29ya0xvYWRNZXRyaWNzKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNl
bmRSZXN1bHRGb3JDYWNoZUVudHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdh
dGUgVVJMU2Vzc2lvbjp0YXNrOmRpZEZpbmlzaENvbGxlY3RpbmdNZXRyaWNzOl0pOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJp
Y3NGb3JXZWJJbnNwZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3Vw
OjpkaWRHZXRIZWFkZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6
d3JvdGVIZWFkZXJzQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tT
b3VwOjp3cm90ZUJvZHlDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFz
a1NvdXA6Om5ldHdvcmtFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1Nv
dXA6OmRpZFJlc3RhcnQpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aDoKKwogMjAyMS0wOC0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBGaXggYW5kIHJlZW5hYmxlIHNldmVyYWwgbGF5b3V0IHRlc3RzIHRv
IGFjY291bnQgZm9yIHRoZSBjaGFuZ2VzIGluIHJkYXI6Ly84MDM4NDU2NApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCAwM2UxMmE3YTc4NzIzMWQ2YTg5ZWMzNzVhZmE1YzQ3ZGMxNmYyOWMzLi4yMTNmNTAyNTZk
NjQxM2IwZTcyZTlhODNiMTdlM2UzM2I2ZmNlMDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjA4NCw2
ICsyMDg0LDcgQEAgcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAogcGxhdGZvcm0v
bmV0d29yay9IVFRQSGVhZGVyVmFsdWVzLmNwcAogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5jcHAKIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKK3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya0xvYWRNZXRyaWNzLmNwcAogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3Rp
Zmllci5jcHAKIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAogcGxh
dGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFuZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjA5MzZhMGQ0NTlmMjQx
YmU1MmE3YTFlYzRmYzg2YzczNzYxNzNmYi4uNWQyNDRiYjM5NmZkZTQ3N2I5ZDM0MDdjMzdhOGY4
MDg2ZTM1YjE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtOTY2MCw2ICs5NjYwLDcgQEAKIAkJNUM5RUYyRjIyMUYwNjE3MTAw
M0JEQzU2IC8qIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1Q0ExREVDMjFGNzFFNjg2MDBFNzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUVFBIZWFkZXJGaWVsZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTFERUM0MUY3MUU2ODcwMEU3MUJE
MyAvKiBIVFRQSGVhZGVyRmllbGQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SFRUUEhlYWRlckZpZWxkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQUM1RDA4
MjZDRUYwMDEwMEJBRkQxNCAvKiBOZXR3b3JrTG9hZE1ldHJpY3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0xvYWRNZXRyaWNzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMzdGRkMxQzYyRDI3ODAwRjIwMTg4IC8qIFNjcm9sbEFu
aW1hdG9yTW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3Jv
bGxBbmltYXRvck1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IzN0ZG
RDFDNjJEMjc4MDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yTW9jay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1Q0JDOERBQTFBQUEzMDIyMDBFMUM4MDMgLyogTWVkaWFBY2Nlc3NpYmls
aXR5U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVk
aWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjE2OTcsNiArMjE2OTgsNyBAQAogCQkJCTUxNEM3NjVFMENFOTIzQTEwMDdFRjNDRCAvKiBI
VFRQUGFyc2Vycy5oICovLAogCQkJCTYyOEQyMTRCMTIxMzFFRDEwMDU1RENGQyAvKiBOZXR3b3Jr
aW5nQ29udGV4dC5oICovLAogCQkJCTQxNkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAvKiBOZXR3b3Jr
TG9hZEluZm9ybWF0aW9uLmggKi8sCisJCQkJNUNBQzVEMDgyNkNFRjAwMTAwQkFGRDE0IC8qIE5l
dHdvcmtMb2FkTWV0cmljcy5jcHAgKi8sCiAJCQkJOEE4MUJGODQxMURDRkQ5MDAwREEyQjk4IC8q
IE5ldHdvcmtMb2FkTWV0cmljcy5oICovLAogCQkJCTFBN0ZBNjFBMEREQTNCQkUwMDI4RjhBNSAv
KiBOZXR3b3JrU3RhdGVOb3RpZmllci5jcHAgKi8sCiAJCQkJMUE3RkE2MTgwRERBM0IzQTAwMjhG
OEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXgg
Nzk0ODg1MmRkOWE2YmM0MmI0MDExNjk0MWNlMDM0NmMzMmUxNmYyZC4uNjI0NjU1ODg4MTk1ODMy
ZGZlYzgxMGJhNjg1OTZmMTk2ZGNmODBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMjYzLDIx
ICsyNjMsMjIgQEAgUmVmPFByb3RvY29sOjpOZXR3b3JrOjpNZXRyaWNzPiBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTWV0cmljcyhjb24KIAogICAgIGlmICghbmV0d29ya0xv
YWRNZXRyaWNzLnByb3RvY29sLmlzTnVsbCgpKQogICAgICAgICBtZXRyaWNzLT5zZXRQcm90b2Nv
bChuZXR3b3JrTG9hZE1ldHJpY3MucHJvdG9jb2wpOwotICAgIGlmIChuZXR3b3JrTG9hZE1ldHJp
Y3MucHJpb3JpdHkgIT0gTmV0d29ya0xvYWRQcmlvcml0eTo6VW5rbm93bikKLSAgICAgICAgbWV0
cmljcy0+c2V0UHJpb3JpdHkodG9Qcm90b2NvbChuZXR3b3JrTG9hZE1ldHJpY3MucHJpb3JpdHkp
KTsKLSAgICBpZiAoIW5ldHdvcmtMb2FkTWV0cmljcy5yZW1vdGVBZGRyZXNzLmlzTnVsbCgpKQot
ICAgICAgICBtZXRyaWNzLT5zZXRSZW1vdGVBZGRyZXNzKG5ldHdvcmtMb2FkTWV0cmljcy5yZW1v
dGVBZGRyZXNzKTsKLSAgICBpZiAoIW5ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0aW9uSWRlbnRp
Zmllci5pc051bGwoKSkKLSAgICAgICAgbWV0cmljcy0+c2V0Q29ubmVjdGlvbklkZW50aWZpZXIo
bmV0d29ya0xvYWRNZXRyaWNzLmNvbm5lY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIW5ldHdv
cmtMb2FkTWV0cmljcy5yZXF1ZXN0SGVhZGVycy5pc0VtcHR5KCkpCi0gICAgICAgIG1ldHJpY3Mt
PnNldFJlcXVlc3RIZWFkZXJzKGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhuZXR3b3JrTG9hZE1ldHJp
Y3MucmVxdWVzdEhlYWRlcnMpKTsKLQotICAgIGlmIChuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVz
dEhlYWRlckJ5dGVzU2VudCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkp
Ci0gICAgICAgIG1ldHJpY3MtPnNldFJlcXVlc3RIZWFkZXJCeXRlc1NlbnQobmV0d29ya0xvYWRN
ZXRyaWNzLnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQpOwotICAgIGlmIChuZXR3b3JrTG9hZE1ldHJp
Y3MucmVxdWVzdEJvZHlCeXRlc1NlbnQgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46
Om1heCgpKQotICAgICAgICBtZXRyaWNzLT5zZXRSZXF1ZXN0Qm9keUJ5dGVzU2VudChuZXR3b3Jr
TG9hZE1ldHJpY3MucmVxdWVzdEJvZHlCeXRlc1NlbnQpOwotICAgIGlmIChuZXR3b3JrTG9hZE1l
dHJpY3MucmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDY0X3Q+OjptYXgoKSkKLSAgICAgICAgbWV0cmljcy0+c2V0UmVzcG9uc2VIZWFkZXJCeXRl
c1JlY2VpdmVkKG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQp
OworICAgIGlmIChhdXRvKiBhZGRpdGlvbmFsTWV0cmljcyA9IG5ldHdvcmtMb2FkTWV0cmljcy5h
ZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yLmdldCgpKSB7CisgICAg
ICAgIGlmIChhZGRpdGlvbmFsTWV0cmljcy0+cHJpb3JpdHkgIT0gTmV0d29ya0xvYWRQcmlvcml0
eTo6VW5rbm93bikKKyAgICAgICAgICAgIG1ldHJpY3MtPnNldFByaW9yaXR5KHRvUHJvdG9jb2wo
YWRkaXRpb25hbE1ldHJpY3MtPnByaW9yaXR5KSk7CisgICAgICAgIGlmICghYWRkaXRpb25hbE1l
dHJpY3MtPnJlbW90ZUFkZHJlc3MuaXNOdWxsKCkpCisgICAgICAgICAgICBtZXRyaWNzLT5zZXRS
ZW1vdGVBZGRyZXNzKGFkZGl0aW9uYWxNZXRyaWNzLT5yZW1vdGVBZGRyZXNzKTsKKyAgICAgICAg
aWYgKCFhZGRpdGlvbmFsTWV0cmljcy0+Y29ubmVjdGlvbklkZW50aWZpZXIuaXNOdWxsKCkpCisg
ICAgICAgICAgICBtZXRyaWNzLT5zZXRDb25uZWN0aW9uSWRlbnRpZmllcihhZGRpdGlvbmFsTWV0
cmljcy0+Y29ubmVjdGlvbklkZW50aWZpZXIpOworICAgICAgICBpZiAoIWFkZGl0aW9uYWxNZXRy
aWNzLT5yZXF1ZXN0SGVhZGVycy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtZXRyaWNzLT5zZXRS
ZXF1ZXN0SGVhZGVycyhidWlsZE9iamVjdEZvckhlYWRlcnMoYWRkaXRpb25hbE1ldHJpY3MtPnJl
cXVlc3RIZWFkZXJzKSk7CisgICAgICAgIGlmIChhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEhl
YWRlckJ5dGVzU2VudCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCisg
ICAgICAgICAgICBtZXRyaWNzLT5zZXRSZXF1ZXN0SGVhZGVyQnl0ZXNTZW50KGFkZGl0aW9uYWxN
ZXRyaWNzLT5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50KTsKKyAgICAgICAgaWYgKGFkZGl0aW9uYWxN
ZXRyaWNzLT5yZXF1ZXN0Qm9keUJ5dGVzU2VudCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2
NF90Pjo6bWF4KCkpCisgICAgICAgICAgICBtZXRyaWNzLT5zZXRSZXF1ZXN0Qm9keUJ5dGVzU2Vu
dChhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEJvZHlCeXRlc1NlbnQpOworICAgICAgICBpZiAo
YWRkaXRpb25hbE1ldHJpY3MtPnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCAhPSBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCisgICAgICAgICAgICBtZXRyaWNzLT5zZXRS
ZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQoYWRkaXRpb25hbE1ldHJpY3MtPnJlc3BvbnNlSGVh
ZGVyQnl0ZXNSZWNlaXZlZCk7CisgICAgfQogICAgIGlmIChuZXR3b3JrTG9hZE1ldHJpY3MucmVz
cG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6
bWF4KCkpCiAgICAgICAgIG1ldHJpY3MtPnNldFJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQobmV0
d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQpOwogICAgIGlmIChuZXR3
b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5RGVjb2RlZFNpemUgIT0gc3RkOjpudW1lcmljX2xp
bWl0czx1aW50NjRfdD46Om1heCgpKQpAQCAtMjg2LDExICsyODcsMTIgQEAgUmVmPFByb3RvY29s
OjpOZXR3b3JrOjpNZXRyaWNzPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
TWV0cmljcyhjb24KICAgICBhdXRvIGNvbm5lY3Rpb25QYXlsb2FkID0gUHJvdG9jb2w6OlNlY3Vy
aXR5OjpDb25uZWN0aW9uOjpjcmVhdGUoKQogICAgICAgICAucmVsZWFzZSgpOwogCi0gICAgaWYg
KCFuZXR3b3JrTG9hZE1ldHJpY3MudGxzUHJvdG9jb2wuaXNFbXB0eSgpKQotICAgICAgICBjb25u
ZWN0aW9uUGF5bG9hZC0+c2V0UHJvdG9jb2wobmV0d29ya0xvYWRNZXRyaWNzLnRsc1Byb3RvY29s
KTsKLQotICAgIGlmICghbmV0d29ya0xvYWRNZXRyaWNzLnRsc0NpcGhlci5pc0VtcHR5KCkpCi0g
ICAgICAgIGNvbm5lY3Rpb25QYXlsb2FkLT5zZXRDaXBoZXIobmV0d29ya0xvYWRNZXRyaWNzLnRs
c0NpcGhlcik7CisgICAgaWYgKGF1dG8qIGFkZGl0aW9uYWxNZXRyaWNzID0gbmV0d29ya0xvYWRN
ZXRyaWNzLmFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IuZ2V0KCkp
IHsKKyAgICAgICAgaWYgKCFhZGRpdGlvbmFsTWV0cmljcy0+dGxzUHJvdG9jb2wuaXNFbXB0eSgp
KQorICAgICAgICAgICAgY29ubmVjdGlvblBheWxvYWQtPnNldFByb3RvY29sKGFkZGl0aW9uYWxN
ZXRyaWNzLT50bHNQcm90b2NvbCk7CisgICAgICAgIGlmICghYWRkaXRpb25hbE1ldHJpY3MtPnRs
c0NpcGhlci5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb25uZWN0aW9uUGF5bG9hZC0+c2V0Q2lw
aGVyKGFkZGl0aW9uYWxNZXRyaWNzLT50bHNDaXBoZXIpOworICAgIH0KIAogICAgIG1ldHJpY3Mt
PnNldFNlY3VyaXR5Q29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb25QYXlsb2FkKSk7CiAKQEAg
LTM1Myw3ICszNTUsNyBAQCBSZWZQdHI8UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlPiBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUmVzb3VyYwogCiAgICAgaWYgKHJlc291
cmNlTG9hZGVyKSB7CiAgICAgICAgIGF1dG8qIG1ldHJpY3MgPSByZXNwb25zZS5kZXByZWNhdGVk
TmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7Ci0gICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRU
aW1pbmcoYnVpbGRPYmplY3RGb3JUaW1pbmcobWV0cmljcyA/ICptZXRyaWNzIDogTmV0d29ya0xv
YWRNZXRyaWNzIHsgfSwgKnJlc291cmNlTG9hZGVyKSk7CisgICAgICAgIHJlc3BvbnNlT2JqZWN0
LT5zZXRUaW1pbmcoYnVpbGRPYmplY3RGb3JUaW1pbmcobWV0cmljcyA/ICptZXRyaWNzIDogTmV0
d29ya0xvYWRNZXRyaWNzOjplbXB0eU1ldHJpY3MoKSwgKnJlc291cmNlTG9hZGVyKSk7CiAgICAg
fQogCiAgICAgaWYgKGF1dG8mIGNlcnRpZmljYXRlSW5mbyA9IHJlc3BvbnNlLmNlcnRpZmljYXRl
SW5mbygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCmluZGV4IDQxYjhiNDNiNDUwZDljYmIyNjUwYTNjM2YwM2Y3YWQ1ZmJhNzMz
MjEuLjQwYTRjNDY1OTRiNTMzNTUyZGRiNjFkZWJhOWI2NWRiZDYwOTE5ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC02
NjQsNyArNjY0LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICB9CiAKICAgICBjb25z
dCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JO
dWxsKCk7Ci0gICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9tU3lu
Y2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxvYWRUaW1pbmcs
IHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9LCByZXNwb25zZSwgc2Vj
dXJpdHlPcmlnaW4oKSk7CisgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5n
Ojpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxv
YWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0
cmljcygpLCByZXNwb25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgaWYgKG9wdGlvbnMoKS5p
bml0aWF0b3JDb250ZXh0ID09IEluaXRpYXRvckNvbnRleHQ6OldvcmtlcikKICAgICAgICAgZmlu
aXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKHJlc291cmNlVGltaW5nKTsKICAgICBlbHNlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFhZDg0MGJj
ZGY3ZTFmNjdkMjAyOGVlMGNlNzE4ZGMyMWNkYjQwZTEuLjI2NDZiZmVkZWMzNDM4NDFjYTdmZGM4
YzMwNDk2NWM0Zjk2MzljNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcApAQCAtNDk4LDcgKzQ5OCw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAg
ICAgICAgIGlmIChyZXNwb25zZUhhc0hUVFBTdGF0dXNDb2RlRXJyb3IoKSkgewogICAgICAgICAg
ICAgbV9sb2FkVGltaW5nLm1hcmtFbmRUaW1lKCk7CiAgICAgICAgICAgICBhdXRvKiBtZXRyaWNz
ID0gdGhpcy0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7
Ci0gICAgICAgICAgICByZXBvcnRSZXNvdXJjZVRpbWluZyhtZXRyaWNzID8gKm1ldHJpY3MgOiBO
ZXR3b3JrTG9hZE1ldHJpY3MgeyB9KTsKKyAgICAgICAgICAgIHJlcG9ydFJlc291cmNlVGltaW5n
KG1ldHJpY3MgPyAqbWV0cmljcyA6IE5ldHdvcmtMb2FkTWV0cmljczo6ZW1wdHlNZXRyaWNzKCkp
OwogCiAgICAgICAgICAgICBtX3N0YXRlID0gRmluaXNoaW5nOwogICAgICAgICAgICAgbV9yZXNv
dXJjZS0+ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OkxvYWRFcnJvcik7CkBAIC03NDEsNyArNzQxLDcg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWUKICAgICAgICAgLy8gY29tcGxldGUgbG9hZCBtZXRy
aWNzIGluIGRpZEZpbmlzaExvYWQuIEluIHRob3NlIGNhc2VzLCBmYWxsIGJhY2sgdG8gdGhlIHBv
c3NpYmlsaXR5CiAgICAgICAgIC8vIHRoYXQgdGhleSBwb3B1bGF0ZWQgcGFydGlhbCBsb2FkIHRp
bWluZyBpbmZvcm1hdGlvbiBvbiB0aGUgUmVzb3VyY2VSZXNwb25zZS4KICAgICAgICAgY29uc3Qg
YXV0byogdGltaW5nID0gbV9yZXNvdXJjZS0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xv
YWRNZXRyaWNzT3JOdWxsKCk7Ci0gICAgICAgIHJlcG9ydFJlc291cmNlVGltaW5nKHRpbWluZyA/
ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9KTsKKyAgICAgICAgcmVwb3J0UmVzb3Vy
Y2VUaW1pbmcodGltaW5nID8gKnRpbWluZyA6IE5ldHdvcmtMb2FkTWV0cmljczo6ZW1wdHlNZXRy
aWNzKCkpOwogICAgIH0KIAogICAgIGlmIChtX3Jlc291cmNlLT50eXBlKCkgIT0gQ2FjaGVkUmVz
b3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDIxMWIzMmEzNDdmMWU5M2Jm
MGU0NDcwZjM0ZDQ0OTc3OTQyYTcxOTQuLmRhNTg1MzQ1Yzk4YmQxOTNlNTZiZTEyZGZjOTk0MzM5
NTNkYzIwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcApAQCAtMTA0MCw3ICsxMDQwLDcgQEAgUmVzb3VyY2VFcnJvck9y
PENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXUKICAgICAgICAgICAgICAgICAvLyBmb3IgdGhpcyBkb2N1bWVudCBiZWNhdXNlIGl0
IG1heSBoYXZlIGJlZW4gc3BlY3VsYXRpdmVseSBwcmVsb2FkZWQuCiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gbWV0cmljc0Zyb21SZXNvdXJjZSA9IHJlc291cmNlLT50YWtlTmV0d29ya0xvYWRN
ZXRyaWNzKCk7IG1ldHJpY3NGcm9tUmVzb3VyY2UgJiYgZG9jdW1lbnRMb2FkZXIgJiYgbWV0cmlj
c0Zyb21SZXNvdXJjZS0+cmVkaXJlY3RTdGFydCA+PSBkb2N1bWVudExvYWRlci0+dGltaW5nKCku
dGltZU9yaWdpbigpKQogICAgICAgICAgICAgICAgICAgICBtZXRyaWNzID0gV1RGTW92ZShtZXRy
aWNzRnJvbVJlc291cmNlKTsKLSAgICAgICAgICAgICAgICBhdXRvIHJlc291cmNlVGltaW5nID0g
UmVzb3VyY2VUaW1pbmc6OmZyb21NZW1vcnlDYWNoZSh1cmwsIHJlcXVlc3QuaW5pdGlhdG9yTmFt
ZSgpLCBsb2FkVGltaW5nLCByZXNvdXJjZS0+cmVzcG9uc2UoKSwgbWV0cmljcyA/ICptZXRyaWNz
IDogTmV0d29ya0xvYWRNZXRyaWNzIHsgfSwgKnJlcXVlc3Qub3JpZ2luKCkpOworICAgICAgICAg
ICAgICAgIGF1dG8gcmVzb3VyY2VUaW1pbmcgPSBSZXNvdXJjZVRpbWluZzo6ZnJvbU1lbW9yeUNh
Y2hlKHVybCwgcmVxdWVzdC5pbml0aWF0b3JOYW1lKCksIGxvYWRUaW1pbmcsIHJlc291cmNlLT5y
ZXNwb25zZSgpLCBtZXRyaWNzID8gKm1ldHJpY3MgOiBOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5
TWV0cmljcygpLCAqcmVxdWVzdC5vcmlnaW4oKSk7CiAgICAgICAgICAgICAgICAgaWYgKGluaXRp
YXRvckNvbnRleHQgPT0gSW5pdGlhdG9yQ29udGV4dDo6V29ya2VyKSB7CiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChpczxDYWNoZWRSYXdSZXNvdXJjZT4ocmVzb3VyY2UuZ2V0KCkpKTsKICAg
ICAgICAgICAgICAgICAgICAgZG93bmNhc3Q8Q2FjaGVkUmF3UmVzb3VyY2U+KHJlc291cmNlLmdl
dCgpKS0+ZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKFdURk1vdmUocmVzb3VyY2VUaW1pbmcp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNwcAppbmRleCA3YzE5ZTFmNTIxNjQ5MjU3OTk0
Zjc1M2ZhZTAzMzc2NzczOWUzMzhhLi4xYWVjZDJlNGY5YTQ5YmUxNThlZDhlMzY2MjQ5ZDhjYTE5
Y2QzNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwCkBAIC04Miw3ICs4Miw3IEBA
IHZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjpudWxsaWZ5KCkKICAgICBtX2lzTnVs
bCA9IHRydWU7CiB9CiAKLWJvb2wgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjpjb21wYXJl
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgYikKK2Jvb2wgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjplcXVhbEZvcldl
YktpdExlZ2FjeUNoYWxsZW5nZUNvbXBhcmlzb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKQogewogICAgIGlmIChhLmlz
TnVsbCgpICYmIGIuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtOTksOSArOTks
OSBAQCBib29sIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6Y29tcGFyZShjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29ucwogICAgIGlmIChhLnByZXZpb3VzRmFpbHVyZUNv
dW50KCkgIT0gYi5wcmV2aW91c0ZhaWx1cmVDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIAotICAgIGlmIChhLmZhaWx1cmVSZXNwb25zZSgpICE9IGIuZmFpbHVyZVJlc3Bv
bnNlKCkpCisgICAgaWYgKCFSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdh
Y3lDaGFsbGVuZ2VDb21wYXJpc29uKGEuZmFpbHVyZVJlc3BvbnNlKCksIGIuZmFpbHVyZVJlc3Bv
bnNlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAorCiAgICAgaWYgKGEuZXJy
b3IoKSAhPSBiLmVycm9yKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUJhc2UuaAppbmRleCBhNGY3YjYyZWRhMTAyZWNmNTk5ODcxZDM3NTc4OTJk
Nzc5OWQwMjA3Li41ODYwNzBmZWE5NjlmNGJjMjg4NTU1NjNkYjMwNmU2Zjk1MGNiZTdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VCYXNlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBudWxsaWZ5KCk7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY29tcGFy
ZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGVxdWFsRm9yV2Vi
S2l0TGVnYWN5Q2hhbGxlbmdlQ29tcGFyaXNvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAKIHByb3RlY3RlZDoKICAgICAv
LyBUaGUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ugc3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRoaXMg
bWV0aG9kIHRvIGNvbXBhcmUgcGxhdGZvcm0gc3BlY2lmaWMgZmllbGRzCkBAIC02Miw5ICs2Miw2
IEBAIHByb3RlY3RlZDoKICAgICBSZXNvdXJjZUVycm9yIG1fZXJyb3I7CiB9OwogCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYikgeyByZXR1cm4gQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
YikgeyByZXR1cm4gIShhID09IGIpOyB9Ci0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0cmljcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0cmljcy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjNhNGMyZmVkNGRlYTBjMjUzYmYyY2E4YmExNTJkNTA2OTY2OTQ3ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRy
aWNzLmNwcApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrTG9h
ZE1ldHJpY3MuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK05ldHdvcmtMb2FkTWV0cmljczo6TmV0d29ya0xvYWRNZXRyaWNzKCkK
KyAgICA6IGNvbXBsZXRlKGZhbHNlKQorICAgICwgY2VsbHVsYXIoZmFsc2UpCisgICAgLCBleHBl
bnNpdmUoZmFsc2UpCisgICAgLCBjb25zdHJhaW5lZChmYWxzZSkKKyAgICAsIG11bHRpcGF0aChm
YWxzZSkKKyAgICAsIGlzUmV1c2VkQ29ubmVjdGlvbihmYWxzZSkKKyAgICAsIGZhaWxzVEFPQ2hl
Y2soZmFsc2UpCisgICAgLCBoYXNDcm9zc09yaWdpblJlZGlyZWN0KGZhbHNlKSB7IH0KKworY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcygp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE5ldHdvcmtMb2FkTWV0cmljcz4gbWV0cmlj
czsKKyAgICByZXR1cm4gbWV0cmljcy5nZXQoKTsKK30KKworUmVmPEFkZGl0aW9uYWxOZXR3b3Jr
TG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I+IEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NG
b3JXZWJJbnNwZWN0b3I6Omlzb2xhdGVkQ29weSgpCit7CisgICAgYXV0byBjb3B5ID0gYWRvcHRS
ZWYoKm5ldyBBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yKTsKKyAg
ICBjb3B5LT5wcmlvcml0eSA9IHByaW9yaXR5OworICAgIGNvcHktPnJlbW90ZUFkZHJlc3MgPSBy
ZW1vdGVBZGRyZXNzLmlzb2xhdGVkQ29weSgpOworICAgIGNvcHktPmNvbm5lY3Rpb25JZGVudGlm
aWVyID0gY29ubmVjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS0+dGxz
UHJvdG9jb2wgPSB0bHNQcm90b2NvbC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LT50bHNDaXBo
ZXIgPSB0bHNDaXBoZXIuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS0+cmVxdWVzdEhlYWRlcnMg
PSByZXF1ZXN0SGVhZGVycy5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LT5yZXF1ZXN0SGVhZGVy
Qnl0ZXNTZW50ID0gcmVxdWVzdEhlYWRlckJ5dGVzU2VudDsKKyAgICBjb3B5LT5yZXNwb25zZUhl
YWRlckJ5dGVzUmVjZWl2ZWQgPSByZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQ7CisgICAgY29w
eS0+cmVxdWVzdEJvZHlCeXRlc1NlbnQgPSByZXF1ZXN0Qm9keUJ5dGVzU2VudDsKKyAgICByZXR1
cm4gY29weTsKK30KKworTmV0d29ya0xvYWRNZXRyaWNzIE5ldHdvcmtMb2FkTWV0cmljczo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBOZXR3b3JrTG9hZE1ldHJpY3MgY29weTsKKworICAg
IGNvcHkucmVkaXJlY3RTdGFydCA9IHJlZGlyZWN0U3RhcnQuaXNvbGF0ZWRDb3B5KCk7CisgICAg
Y29weS5mZXRjaFN0YXJ0ID0gZmV0Y2hTdGFydC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LmRv
bWFpbkxvb2t1cFN0YXJ0ID0gZG9tYWluTG9va3VwU3RhcnQuaXNvbGF0ZWRDb3B5KCk7CisgICAg
Y29weS5kb21haW5Mb29rdXBFbmQgPSBkb21haW5Mb29rdXBFbmQuaXNvbGF0ZWRDb3B5KCk7Cisg
ICAgY29weS5jb25uZWN0U3RhcnQgPSBjb25uZWN0U3RhcnQuaXNvbGF0ZWRDb3B5KCk7CisgICAg
Y29weS5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBzZWN1cmVDb25uZWN0aW9uU3RhcnQuaXNvbGF0
ZWRDb3B5KCk7CisgICAgY29weS5jb25uZWN0RW5kID0gY29ubmVjdEVuZC5pc29sYXRlZENvcHko
KTsKKyAgICBjb3B5LnJlcXVlc3RTdGFydCA9IHJlcXVlc3RTdGFydC5pc29sYXRlZENvcHkoKTsK
KyAgICBjb3B5LnJlc3BvbnNlU3RhcnQgPSByZXNwb25zZVN0YXJ0Lmlzb2xhdGVkQ29weSgpOwor
ICAgIGNvcHkucmVzcG9uc2VFbmQgPSByZXNwb25zZUVuZC5pc29sYXRlZENvcHkoKTsKKworICAg
IGNvcHkucHJvdG9jb2wgPSBwcm90b2NvbC5pc29sYXRlZENvcHkoKTsKKworICAgIGNvcHkucmVk
aXJlY3RDb3VudCA9IHJlZGlyZWN0Q291bnQ7CisKKyAgICBjb3B5LmNvbXBsZXRlID0gY29tcGxl
dGU7CisgICAgY29weS5jZWxsdWxhciA9IGNlbGx1bGFyOworICAgIGNvcHkuZXhwZW5zaXZlID0g
ZXhwZW5zaXZlOworICAgIGNvcHkuY29uc3RyYWluZWQgPSBjb25zdHJhaW5lZDsKKyAgICBjb3B5
Lm11bHRpcGF0aCA9IG11bHRpcGF0aDsKKyAgICBjb3B5LmlzUmV1c2VkQ29ubmVjdGlvbiA9IGlz
UmV1c2VkQ29ubmVjdGlvbjsKKyAgICBjb3B5LmZhaWxzVEFPQ2hlY2sgPSBmYWlsc1RBT0NoZWNr
OworICAgIGNvcHkuaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCA9IGhhc0Nyb3NzT3JpZ2luUmVkaXJl
Y3Q7CisKKyAgICBjb3B5LnByaXZhY3lTdGFuY2UgPSBwcml2YWN5U3RhbmNlOworCisgICAgY29w
eS5yZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkID0gcmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZDsK
KyAgICBjb3B5LnJlc3BvbnNlQm9keURlY29kZWRTaXplID0gcmVzcG9uc2VCb2R5RGVjb2RlZFNp
emU7CisKKyAgICBpZiAoYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rv
cikKKyAgICAgICAgY29weS5hZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVj
dG9yID0gYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvci0+aXNvbGF0
ZWRDb3B5KCk7CisKKyAgICByZXR1cm4gY29weTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9h
ZE1ldHJpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRN
ZXRyaWNzLmgKaW5kZXggZjFlYTc2ZTFkYjExM2RjNjQ2OTA4ODY3OWJhOTdjNzhhOTIxMzc3NS4u
NmI0NjI5ZDVmNDY3ZmY4M2NlMmNmY2JiNzQxNmQ4ZWNiOTM2OGU5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0cmljcy5oCkBAIC0z
NCw3ICszNCw2IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNVUkxDb25u
ZWN0aW9uOwotT0JKQ19DTEFTUyBOU1VSTFJlc3BvbnNlOwogT0JKQ19DTEFTUyBOU1VSTFNlc3Np
b25UYXNrTWV0cmljczsKICNlbmRpZgogCkBAIC01OSw5ICs1OCwyNCBAQCBlbnVtIGNsYXNzIFBy
aXZhY3lTdGFuY2UgOiB1aW50OF90IHsKIAogY29uc3RleHByIE1vbm90b25pY1RpbWUgcmV1c2Vk
VExTQ29ubmVjdGlvblNlbnRpbmVsIHsgTW9ub3RvbmljVGltZTo6ZnJvbVJhd1NlY29uZHMoLTEp
IH07CiAKLWNsYXNzIE5ldHdvcmtMb2FkTWV0cmljc1dpdGhvdXROb25UaW1pbmdEYXRhIHsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChOZXR3b3JrTG9hZE1ldHJpY3NXaXRob3V0Tm9uVGlt
aW5nRGF0YSk7CitzdHJ1Y3QgQWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3Bl
Y3RvcjsKKworY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRChOZXR3b3JrTG9hZE1ldHJpY3MpOwogcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JU
IE5ldHdvcmtMb2FkTWV0cmljcygpOworICAgIE5ldHdvcmtMb2FkTWV0cmljcyhjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSA9IGRlZmF1bHQ7CisgICAgTmV0d29ya0xvYWRNZXRyaWNzKE5ldHdv
cmtMb2FkTWV0cmljcyYmKSA9IGRlZmF1bHQ7CisgICAgTmV0d29ya0xvYWRNZXRyaWNzJiBvcGVy
YXRvcj0oTmV0d29ya0xvYWRNZXRyaWNzJiYpID0gZGVmYXVsdDsKKyAgICBOZXR3b3JrTG9hZE1l
dHJpY3MmIG9wZXJhdG9yPShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IGRlZmF1bHQ7CisK
KyAgICBzdGF0aWMgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBlbXB0eU1ldHJpY3MoKTsKKwor
ICAgIE5ldHdvcmtMb2FkTWV0cmljcyBpc29sYXRlZENvcHkoKSBjb25zdDsKKworICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxOZXR3b3JrTG9hZE1ldHJp
Y3M+IGRlY29kZShEZWNvZGVyJik7CisKICAgICBib29sIGlzQ29tcGxldGUoKSBjb25zdCB7IHJl
dHVybiBjb21wbGV0ZTsgfQogICAgIHZvaWQgbWFya0NvbXBsZXRlKCkgeyBjb21wbGV0ZSA9IHRy
dWU7IH0KIApAQCAtODIsMTEwICs5NiwzMiBAQCBwdWJsaWM6CiAKICAgICB1aW50MTZfdCByZWRp
cmVjdENvdW50IHsgMCB9OwogCi0gICAgLy8gRklYTUU6IFRoZXNlIGNvdWxkIGFsbCBiZSBtYWRl
IGJpdCBmaWVsZHMuCi0gICAgYm9vbCBjb21wbGV0ZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBjZWxs
dWxhciB7IGZhbHNlIH07Ci0gICAgYm9vbCBleHBlbnNpdmUgeyBmYWxzZSB9OwotICAgIGJvb2wg
Y29uc3RyYWluZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbXVsdGlwYXRoIHsgZmFsc2UgfTsKLSAg
ICBib29sIGlzUmV1c2VkQ29ubmVjdGlvbiB7IGZhbHNlIH07Ci0gICAgYm9vbCBmYWlsc1RBT0No
ZWNrIHsgZmFsc2UgfTsKLSAgICBib29sIGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QgeyBmYWxzZSB9
OwotfTsKKyAgICBib29sIGNvbXBsZXRlIDogMTsKKyAgICBib29sIGNlbGx1bGFyIDogMTsKKyAg
ICBib29sIGV4cGVuc2l2ZSA6IDE7CisgICAgYm9vbCBjb25zdHJhaW5lZCA6IDE7CisgICAgYm9v
bCBtdWx0aXBhdGggOiAxOworICAgIGJvb2wgaXNSZXVzZWRDb25uZWN0aW9uIDogMTsKKyAgICBi
b29sIGZhaWxzVEFPQ2hlY2sgOiAxOworICAgIGJvb2wgaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCA6
IDE7CiAKLWNsYXNzIE5ldHdvcmtMb2FkTWV0cmljcyA6IHB1YmxpYyBOZXR3b3JrTG9hZE1ldHJp
Y3NXaXRob3V0Tm9uVGltaW5nRGF0YSB7Ci1wdWJsaWM6Ci0gICAgTmV0d29ya0xvYWRNZXRyaWNz
KCkKLSAgICAgICAgOiBOZXR3b3JrTG9hZE1ldHJpY3NXaXRob3V0Tm9uVGltaW5nRGF0YSgpCi0g
ICAgewotICAgIH0KKyAgICBQcml2YWN5U3RhbmNlIHByaXZhY3lTdGFuY2UgeyBQcml2YWN5U3Rh
bmNlOjpVbmtub3duIH07CiAKLSAgICBOZXR3b3JrTG9hZE1ldHJpY3MgaXNvbGF0ZWRDb3B5KCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBjb3B5OwotCi0gICAgICAg
IGNvcHkucmVkaXJlY3RTdGFydCA9IHJlZGlyZWN0U3RhcnQ7Ci0gICAgICAgIGNvcHkuZmV0Y2hT
dGFydCA9IGZldGNoU3RhcnQ7Ci0KLSAgICAgICAgY29weS5kb21haW5Mb29rdXBTdGFydCA9IGRv
bWFpbkxvb2t1cFN0YXJ0OwotICAgICAgICBjb3B5LmRvbWFpbkxvb2t1cEVuZCA9IGRvbWFpbkxv
b2t1cEVuZDsKLSAgICAgICAgY29weS5jb25uZWN0U3RhcnQgPSBjb25uZWN0U3RhcnQ7Ci0gICAg
ICAgIGNvcHkuc2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gc2VjdXJlQ29ubmVjdGlvblN0YXJ0Owot
ICAgICAgICBjb3B5LmNvbm5lY3RFbmQgPSBjb25uZWN0RW5kOwotICAgICAgICBjb3B5LnJlcXVl
c3RTdGFydCA9IHJlcXVlc3RTdGFydDsKLSAgICAgICAgY29weS5yZXNwb25zZVN0YXJ0ID0gcmVz
cG9uc2VTdGFydDsKLSAgICAgICAgY29weS5yZXNwb25zZUVuZCA9IHJlc3BvbnNlRW5kOwotICAg
ICAgICBjb3B5LmNvbXBsZXRlID0gY29tcGxldGU7Ci0gICAgICAgIGNvcHkucHJvdG9jb2wgPSBw
cm90b2NvbC5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgY29weS5yZWRpcmVjdENvdW50ID0gcmVk
aXJlY3RDb3VudDsKLSAgICAgICAgY29weS5jZWxsdWxhciA9IGNlbGx1bGFyOwotICAgICAgICBj
b3B5LmV4cGVuc2l2ZSA9IGV4cGVuc2l2ZTsKLSAgICAgICAgY29weS5jb25zdHJhaW5lZCA9IGNv
bnN0cmFpbmVkOwotICAgICAgICBjb3B5Lm11bHRpcGF0aCA9IG11bHRpcGF0aDsKLSAgICAgICAg
Y29weS5pc1JldXNlZENvbm5lY3Rpb24gPSBpc1JldXNlZENvbm5lY3Rpb247Ci0gICAgICAgIGNv
cHkuZmFpbHNUQU9DaGVjayA9IGZhaWxzVEFPQ2hlY2s7Ci0gICAgICAgIGNvcHkuaGFzQ3Jvc3NP
cmlnaW5SZWRpcmVjdCA9IGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3Q7Ci0KLSAgICAgICAgY29weS5y
ZW1vdGVBZGRyZXNzID0gcmVtb3RlQWRkcmVzcy5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgY29w
eS5jb25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29w
eSgpOwotICAgICAgICBjb3B5LnRsc1Byb3RvY29sID0gdGxzUHJvdG9jb2wuaXNvbGF0ZWRDb3B5
KCk7Ci0gICAgICAgIGNvcHkudGxzQ2lwaGVyID0gdGxzQ2lwaGVyLmlzb2xhdGVkQ29weSgpOwot
ICAgICAgICBjb3B5LnByaW9yaXR5ID0gcHJpb3JpdHk7Ci0gICAgICAgIGNvcHkucHJpdmFjeVN0
YW5jZSA9IHByaXZhY3lTdGFuY2U7Ci0gICAgICAgIGNvcHkucmVxdWVzdEhlYWRlcnMgPSByZXF1
ZXN0SGVhZGVycy5pc29sYXRlZENvcHkoKTsKLQotICAgICAgICBjb3B5LnJlcXVlc3RIZWFkZXJC
eXRlc1NlbnQgPSByZXF1ZXN0SGVhZGVyQnl0ZXNTZW50OwotICAgICAgICBjb3B5LnJlcXVlc3RC
b2R5Qnl0ZXNTZW50ID0gcmVxdWVzdEJvZHlCeXRlc1NlbnQ7Ci0gICAgICAgIGNvcHkucmVzcG9u
c2VIZWFkZXJCeXRlc1JlY2VpdmVkID0gcmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkOwotICAg
ICAgICBjb3B5LnJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQgPSByZXNwb25zZUJvZHlCeXRlc1Jl
Y2VpdmVkOwotICAgICAgICBjb3B5LnJlc3BvbnNlQm9keURlY29kZWRTaXplID0gcmVzcG9uc2VC
b2R5RGVjb2RlZFNpemU7Ci0KLSAgICAgICAgcmV0dXJuIGNvcHk7Ci0gICAgfQorICAgIHVpbnQ2
NF90IHJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQgeyBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2
NF90Pjo6bWF4KCkgfTsKKyAgICB1aW50NjRfdCByZXNwb25zZUJvZHlEZWNvZGVkU2l6ZSB7IHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSB9OwogCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gcmVkaXJlY3RTdGFydCA9PSBvdGhlci5yZWRpcmVjdFN0YXJ0Ci0gICAgICAgICAg
ICAmJiBmZXRjaFN0YXJ0ID09IG90aGVyLmZldGNoU3RhcnQKLSAgICAgICAgICAgICYmIGRvbWFp
bkxvb2t1cFN0YXJ0ID09IG90aGVyLmRvbWFpbkxvb2t1cFN0YXJ0Ci0gICAgICAgICAgICAmJiBk
b21haW5Mb29rdXBFbmQgPT0gb3RoZXIuZG9tYWluTG9va3VwRW5kCi0gICAgICAgICAgICAmJiBj
b25uZWN0U3RhcnQgPT0gb3RoZXIuY29ubmVjdFN0YXJ0Ci0gICAgICAgICAgICAmJiBzZWN1cmVD
b25uZWN0aW9uU3RhcnQgPT0gb3RoZXIuc2VjdXJlQ29ubmVjdGlvblN0YXJ0Ci0gICAgICAgICAg
ICAmJiBjb25uZWN0RW5kID09IG90aGVyLmNvbm5lY3RFbmQKLSAgICAgICAgICAgICYmIHJlcXVl
c3RTdGFydCA9PSBvdGhlci5yZXF1ZXN0U3RhcnQKLSAgICAgICAgICAgICYmIHJlc3BvbnNlU3Rh
cnQgPT0gb3RoZXIucmVzcG9uc2VTdGFydAotICAgICAgICAgICAgJiYgcmVzcG9uc2VFbmQgPT0g
b3RoZXIucmVzcG9uc2VFbmQKLSAgICAgICAgICAgICYmIGNvbXBsZXRlID09IG90aGVyLmNvbXBs
ZXRlCi0gICAgICAgICAgICAmJiBjZWxsdWxhciA9PSBvdGhlci5jZWxsdWxhcgotICAgICAgICAg
ICAgJiYgZXhwZW5zaXZlID09IG90aGVyLmV4cGVuc2l2ZQotICAgICAgICAgICAgJiYgY29uc3Ry
YWluZWQgPT0gb3RoZXIuY29uc3RyYWluZWQKLSAgICAgICAgICAgICYmIG11bHRpcGF0aCA9PSBv
dGhlci5tdWx0aXBhdGgKLSAgICAgICAgICAgICYmIGlzUmV1c2VkQ29ubmVjdGlvbiA9PSBvdGhl
ci5pc1JldXNlZENvbm5lY3Rpb24KLSAgICAgICAgICAgICYmIGZhaWxzVEFPQ2hlY2sgPT0gb3Ro
ZXIuZmFpbHNUQU9DaGVjawotICAgICAgICAgICAgJiYgaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCA9
PSBvdGhlci5oYXNDcm9zc09yaWdpblJlZGlyZWN0Ci0gICAgICAgICAgICAmJiBwcm90b2NvbCA9
PSBvdGhlci5wcm90b2NvbAotICAgICAgICAgICAgJiYgcmVkaXJlY3RDb3VudCA9PSBvdGhlci5y
ZWRpcmVjdENvdW50Ci0gICAgICAgICAgICAmJiByZW1vdGVBZGRyZXNzID09IG90aGVyLnJlbW90
ZUFkZHJlc3MKLSAgICAgICAgICAgICYmIGNvbm5lY3Rpb25JZGVudGlmaWVyID09IG90aGVyLmNv
bm5lY3Rpb25JZGVudGlmaWVyCi0gICAgICAgICAgICAmJiB0bHNQcm90b2NvbCA9PSBvdGhlci50
bHNQcm90b2NvbAotICAgICAgICAgICAgJiYgdGxzQ2lwaGVyID09IG90aGVyLnRsc0NpcGhlcgot
ICAgICAgICAgICAgJiYgcHJpb3JpdHkgPT0gb3RoZXIucHJpb3JpdHkKLSAgICAgICAgICAgICYm
IHByaXZhY3lTdGFuY2UgPT0gb3RoZXIucHJpdmFjeVN0YW5jZQotICAgICAgICAgICAgJiYgcmVx
dWVzdEhlYWRlcnMgPT0gb3RoZXIucmVxdWVzdEhlYWRlcnMKLSAgICAgICAgICAgICYmIHJlcXVl
c3RIZWFkZXJCeXRlc1NlbnQgPT0gb3RoZXIucmVxdWVzdEhlYWRlckJ5dGVzU2VudAotICAgICAg
ICAgICAgJiYgcmVxdWVzdEJvZHlCeXRlc1NlbnQgPT0gb3RoZXIucmVxdWVzdEJvZHlCeXRlc1Nl
bnQKLSAgICAgICAgICAgICYmIHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCA9PSBvdGhlci5y
ZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQKLSAgICAgICAgICAgICYmIHJlc3BvbnNlQm9keUJ5
dGVzUmVjZWl2ZWQgPT0gb3RoZXIucmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZAotICAgICAgICAg
ICAgJiYgcmVzcG9uc2VCb2R5RGVjb2RlZFNpemUgPT0gb3RoZXIucmVzcG9uc2VCb2R5RGVjb2Rl
ZFNpemU7Ci0gICAgfQorICAgIFJlZlB0cjxBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9y
V2ViSW5zcGVjdG9yPiBhZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9y
OworfTsKIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG90
aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAg
IH0KK3N0cnVjdCBBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yIDog
cHVibGljIFJlZkNvdW50ZWQ8QWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3Bl
Y3Rvcj4geworCisgICAgUmVmPEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNw
ZWN0b3I+IGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIE5ldHdv
cmtMb2FkTWV0cmljcyYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQ
dHI8QWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcj4gZGVjb2RlKERl
Y29kZXImKTsKKyAgICBSZWY8QWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3Bl
Y3Rvcj4gaXNvbGF0ZWRDb3B5KCk7CisKKyAgICBOZXR3b3JrTG9hZFByaW9yaXR5IHByaW9yaXR5
IHsgTmV0d29ya0xvYWRQcmlvcml0eTo6VW5rbm93biB9OwogCiAgICAgU3RyaW5nIHJlbW90ZUFk
ZHJlc3M7CiAgICAgU3RyaW5nIGNvbm5lY3Rpb25JZGVudGlmaWVyOwpAQCAtMTkzLDE2ICsxMjks
MTEgQEAgcHVibGljOgogICAgIFN0cmluZyB0bHNQcm90b2NvbDsKICAgICBTdHJpbmcgdGxzQ2lw
aGVyOwogCi0gICAgTmV0d29ya0xvYWRQcmlvcml0eSBwcmlvcml0eSB7IE5ldHdvcmtMb2FkUHJp
b3JpdHk6OlVua25vd24gfTsKLSAgICBQcml2YWN5U3RhbmNlIHByaXZhY3lTdGFuY2UgeyBQcml2
YWN5U3RhbmNlOjpVbmtub3duIH07Ci0KICAgICBIVFRQSGVhZGVyTWFwIHJlcXVlc3RIZWFkZXJz
OwogCiAgICAgdWludDY0X3QgcmVxdWVzdEhlYWRlckJ5dGVzU2VudCB7IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDY0X3Q+OjptYXgoKSB9OwogICAgIHVpbnQ2NF90IHJlc3BvbnNlSGVhZGVyQnl0
ZXNSZWNlaXZlZCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSB9OwogICAg
IHVpbnQ2NF90IHJlcXVlc3RCb2R5Qnl0ZXNTZW50IHsgc3RkOjpudW1lcmljX2xpbWl0czx1aW50
NjRfdD46Om1heCgpIH07Ci0gICAgdWludDY0X3QgcmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZCB7
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSB9OwotICAgIHVpbnQ2NF90IHJl
c3BvbnNlQm9keURlY29kZWRTaXplIHsgc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1h
eCgpIH07CiB9OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0yMjUsNiArMTU2LDExIEBAIHZv
aWQgTmV0d29ya0xvYWRNZXRyaWNzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAg
ICBlbmNvZGVyIDw8IHJlcXVlc3RTdGFydDsKICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlU3RhcnQ7
CiAgICAgZW5jb2RlciA8PCByZXNwb25zZUVuZDsKKworICAgIGVuY29kZXIgPDwgcHJvdG9jb2w7
CisKKyAgICBlbmNvZGVyIDw8IHJlZGlyZWN0Q291bnQ7CisKICAgICBlbmNvZGVyIDw8IGNvbXBs
ZXRlOwogICAgIGVuY29kZXIgPDwgY2VsbHVsYXI7CiAgICAgZW5jb2RlciA8PCBleHBlbnNpdmU7
CkBAIC0yMzMsMjggKzE2OSwyNiBAQCB2b2lkIE5ldHdvcmtMb2FkTWV0cmljczo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBpc1JldXNlZENvbm5lY3Rpb247
CiAgICAgZW5jb2RlciA8PCBmYWlsc1RBT0NoZWNrOwogICAgIGVuY29kZXIgPDwgaGFzQ3Jvc3NP
cmlnaW5SZWRpcmVjdDsKLSAgICBlbmNvZGVyIDw8IHByb3RvY29sOwotICAgIGVuY29kZXIgPDwg
cmVkaXJlY3RDb3VudDsKLSAgICBlbmNvZGVyIDw8IHJlbW90ZUFkZHJlc3M7Ci0gICAgZW5jb2Rl
ciA8PCBjb25uZWN0aW9uSWRlbnRpZmllcjsKLSAgICBlbmNvZGVyIDw8IHRsc1Byb3RvY29sOwot
ICAgIGVuY29kZXIgPDwgdGxzQ2lwaGVyOwotICAgIGVuY29kZXIgPDwgcHJpb3JpdHk7CisKICAg
ICBlbmNvZGVyIDw8IHByaXZhY3lTdGFuY2U7Ci0gICAgZW5jb2RlciA8PCByZXF1ZXN0SGVhZGVy
czsKLSAgICBlbmNvZGVyIDw8IHJlcXVlc3RIZWFkZXJCeXRlc1NlbnQ7Ci0gICAgZW5jb2RlciA8
PCByZXF1ZXN0Qm9keUJ5dGVzU2VudDsKLSAgICBlbmNvZGVyIDw8IHJlc3BvbnNlSGVhZGVyQnl0
ZXNSZWNlaXZlZDsKKwogICAgIGVuY29kZXIgPDwgcmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZDsK
ICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlQm9keURlY29kZWRTaXplOworICAgIAorICAgIGlmIChh
ZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yKSB7CisgICAgICAgIGVu
Y29kZXIgPDwgdHJ1ZTsKKyAgICAgICAgZW5jb2RlciA8PCAqYWRkaXRpb25hbE5ldHdvcmtMb2Fk
TWV0cmljc0ZvcldlYkluc3BlY3RvcjsKKyAgICB9IGVsc2UKKyAgICAgICAgZW5jb2RlciA8PCBm
YWxzZTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLWJvb2wgTmV0d29ya0xvYWRNZXRy
aWNzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQorc3RkOjpvcHRpb25hbDxOZXR3b3JrTG9hZE1ldHJpY3M+IE5ldHdvcmtMb2FkTWV0cmljczo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgc3RhdGljX2Fzc2VydChEZWNvZGVyOjpp
c0lQQ0RlY29kZXIsICJOZXR3b3JrTG9hZE1ldHJpY3Mgc2hvdWxkIG5vdCBiZSBzdG9yZWQgYnkg
dGhlIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIiKTsKIAotICAgIHJldHVybiBkZWNvZGVyLmRl
Y29kZShtZXRyaWNzLnJlZGlyZWN0U3RhcnQpCisgICAgTmV0d29ya0xvYWRNZXRyaWNzIG1ldHJp
Y3M7CisgICAgaWYgKCEoZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZWRpcmVjdFN0YXJ0KQogICAg
ICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmZldGNoU3RhcnQpCiAgICAgICAgICYmIGRl
Y29kZXIuZGVjb2RlKG1ldHJpY3MuZG9tYWluTG9va3VwU3RhcnQpCiAgICAgICAgICYmIGRlY29k
ZXIuZGVjb2RlKG1ldHJpY3MuZG9tYWluTG9va3VwRW5kKQpAQCAtMjY0LDI4ICsxOTgsMTUxIEBA
IGJvb2wgTmV0d29ya0xvYWRNZXRyaWNzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNz
LnJlcXVlc3RTdGFydCkKICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZXNwb25z
ZVN0YXJ0KQogICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnJlc3BvbnNlRW5kKQot
ICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmNvbXBsZXRlKQotICAgICAgICAmJiBk
ZWNvZGVyLmRlY29kZShtZXRyaWNzLmNlbGx1bGFyKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29k
ZShtZXRyaWNzLmV4cGVuc2l2ZSkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5j
b25zdHJhaW5lZCkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5tdWx0aXBhdGgp
Ci0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuaXNSZXVzZWRDb25uZWN0aW9uKQot
ICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmZhaWxzVEFPQ2hlY2spCi0gICAgICAg
ICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCkKICAgICAg
ICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5wcm90b2NvbCkKLSAgICAgICAgJiYgZGVjb2Rl
ci5kZWNvZGUobWV0cmljcy5yZWRpcmVjdENvdW50KQotICAgICAgICAmJiBkZWNvZGVyLmRlY29k
ZShtZXRyaWNzLnJlbW90ZUFkZHJlc3MpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJp
Y3MuY29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJp
Y3MudGxzUHJvdG9jb2wpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MudGxzQ2lw
aGVyKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnByaW9yaXR5KQotICAgICAg
ICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnByaXZhY3lTdGFuY2UpCi0gICAgICAgICYmIGRl
Y29kZXIuZGVjb2RlKG1ldHJpY3MucmVxdWVzdEhlYWRlcnMpCi0gICAgICAgICYmIGRlY29kZXIu
ZGVjb2RlKG1ldHJpY3MucmVxdWVzdEhlYWRlckJ5dGVzU2VudCkKLSAgICAgICAgJiYgZGVjb2Rl
ci5kZWNvZGUobWV0cmljcy5yZXF1ZXN0Qm9keUJ5dGVzU2VudCkKLSAgICAgICAgJiYgZGVjb2Rl
ci5kZWNvZGUobWV0cmljcy5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQpCisgICAgICAgICYm
IGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVkaXJlY3RDb3VudCkpKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY29tcGxldGU7Cisg
ICAgZGVjb2RlciA+PiBjb21wbGV0ZTsKKyAgICBpZiAoIWNvbXBsZXRlKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIG1ldHJpY3MuY29tcGxldGUgPSBXVEZNb3ZlKCpjb21wbGV0
ZSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNlbGx1bGFyOworICAgIGRlY29kZXIgPj4g
Y2VsbHVsYXI7CisgICAgaWYgKCFjZWxsdWxhcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICBtZXRyaWNzLmNlbGx1bGFyID0gV1RGTW92ZSgqY2VsbHVsYXIpOworCisgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBleHBlbnNpdmU7CisgICAgZGVjb2RlciA+PiBleHBlbnNpdmU7Cisg
ICAgaWYgKCFleHBlbnNpdmUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgbWV0
cmljcy5leHBlbnNpdmUgPSBXVEZNb3ZlKCpleHBlbnNpdmUpOworCisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBjb25zdHJhaW5lZDsKKyAgICBkZWNvZGVyID4+IGNvbnN0cmFpbmVkOworICAgIGlm
ICghY29uc3RyYWluZWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgbWV0cmlj
cy5jb25zdHJhaW5lZCA9IFdURk1vdmUoKmNvbnN0cmFpbmVkKTsKKworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbXVsdGlwYXRoOworICAgIGRlY29kZXIgPj4gbXVsdGlwYXRoOworICAgIGlmICgh
bXVsdGlwYXRoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIG1ldHJpY3MubXVs
dGlwYXRoID0gV1RGTW92ZSgqbXVsdGlwYXRoKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
aXNSZXVzZWRDb25uZWN0aW9uOworICAgIGRlY29kZXIgPj4gaXNSZXVzZWRDb25uZWN0aW9uOwor
ICAgIGlmICghaXNSZXVzZWRDb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIG1ldHJpY3MuaXNSZXVzZWRDb25uZWN0aW9uID0gV1RGTW92ZSgqaXNSZXVzZWRDb25u
ZWN0aW9uKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZmFpbHNUQU9DaGVjazsKKyAgICBk
ZWNvZGVyID4+IGZhaWxzVEFPQ2hlY2s7CisgICAgaWYgKCFmYWlsc1RBT0NoZWNrKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIG1ldHJpY3MuZmFpbHNUQU9DaGVjayA9IFdURk1v
dmUoKmZhaWxzVEFPQ2hlY2spOworCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNDcm9zc09y
aWdpblJlZGlyZWN0OworICAgIGRlY29kZXIgPj4gaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdDsKKyAg
ICBpZiAoIWhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgbWV0cmljcy5oYXNDcm9zc09yaWdpblJlZGlyZWN0ID0gV1RGTW92ZSgqaGFzQ3Jv
c3NPcmlnaW5SZWRpcmVjdCk7CisKKyAgICBpZiAoIShkZWNvZGVyLmRlY29kZShtZXRyaWNzLnBy
aXZhY3lTdGFuY2UpCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVzcG9uc2VC
b2R5Qnl0ZXNSZWNlaXZlZCkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZXNw
b25zZUJvZHlEZWNvZGVkU2l6ZSk7CisgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3Mu
cmVzcG9uc2VCb2R5RGVjb2RlZFNpemUpKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzQWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmlj
c0ZvcldlYkluc3BlY3RvcjsKKyAgICBkZWNvZGVyID4+IGhhc0FkZGl0aW9uYWxOZXR3b3JrTG9h
ZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I7CisgICAgaWYgKCFoYXNBZGRpdGlvbmFsTmV0d29ya0xv
YWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIGlmICgqaGFzQWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcikg
eworICAgICAgICBtZXRyaWNzLmFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNw
ZWN0b3IgPSBBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yOjpkZWNv
ZGUoZGVjb2Rlcik7CisgICAgICAgIGlmICghbWV0cmljcy5hZGRpdGlvbmFsTmV0d29ya0xvYWRN
ZXRyaWNzRm9yV2ViSW5zcGVjdG9yKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICB9CisgICAgcmV0dXJuIG1ldHJpY3M7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+
Cit2b2lkIEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgcHJpb3JpdHk7Cisg
ICAgZW5jb2RlciA8PCByZW1vdGVBZGRyZXNzOworICAgIGVuY29kZXIgPDwgY29ubmVjdGlvbklk
ZW50aWZpZXI7CisKKyAgICBlbmNvZGVyIDw8IHRsc1Byb3RvY29sOworICAgIGVuY29kZXIgPDwg
dGxzQ2lwaGVyOworCisgICAgZW5jb2RlciA8PCByZXF1ZXN0SGVhZGVyczsKKworICAgIGVuY29k
ZXIgPDwgcmVxdWVzdEhlYWRlckJ5dGVzU2VudDsKKyAgICBlbmNvZGVyIDw8IHJlc3BvbnNlSGVh
ZGVyQnl0ZXNSZWNlaXZlZDsKKyAgICBlbmNvZGVyIDw8IHJlcXVlc3RCb2R5Qnl0ZXNTZW50Owor
fQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorUmVmUHRyPEFkZGl0aW9uYWxOZXR3b3JrTG9h
ZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I+IEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JX
ZWJJbnNwZWN0b3I6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9u
YWw8TmV0d29ya0xvYWRQcmlvcml0eT4gcHJpb3JpdHk7CisgICAgZGVjb2RlciA+PiBwcmlvcml0
eTsKKyAgICBpZiAoIXByaW9yaXR5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcmVtb3RlQWRkcmVzczsKKyAgICBkZWNvZGVyID4+IHJl
bW90ZUFkZHJlc3M7CisgICAgaWYgKCFyZW1vdGVBZGRyZXNzKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb25uZWN0aW9uSWRlbnRpZmllcjsK
KyAgICBkZWNvZGVyID4+IGNvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIGlmICghY29ubmVjdGlv
bklkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IHRsc1Byb3RvY29sOworICAgIGRlY29kZXIgPj4gdGxzUHJvdG9jb2w7CisgICAg
aWYgKCF0bHNQcm90b2NvbCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gdGxzQ2lwaGVyOworICAgIGRlY29kZXIgPj4gdGxzQ2lwaGVyOworICAg
IGlmICghdGxzQ2lwaGVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0ZDo6b3B0
aW9uYWw8SFRUUEhlYWRlck1hcD4gcmVxdWVzdEhlYWRlcnM7CisgICAgZGVjb2RlciA+PiByZXF1
ZXN0SGVhZGVyczsKKyAgICBpZiAoIXJlcXVlc3RIZWFkZXJzKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJlcXVlc3RIZWFkZXJCeXRlc1Nl
bnQ7CisgICAgZGVjb2RlciA+PiByZXF1ZXN0SGVhZGVyQnl0ZXNTZW50OworICAgIGlmICghcmVx
dWVzdEhlYWRlckJ5dGVzU2VudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiByZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQ7CisgICAgZGVj
b2RlciA+PiByZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQ7CisgICAgaWYgKCFyZXNwb25zZUhl
YWRlckJ5dGVzUmVjZWl2ZWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gcmVxdWVzdEJvZHlCeXRlc1NlbnQ7CisgICAgZGVjb2RlciA+PiBy
ZXF1ZXN0Qm9keUJ5dGVzU2VudDsKKyAgICBpZiAoIXJlcXVlc3RCb2R5Qnl0ZXNTZW50KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gZGVjb2RlZCA9IGFkb3B0UmVmKCpuZXcg
QWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcik7CisgICAgZGVjb2Rl
ZC0+cHJpb3JpdHkgPSBXVEZNb3ZlKCpwcmlvcml0eSk7CisgICAgZGVjb2RlZC0+cmVtb3RlQWRk
cmVzcyA9IFdURk1vdmUoKnJlbW90ZUFkZHJlc3MpOworICAgIGRlY29kZWQtPmNvbm5lY3Rpb25J
ZGVudGlmaWVyID0gV1RGTW92ZSgqY29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIGRlY29kZWQt
PnRsc1Byb3RvY29sID0gV1RGTW92ZSgqdGxzUHJvdG9jb2wpOworICAgIGRlY29kZWQtPnRsc0Np
cGhlciA9IFdURk1vdmUoKnRsc0NpcGhlcik7CisgICAgZGVjb2RlZC0+cmVxdWVzdEhlYWRlcnMg
PSBXVEZNb3ZlKCpyZXF1ZXN0SGVhZGVycyk7CisgICAgZGVjb2RlZC0+cmVxdWVzdEhlYWRlckJ5
dGVzU2VudCA9IFdURk1vdmUoKnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQpOworICAgIGRlY29kZWQt
PnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCA9IFdURk1vdmUoKnJlc3BvbnNlSGVhZGVyQnl0
ZXNSZWNlaXZlZCk7CisgICAgZGVjb2RlZC0+cmVxdWVzdEJvZHlCeXRlc1NlbnQgPSBXVEZNb3Zl
KCpyZXF1ZXN0Qm9keUJ5dGVzU2VudCk7CisgICAgcmV0dXJuIGRlY29kZWQ7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKQEAgLTMwMyw0ICszNjAsMTQgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpQcml2YWN5U3RhbmNlPiB7CiAgICAgPjsKIH07CiAKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eT4gewor
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtM
b2FkUHJpb3JpdHksCisgICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHk6OkxvdywK
KyAgICAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eTo6TWVkaXVtLAorICAgICAgICBX
ZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5OjpIaWdoLAorICAgICAgICBXZWJDb3JlOjpOZXR3
b3JrTG9hZFByaW9yaXR5OjpVbmtub3duCisgICAgPjsKK307CisKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAK
aW5kZXggNjEzNjAwNTQyMDkwYTJiOTc3MzFhZmZmM2JmZmY5OTU0NTY0OTRkMy4uOTUwZTgyNjdl
MmE1ZTg2YmE3OWQ2NzllN2Q3MzYxMTAxYzBmYmFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTgw
Miw3ICs4MDIsNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXp5SW5pdChJbml0TGV2
ZWwgaW5pdExldmVsKSBjb25zdAogICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VSZXNwb25zZSo+KHN0
YXRpY19jYXN0PGNvbnN0IFJlc291cmNlUmVzcG9uc2UqPih0aGlzKSktPnBsYXRmb3JtTGF6eUlu
aXQoaW5pdExldmVsKTsKIH0KIAotYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKQorYm9v
bCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21w
YXJpc29uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IGIpCiB7CiAgICAgaWYgKGEuaXNOdWxsKCkgIT0gYi5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOyAgCkBAIC04MjIsMTYgKzgyMiw2IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6
OmNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoYS5odHRwSGVhZGVyRmllbGRzKCkgIT0gYi5o
dHRwSGVhZGVyRmllbGRzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5tX25l
dHdvcmtMb2FkTWV0cmljcy5nZXQoKSAhPSBiLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpKSB7
Ci0gICAgICAgIGlmICghYS5tX25ldHdvcmtMb2FkTWV0cmljcykgewotICAgICAgICAgICAgaWYg
KE5ldHdvcmtMb2FkTWV0cmljcygpICE9ICpiLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlmICghYi5tX25l
dHdvcmtMb2FkTWV0cmljcykgewotICAgICAgICAgICAgaWYgKE5ldHdvcmtMb2FkTWV0cmljcygp
ICE9ICphLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlmICgqYS5tX25ldHdvcmtMb2FkTWV0cmljcy5nZXQo
KSAhPSAqYi5tX25ldHdvcmtMb2FkTWV0cmljcy5nZXQoKSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9CiAgICAgcmV0dXJuIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFy
ZShhLCBiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmluZGV4IDE3NmI3MzdkYTUzYmVjMTA2M2EyOTgxNDVm
N2MxMzliMWU2MzE0YWQuLjI2MmU1MzE4MGQ2ZGQ3YzRkMTMzZGRjMWRhZjU2NTJiZDZmMzFjNzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNw
b25zZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmgKQEAgLTIwOSw3ICsyMDksNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVzb3VyY2VSZXNwb25zZSBzeW50aGV0aWNSZWRpcmVjdFJlc3BvbnNl
KGNvbnN0IFVSTCYgZnJvbVVSTCwgY29uc3QgVVJMJiB0b1VSTCk7CiAKLSAgICBzdGF0aWMgYm9v
bCBjb21wYXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CisgICAgc3RhdGljIGJvb2wgZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJp
c29uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZShEZWNvZGVyJiwgUmVzb3VyY2VSZXNwb25zZUJhc2UmKTsKQEAgLTI4NSw5ICsy
ODUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgc2hvcnQgbV9odHRwU3RhdHVzQ29kZSB7IDAgfTsKIH07
CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNv
bXBhcmUoYSwgYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gIShhID09IGIpOyB9
Ci0KIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCmluZGV4IDYwODQwNmI4M2U1
MzkyZjIzYWU5OWNjOWNmMjA2MzJkMjUzNmNkNmEuLjE2ZTg0NjAxYjI0YzU4MmM5ZmRhOWEyOWQ1
OTM0ZjE4OGZiOGYyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApAQCAtODYyLDE2ICs4NjIsMjAgQEAgdm9pZCBDdXJs
SGFuZGxlOjphZGRFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhOZXR3b3JrTG9hZE1ldHJpY3MmIG5l
dHdvcmtMb2FkTWV0cmkKICAgICBpZiAoZXJyb3JDb2RlICE9IENVUkxFX09LKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRlckJ5dGVzU2VudCA9
IHJlcXVlc3RIZWFkZXJTaXplOwotICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0Qm9keUJ5
dGVzU2VudCA9IHJlcXVlc3RCb2R5U2l6ZTsKLSAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9u
c2VIZWFkZXJCeXRlc1JlY2VpdmVkID0gcmVzcG9uc2VIZWFkZXJTaXplOwogICAgIG5ldHdvcmtM
b2FkTWV0cmljcy5yZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkID0gcmVzcG9uc2VCb2R5U2l6ZTsK
IAorICAgIGF1dG8gYWRkaXRpb25hbE1ldHJpY3MgPSBhZG9wdFJlZigqbmV3IEFkZGl0aW9uYWxO
ZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IpOworICAgIGFkZGl0aW9uYWxNZXRyaWNz
LT5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50ID0gcmVxdWVzdEhlYWRlclNpemU7CisgICAgYWRkaXRp
b25hbE1ldHJpY3MtPnJlcXVlc3RCb2R5Qnl0ZXNTZW50ID0gcmVxdWVzdEJvZHlTaXplOworICAg
IGFkZGl0aW9uYWxNZXRyaWNzLT5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQgPSByZXNwb25z
ZUhlYWRlclNpemU7CisKICAgICBpZiAoaXApIHsKLSAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNz
LnJlbW90ZUFkZHJlc3MgPSBTdHJpbmcoaXApOworICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+
cmVtb3RlQWRkcmVzcyA9IFN0cmluZyhpcCk7CiAgICAgICAgIGlmIChwb3J0KQotICAgICAgICAg
ICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlbW90ZUFkZHJlc3MuYXBwZW5kKCI6IiArIFN0cmluZzo6
bnVtYmVyKHBvcnQpKTsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZW1vdGVBZGRy
ZXNzLmFwcGVuZCgiOiIgKyBTdHJpbmc6Om51bWJlcihwb3J0KSk7CiAgICAgfQorCisgICAgbmV0
d29ya0xvYWRNZXRyaWNzLmFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0
b3IgPSBXVEZNb3ZlKGFkZGl0aW9uYWxNZXRyaWNzKTsKIH0KIAogc3RkOjpvcHRpb25hbDxDZXJ0
aWZpY2F0ZUluZm8+IEN1cmxIYW5kbGU6OmNlcnRpZmljYXRlSW5mbygpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApp
bmRleCAyOTg3MzU1ODViYmMyNWQxMjc3Zjk2NWI1OTllNDNjYTY2ZTZmY2JlLi4xNmE4YzQyZDE0
MTRkNDVlYTRhNzc3YjU1MTA3ZDIwZTI5OWFiNzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTc1Nyw3ICs3NTcs
OCBAQCBOZXR3b3JrTG9hZE1ldHJpY3MgQ3VybFJlcXVlc3Q6Om5ldHdvcmtMb2FkTWV0cmljcygp
CiAKICAgICBpZiAobV9jYXB0dXJlRXh0cmFNZXRyaWNzKSB7CiAgICAgICAgIG1fY3VybEhhbmRs
ZS0+YWRkRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKm5ldHdvcmtMb2FkTWV0cmljcyk7Ci0gICAg
ICAgIG5ldHdvcmtMb2FkTWV0cmljcy0+cmVxdWVzdEhlYWRlcnMgPSBtX3JlcXVlc3RIZWFkZXJz
OworICAgICAgICBpZiAoYXV0byogYWRkaXRpb25hbE1ldHJpY3MgPSBuZXR3b3JrTG9hZE1ldHJp
Y3MtPmFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IuZ2V0KCkpCisg
ICAgICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEhlYWRlcnMgPSBtX3JlcXVlc3RI
ZWFkZXJzOwogICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MtPnJlc3BvbnNlQm9keURlY29kZWRT
aXplID0gbV90b3RhbFJlY2VpdmVkU2l6ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAK
aW5kZXggZjhiNzA4YWRiNmRmZjVlMDIxNGJkZmIxMjgzNmViZjhiNmVlY2YyMS4uZGU5NDc0Mjg2
M2JmOTc5MzQwMzlhZjM2MTJiMDQ2YTIxM2ZkOWRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAK
QEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdl
YkNoYWxsZW5nZSkKKyAgICBpZiAoIUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6ZXF1YWxG
b3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNoYWxsZW5nZSwgZC0+bV9jdXJyZW50
V2ViQ2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGNyZWRlbnRpYWwuaXNF
bXB0eSgpKSB7CkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2
ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2EKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKGNoYWxsZW5nZSAhPSBkLT5t
X2N1cnJlbnRXZWJDaGFsbGVuZ2UpCisgICAgaWYgKCFBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJh
c2U6OmVxdWFsRm9yV2ViS2l0TGVnYWN5Q2hhbGxlbmdlQ29tcGFyaXNvbihjaGFsbGVuZ2UsIGQt
Pm1fY3VycmVudFdlYkNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNsZWFyQXV0
aGVudGljYXRpb24oKTsKQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bgogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAoY2hhbGxlbmdlICE9
IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKKyAgICBpZiAoIUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNoYWxsZW5n
ZSwgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KGNsaWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCmluZGV4IGJjNDRjYmI0Y2ExNDZmMTQwNWUxYWRi
ZmJhNzM0ODkwMmY4YTgwZDguLjkwOWQ5MmZkZDA2YWFiMmFjNGU5MzBiYzAzN2JlNjAwYzc1OTcx
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlSGFuZGxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlSGFuZGxlTWFjLm1tCkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBj
aGFsbGVuZ2UKICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCByZWNlaXZlZENyZWRlbnRpYWwi
LCB0aGlzKTsKIAogICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKLSAgICBpZiAoY2hh
bGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKKyAgICBpZiAoIUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29u
KGNoYWxsZW5nZSwgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gRklYTUU6IFN1cHBvcnQgZW1wdHkgY3JlZGVudGlhbHMuIEN1cnJlbnRseSwgYW4g
ZW1wdHkgY3JlZGVudGlhbCBjYW5ub3QgYmUgc3RvcmVkIGluIFdlYkNvcmUgY3JlZGVudGlhbCBz
dG9yYWdlLCBhcyB0aGF0J3MgZW1wdHkgdmFsdWUgZm9yIGl0cyBtYXAuCkBAIC02MDcsNyArNjA3
LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhv
dXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2EKICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAl
cCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwiLCB0aGlzKTsKIAog
ICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKLSAgICBpZiAoY2hhbGxlbmdlICE9IGQt
Pm1fY3VycmVudFdlYkNoYWxsZW5nZSkKKyAgICBpZiAoIUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
QmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNoYWxsZW5nZSwg
ZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgW1tkLT5t
X2N1cnJlbnRNYWNDaGFsbGVuZ2Ugc2VuZGVyXSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9y
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6ZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlXTsKQEAgLTYx
OSw3ICs2MTksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbgogewogICAgIExPRyhOZXR3b3Jr
LCAiSGFuZGxlICVwIHJlY2VpdmVkQ2FuY2VsbGF0aW9uIiwgdGhpcyk7CiAKLSAgICBpZiAoY2hh
bGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKKyAgICBpZiAoIUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29u
KGNoYWxsZW5nZSwgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKGNsaWVudCgpKQpAQCAtNjMxLDcgKzYzMSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25zdCBBdXRoZW50
aWNhdGlvCiAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgcmVjZWl2ZWRSZXF1ZXN0VG9QZXJm
b3JtRGVmYXVsdEhhbmRsaW5nIiwgdGhpcyk7CiAKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5pc051
bGwoKSk7Ci0gICAgaWYgKGNoYWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCisg
ICAgaWYgKCFBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFsRm9yV2ViS2l0TGVnYWN5
Q2hhbGxlbmdlQ29tcGFyaXNvbihjaGFsbGVuZ2UsIGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIFtbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHNlbmRl
cl0gcGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmQtPm1f
Y3VycmVudE1hY0NoYWxsZW5nZV07CkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZTo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGMKICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCByZWNlaXZlZENoYWxsZW5nZVJl
amVjdGlvbiIsIHRoaXMpOwogCiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwotICAg
IGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKQorICAgIGlmICghQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjplcXVhbEZvcldlYktpdExlZ2FjeUNoYWxsZW5nZUNv
bXBhcmlzb24oY2hhbGxlbmdlLCBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBbW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBzZW5kZXJdIHJlamVjdFBy
b3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENoYWxsZW5nZTpkLT5tX2N1cnJlbnRNYWNDaGFs
bGVuZ2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDgyZjFlNTMwMTQ0ZmEwZmYyZGFiMTFlNjQ0YzA5Yjdm
Njg2MWEwMDAuLjIzMGUxZjhhMDcxY2U3ZTVkYjQzZDExMDAyZDA2MGQyNDlmMmY4NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTEyMjcsOSArMTIyNywxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c2VuZFJlc3VsdEZvckNhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZQog
CiAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljczsKICAg
ICBuZXR3b3JrTG9hZE1ldHJpY3MubWFya0NvbXBsZXRlKCk7Ci0gICAgbmV0d29ya0xvYWRNZXRy
aWNzLnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQgPSAwOwotICAgIG5ldHdvcmtMb2FkTWV0cmljcy5y
ZXF1ZXN0Qm9keUJ5dGVzU2VudCA9IDA7Ci0gICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNl
SGVhZGVyQnl0ZXNSZWNlaXZlZCA9IDA7CisgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcygpKSB7CisgICAgICAgIGF1dG8gYWRkaXRpb25hbE1ldHJpY3MgPSBhZG9w
dFJlZigqbmV3IFdlYkNvcmU6OkFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNw
ZWN0b3IpOworICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEhlYWRlckJ5dGVzU2Vu
dCA9IDA7CisgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0Qm9keUJ5dGVzU2VudCA9
IDA7CisgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2
ZWQgPSAwOworICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MuYWRkaXRpb25hbE5ldHdvcmtMb2Fk
TWV0cmljc0ZvcldlYkluc3BlY3RvciA9IFdURk1vdmUoYWRkaXRpb25hbE1ldHJpY3MpOworICAg
IH0KICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZCA9IDA7
CiAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlQm9keURlY29kZWRTaXplID0gMDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCmluZGV4IDEzOGM0ZTkyOTFkNTMzZTg3ZWJmNDJiY2Q1YjM2ZWYwNTg2
ZDIyOTguLjZlMWM2NWJkMzAyMzQ5YWRiMTg0OTE2ZmJhOGExMmQ4NmRmOGUwMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0KQEAgLTg3OCwyOCArODc4LDI5IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogI2VuZGlmCiAKICAgICAgICAgaWYgKG5ldHdvcmtEYXRhVGFzay0+c2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkpIHsKLSAgICAgICAgICAgIG5ldHdvcmtM
b2FkTWV0cmljcy5wcmlvcml0eSA9IHRvTmV0d29ya0xvYWRQcmlvcml0eSh0YXNrLnByaW9yaXR5
KTsKKyAgICAgICAgICAgIGF1dG8gYWRkaXRpb25hbE1ldHJpY3MgPSBhZG9wdFJlZigqbmV3IFdl
YkNvcmU6OkFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IpOworICAg
ICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnByaW9yaXR5ID0gdG9OZXR3b3JrTG9hZFByaW9y
aXR5KHRhc2sucHJpb3JpdHkpOwogCiAjaWYgSEFWRShDRk5FVFdPUktfTUVUUklDU19BUElTX1Y0
KQogICAgICAgICAgICAgaWYgKGF1dG8gcG9ydCA9IFttLnJlbW90ZVBvcnQgdW5zaWduZWRJbnRW
YWx1ZV0pCi0gICAgICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlbW90ZUFkZHJlc3Mg
PSBtYWtlU3RyaW5nKFN0cmluZyhtLnJlbW90ZUFkZHJlc3MpLCAnOicsIHBvcnQpOworICAgICAg
ICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZW1vdGVBZGRyZXNzID0gbWFrZVN0cmluZyhT
dHJpbmcobS5yZW1vdGVBZGRyZXNzKSwgJzonLCBwb3J0KTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVtb3RlQWRkcmVzcyA9IG0ucmVtb3Rl
QWRkcmVzczsKKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVtb3RlQWRkcmVz
cyA9IG0ucmVtb3RlQWRkcmVzczsKICNlbHNlCiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlbW90
ZUFkZHJlc3MgPSBTdHJpbmcobS5fcmVtb3RlQWRkcmVzc0FuZFBvcnQpOworICAgICAgICAgICAg
YWRkaXRpb25hbE1ldHJpY3MtPnJlbW90ZUFkZHJlc3MgPSBTdHJpbmcobS5fcmVtb3RlQWRkcmVz
c0FuZFBvcnQpOwogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAjZW5kaWYKLSAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0aW9uSWRlbnRp
ZmllciA9IFN0cmluZyhbbS5fY29ubmVjdGlvbklkZW50aWZpZXIgVVVJRFN0cmluZ10pOworICAg
ICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPmNvbm5lY3Rpb25JZGVudGlmaWVyID0gU3RyaW5n
KFttLl9jb25uZWN0aW9uSWRlbnRpZmllciBVVUlEU3RyaW5nXSk7CiAKICNpZiBIQVZFKENGTkVU
V09SS19ORUdPVElBVEVEX1NTTF9QUk9UT0NPTF9DSVBIRVIpCiAjaWYgSEFWRShDRk5FVFdPUktf
TUVUUklDU19BUElTX1Y0KQotICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnRsc1Byb3Rv
Y29sID0gc3RyaW5nRm9yVExTUHJvdG9jb2xWZXJzaW9uKCh0bHNfcHJvdG9jb2xfdmVyc2lvbl90
KVttLm5lZ290aWF0ZWRUTFNQcm90b2NvbFZlcnNpb24gdW5zaWduZWRTaG9ydFZhbHVlXSk7Ci0g
ICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MudGxzQ2lwaGVyID0gc3RyaW5nRm9yVExTQ2lw
aGVyU3VpdGUoKHRsc19jaXBoZXJzdWl0ZV90KVttLm5lZ290aWF0ZWRUTFNDaXBoZXJTdWl0ZSB1
bnNpZ25lZFNob3J0VmFsdWVdKTsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT50bHNQ
cm90b2NvbCA9IHN0cmluZ0ZvclRMU1Byb3RvY29sVmVyc2lvbigodGxzX3Byb3RvY29sX3ZlcnNp
b25fdClbbS5uZWdvdGlhdGVkVExTUHJvdG9jb2xWZXJzaW9uIHVuc2lnbmVkU2hvcnRWYWx1ZV0p
OworICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnRsc0NpcGhlciA9IHN0cmluZ0ZvclRM
U0NpcGhlclN1aXRlKCh0bHNfY2lwaGVyc3VpdGVfdClbbS5uZWdvdGlhdGVkVExTQ2lwaGVyU3Vp
dGUgdW5zaWduZWRTaG9ydFZhbHVlXSk7CiAjZWxzZQogICAgICAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy50
bHNQcm90b2NvbCA9IHN0cmluZ0ZvclNTTFByb3RvY29sKG0uX25lZ290aWF0ZWRUTFNQcm90b2Nv
bCk7Ci0gICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MudGxzQ2lwaGVyID0gc3RyaW5nRm9y
U1NMQ2lwaGVyKG0uX25lZ290aWF0ZWRUTFNDaXBoZXIpOworICAgICAgICAgICAgYWRkaXRpb25h
bE1ldHJpY3MtPnRsc1Byb3RvY29sID0gc3RyaW5nRm9yU1NMUHJvdG9jb2wobS5fbmVnb3RpYXRl
ZFRMU1Byb3RvY29sKTsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT50bHNDaXBoZXIg
PSBzdHJpbmdGb3JTU0xDaXBoZXIobS5fbmVnb3RpYXRlZFRMU0NpcGhlcik7CiAgICAgICAgICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgogI2VuZGlmCkBAIC05
MDgsNyArOTA5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAg
ICAgICBbbS5yZXF1ZXN0LmFsbEhUVFBIZWFkZXJGaWVsZHMgZW51bWVyYXRlS2V5c0FuZE9iamVj
dHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKm5hbWUsIE5TU3RyaW5nICp2YWx1ZSwgQk9PTCAqKSB7
CiAgICAgICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMuc2V0KFN0cmluZyhuYW1lKSwgU3RyaW5n
KHZhbHVlKSk7CiAgICAgICAgICAgICB9XTsKLSAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmlj
cy5yZXF1ZXN0SGVhZGVycyA9IFdURk1vdmUocmVxdWVzdEhlYWRlcnMpOworICAgICAgICAgICAg
YWRkaXRpb25hbE1ldHJpY3MtPnJlcXVlc3RIZWFkZXJzID0gV1RGTW92ZShyZXF1ZXN0SGVhZGVy
cyk7CiAKICAgICAgICAgICAgIHVpbnQ2NF90IHJlcXVlc3RIZWFkZXJCeXRlc1NlbnQgPSAwOwog
ICAgICAgICAgICAgdWludDY0X3QgcmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkID0gMDsKQEAg
LTkyNSw5ICs5MjYsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5k
aWYKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlcXVl
c3RIZWFkZXJCeXRlc1NlbnQgPSByZXF1ZXN0SGVhZGVyQnl0ZXNTZW50OwotICAgICAgICAgICAg
bmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RCb2R5Qnl0ZXNTZW50ID0gdGFzay5jb3VudE9mQnl0
ZXNTZW50OwotICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlSGVhZGVyQnl0
ZXNSZWNlaXZlZCA9IHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZDsKKyAgICAgICAgICAgIGFk
ZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50ID0gcmVxdWVzdEhlYWRlckJ5
dGVzU2VudDsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0Qm9keUJ5dGVz
U2VudCA9IHRhc2suY291bnRPZkJ5dGVzU2VudDsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRy
aWNzLT5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQgPSByZXNwb25zZUhlYWRlckJ5dGVzUmVj
ZWl2ZWQ7CisgICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MuYWRkaXRpb25hbE5ldHdvcmtM
b2FkTWV0cmljc0ZvcldlYkluc3BlY3RvciA9IFdURk1vdmUoYWRkaXRpb25hbE1ldHJpY3MpOwog
ICAgICAgICB9CiAjaWYgSEFWRShDRk5FVFdPUktfTUVUUklDU19BUElTX1Y0KQogICAgICAgICBu
ZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZCA9IG0uY291bnRPZlJl
c3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggZmFmMTk2MzI1
MzAxNzI1MjBlOTcwNWM5YjFjY2JlNDZiNTc3MzhjMy4uOGZjZDBmMDdkZWNiMzNiMjMwODlkYmJj
Njc0NmI0MjA3MGZlM2M0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMTE4NCw2ICsxMTg0LDEz
IEBAIHN0YXRpYyBBdG9tU3RyaW5nIHNvdXBIVFRQVmVyc2lvblRvU3RyaW5nKFNvdXBIVFRQVmVy
c2lvbiB2ZXJzaW9uKQogICAgIHJldHVybiB7IH07CiB9CiAKK1dlYkNvcmU6OkFkZGl0aW9uYWxO
ZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3ImIE5ldHdvcmtEYXRhVGFza1NvdXA6OmFk
ZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IoKQoreworICAgIGlmICgh
bV9uZXR3b3JrTG9hZE1ldHJpY3MuYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYklu
c3BlY3RvcikKKyAgICAgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MuYWRkaXRpb25hbE5ldHdvcmtM
b2FkTWV0cmljc0ZvcldlYkluc3BlY3RvciA9IGFkb3B0UmVmKCpuZXcgV2ViQ29yZTo6QWRkaXRp
b25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcik7CisgICAgcmV0dXJuICptX25l
dHdvcmtMb2FkTWV0cmljcy5hZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVj
dG9yOworfQorCiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZEdldEhlYWRlcnMoKQogewog
ICAgIC8vIFdlIGFyZSBhIGJpdCBtb3JlIGNvbnNlcnZhdGl2ZSB3aXRoIHRoZSBwZXJzaXN0ZW50
IGNyZWRlbnRpYWwgc3RvcmFnZSB0aGFuIHRoZSBzZXNzaW9uIHN0b3JlLApAQCAtMTIwNyw2ICsx
MjE0LDggQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRHZXRIZWFkZXJzKCkKICAgICAv
LyBpcyB0aGUgZmlyc3Qgb25lIHdlIHJlY2VpdmUgYWZ0ZXIgc3RhcnRpbmcsIHNvIHdlIHVzZSBp
dCBhbHNvIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUKICAgICAvLyByZXF1ZXN0IGhlYWRl
cnMuCiAgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpKSB7Cisg
ICAgICAgIGF1dG8mIGFkZGl0aW9uYWxNZXRyaWNzID0gYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0
cmljc0ZvcldlYkluc3BlY3RvcigpOworCiAgICAgICAgIEhUVFBIZWFkZXJNYXAgcmVxdWVzdEhl
YWRlcnM7CiAgICAgICAgIFNvdXBNZXNzYWdlSGVhZGVyc0l0ZXIgaGVhZGVyc0l0ZXI7CiAgICAg
ICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2l0ZXJfaW5pdCgmaGVhZGVyc0l0ZXIsIHNvdXBfbWVz
c2FnZV9nZXRfcmVxdWVzdF9oZWFkZXJzKG1fc291cE1lc3NhZ2UuZ2V0KCkpKTsKQEAgLTEyMTQs
MTcgKzEyMjMsMTcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRHZXRIZWFkZXJzKCkK
ICAgICAgICAgY29uc3QgY2hhciogaGVhZGVyVmFsdWU7CiAgICAgICAgIHdoaWxlIChzb3VwX21l
c3NhZ2VfaGVhZGVyc19pdGVyX25leHQoJmhlYWRlcnNJdGVyLCAmaGVhZGVyTmFtZSwgJmhlYWRl
clZhbHVlKSkKICAgICAgICAgICAgIHJlcXVlc3RIZWFkZXJzLnNldChTdHJpbmcoaGVhZGVyTmFt
ZSksIFN0cmluZyhoZWFkZXJWYWx1ZSkpOwotICAgICAgICBtX25ldHdvcmtMb2FkTWV0cmljcy5y
ZXF1ZXN0SGVhZGVycyA9IFdURk1vdmUocmVxdWVzdEhlYWRlcnMpOworICAgICAgICBhZGRpdGlv
bmFsTWV0cmljcy5yZXF1ZXN0SGVhZGVycyA9IFdURk1vdmUocmVxdWVzdEhlYWRlcnMpOwogCi0g
ICAgICAgIG1fbmV0d29ya0xvYWRNZXRyaWNzLnByaW9yaXR5ID0gdG9OZXR3b3JrTG9hZFByaW9y
aXR5KHNvdXBfbWVzc2FnZV9nZXRfcHJpb3JpdHkobV9zb3VwTWVzc2FnZS5nZXQoKSkpOworICAg
ICAgICBhZGRpdGlvbmFsTWV0cmljcy5wcmlvcml0eSA9IHRvTmV0d29ya0xvYWRQcmlvcml0eShz
b3VwX21lc3NhZ2VfZ2V0X3ByaW9yaXR5KG1fc291cE1lc3NhZ2UuZ2V0KCkpKTsKICNpZiAhVVNF
KFNPVVAyKQotICAgICAgICBtX25ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0aW9uSWRlbnRpZmll
ciA9IFN0cmluZzo6bnVtYmVyKHNvdXBfbWVzc2FnZV9nZXRfY29ubmVjdGlvbl9pZChtX3NvdXBN
ZXNzYWdlLmdldCgpKSk7CisgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLmNvbm5lY3Rpb25JZGVu
dGlmaWVyID0gU3RyaW5nOjpudW1iZXIoc291cF9tZXNzYWdlX2dldF9jb25uZWN0aW9uX2lkKG1f
c291cE1lc3NhZ2UuZ2V0KCkpKTsKICAgICAgICAgYXV0byogYWRkcmVzcyA9IHNvdXBfbWVzc2Fn
ZV9nZXRfcmVtb3RlX2FkZHJlc3MobV9zb3VwTWVzc2FnZS5nZXQoKSk7CiAgICAgICAgIGlmIChH
X0lTX0lORVRfU09DS0VUX0FERFJFU1MoYWRkcmVzcykpIHsKICAgICAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gaXBBZGRyZXNzKGdfaW5ldF9hZGRyZXNzX3RvX3N0cmluZyhnX2luZXRfc29ja2V0
X2FkZHJlc3NfZ2V0X2FkZHJlc3MoR19JTkVUX1NPQ0tFVF9BRERSRVNTKGFkZHJlc3MpKSkpOwot
ICAgICAgICAgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVtb3RlQWRkcmVzcyA9IG1ha2VTdHJp
bmcoaXBBZGRyZXNzLmdldCgpLCAnOicsIGdfaW5ldF9zb2NrZXRfYWRkcmVzc19nZXRfcG9ydChH
X0lORVRfU09DS0VUX0FERFJFU1MoYWRkcmVzcykpKTsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxN
ZXRyaWNzLnJlbW90ZUFkZHJlc3MgPSBtYWtlU3RyaW5nKGlwQWRkcmVzcy5nZXQoKSwgJzonLCBn
X2luZXRfc29ja2V0X2FkZHJlc3NfZ2V0X3BvcnQoR19JTkVUX1NPQ0tFVF9BRERSRVNTKGFkZHJl
c3MpKSk7CiAgICAgICAgIH0KLSAgICAgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VI
ZWFkZXJCeXRlc1JlY2VpdmVkID0gc291cF9tZXNzYWdlX21ldHJpY3NfZ2V0X3Jlc3BvbnNlX2hl
YWRlcl9ieXRlc19yZWNlaXZlZChtZXRyaWNzKTsKKyAgICAgICAgYWRkaXRpb25hbE1ldHJpY3Mu
cmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkID0gc291cF9tZXNzYWdlX21ldHJpY3NfZ2V0X3Jl
c3BvbnNlX2hlYWRlcl9ieXRlc19yZWNlaXZlZChtZXRyaWNzKTsKICNlbmRpZgogICAgIH0KIApA
QCAtMTI0MCw3ICsxMjQ5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjp3cm90ZUhlYWRl
cnNDYWxsYmFjayhTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIE5ldHdvcmsKICAgICB9CiAgICAg
QVNTRVJUKHRhc2stPm1fc291cE1lc3NhZ2UuZ2V0KCkgPT0gc291cE1lc3NhZ2UpOwogICAgIGF1
dG8qIG1ldHJpY3MgPSBzb3VwX21lc3NhZ2VfZ2V0X21ldHJpY3Moc291cE1lc3NhZ2UpOwotICAg
IHRhc2stPm1fbmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQgPSBzb3Vw
X21lc3NhZ2VfbWV0cmljc19nZXRfcmVxdWVzdF9oZWFkZXJfYnl0ZXNfc2VudChtZXRyaWNzKTsK
KyAgICB0YXNrLT5hZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yKCku
cmVxdWVzdEhlYWRlckJ5dGVzU2VudCA9IHNvdXBfbWVzc2FnZV9tZXRyaWNzX2dldF9yZXF1ZXN0
X2hlYWRlcl9ieXRlc19zZW50KG1ldHJpY3MpOwogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza1Nv
dXA6Ondyb3RlQm9keUNhbGxiYWNrKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgTmV0d29ya0Rh
dGFUYXNrU291cCogdGFzaykKQEAgLTEyNTEsNyArMTI2MCw3IEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrU291cDo6d3JvdGVCb2R5Q2FsbGJhY2soU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBOZXR3
b3JrRGF0CiAgICAgfQogICAgIEFTU0VSVCh0YXNrLT5tX3NvdXBNZXNzYWdlLmdldCgpID09IHNv
dXBNZXNzYWdlKTsKICAgICBhdXRvKiBtZXRyaWNzID0gc291cF9tZXNzYWdlX2dldF9tZXRyaWNz
KHNvdXBNZXNzYWdlKTsKLSAgICB0YXNrLT5tX25ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0Qm9k
eUJ5dGVzU2VudCA9IHNvdXBfbWVzc2FnZV9tZXRyaWNzX2dldF9yZXF1ZXN0X2JvZHlfYnl0ZXNf
c2VudChtZXRyaWNzKTsKKyAgICB0YXNrLT5hZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9y
V2ViSW5zcGVjdG9yKCkucmVxdWVzdEJvZHlCeXRlc1NlbnQgPSBzb3VwX21lc3NhZ2VfbWV0cmlj
c19nZXRfcmVxdWVzdF9ib2R5X2J5dGVzX3NlbnQobWV0cmljcyk7CiB9CiAKIHZvaWQgTmV0d29y
a0RhdGFUYXNrU291cDo6Z290Qm9keUNhbGxiYWNrKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwg
TmV0d29ya0RhdGFUYXNrU291cCogdGFzaykKQEAgLTE0ODcsNyArMTQ5Niw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrU291cDo6bmV0d29ya0V2ZW50KEdTb2NrZXRDbGllbnRFdmVudCBldmVudCwg
R0lPU3RyZWFtKiBzdHJlCiAgICAgICAgICAgICBHUmVmUHRyPEdTb2NrZXRBZGRyZXNzPiBhZGRy
ZXNzID0gYWRvcHRHUmVmKGdfc29ja2V0X2Nvbm5lY3Rpb25fZ2V0X3JlbW90ZV9hZGRyZXNzKEdf
U09DS0VUX0NPTk5FQ1RJT04oc3RyZWFtKSwgbnVsbHB0cikpOwogICAgICAgICAgICAgaWYgKEdf
SVNfSU5FVF9TT0NLRVRfQUREUkVTUyhhZGRyZXNzLmdldCgpKSkgewogICAgICAgICAgICAgICAg
IEdVbmlxdWVQdHI8Y2hhcj4gaXBBZGRyZXNzKGdfaW5ldF9hZGRyZXNzX3RvX3N0cmluZyhnX2lu
ZXRfc29ja2V0X2FkZHJlc3NfZ2V0X2FkZHJlc3MoR19JTkVUX1NPQ0tFVF9BRERSRVNTKGFkZHJl
c3MuZ2V0KCkpKSkpOwotICAgICAgICAgICAgICAgIG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlbW90
ZUFkZHJlc3MgPSBtYWtlU3RyaW5nKGlwQWRkcmVzcy5nZXQoKSwgJzonLCBnX2luZXRfc29ja2V0
X2FkZHJlc3NfZ2V0X3BvcnQoR19JTkVUX1NPQ0tFVF9BRERSRVNTKGFkZHJlc3MuZ2V0KCkpKSk7
CisgICAgICAgICAgICAgICAgYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3Bl
Y3RvcigpLnJlbW90ZUFkZHJlc3MgPSBtYWtlU3RyaW5nKGlwQWRkcmVzcy5nZXQoKSwgJzonLCBn
X2luZXRfc29ja2V0X2FkZHJlc3NfZ2V0X3BvcnQoR19JTkVUX1NPQ0tFVF9BRERSRVNTKGFkZHJl
c3MuZ2V0KCkpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLy8gV2ViIFRp
bWluZyBjb25zaWRlcnMgdGhhdCBjb25uZWN0aW9uIHRpbWUgaW52b2x2ZXMgZG5zLCBwcm94eSAm
IFRMUyBuZWdvdGlhdGlvbi4uLgpAQCAtMTYwNiw3ICsxNjE1LDcgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2tTb3VwOjpyZXN0YXJ0ZWRDYWxsYmFjayhTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIE5l
dHdvcmtEYXQKIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZXN0YXJ0KCkKIHsKLSAg
ICBtX25ldHdvcmtMb2FkTWV0cmljcyA9IHsgfTsKKyAgICBtX25ldHdvcmtMb2FkTWV0cmljcyA9
IE5ldHdvcmtMb2FkTWV0cmljczo6ZW1wdHlNZXRyaWNzKCk7CiAjaWYgVVNFKFNPVVAyKQogICAg
IG1fbmV0d29ya0xvYWRNZXRyaWNzLmZldGNoU3RhcnQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsK
ICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuaAppbmRleCBjMzMzMDY1MWQ2NjI0ZGFkZDQ5NmM2ODlmYjA4YzE0
NDNhMWE1ZTcxLi5jZmVkNmIzODI2MzE5ZTg1ODI2ZjhmNDFmYjEwMDEwYjBjYTA5MTJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0
YVRhc2tTb3VwLmgKQEAgLTE4MSw2ICsxODEsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRS
ZWFkRGF0YVVSTChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRhdGFVUkxEZWNvZGVyOjpSZXN1bHQ+
JiYpOwogCisgICAgV2ViQ29yZTo6QWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYklu
c3BlY3RvciYgYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcigpOwor
CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIG1fZnJhbWVJRDsKICAgICBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlN1c3Bl
bmRlZCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApp
bmRleCBlNzA0ZWNiODgxNGNjZGQwNjEwYTdiMjI4MWM3NGM3Mjk1YTBjNTc1Li41NjI4YTdjN2Mw
YzlhZDhjYTY1ZmMwZWFjYmFlNWZiODU3OGY3ZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtOTAzLDE2ICs5MDMsNiBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OklucHV0TW9kZT4gewogICAgID47CiB9OwogCi10
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHk+
IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpOZXR3
b3JrTG9hZFByaW9yaXR5LAotICAgICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5OjpM
b3csCi0gICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHk6Ok1lZGl1bSwKLSAgICAg
ICAgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eTo6SGlnaCwKLSAgICAgICAgV2ViQ29yZTo6
TmV0d29ya0xvYWRQcmlvcml0eTo6VW5rbm93bgotICAgID47Ci19OwotCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRpcmVjdGlvbj4gewogICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRp
cmVjdGlvbiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436366</attachid>
            <date>2021-08-24 19:26:20 -0700</date>
            <delta_ts>2021-08-31 16:44:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226982-20210825112619.patch</filename>
            <type>text/plain</type>
            <size>62318</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNiZmRlYzMwYjIwZjQ0
OGUyMTQ4Mjk2ZWVjZjk4NjRlNjgzOGU4MS4uNDRhYTViNzhhYjY4MTAxNWQ5ZDNmMDJlZGIzMmE0
OGM3NTIxMTU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIxLTA4LTI0ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNl
IHNpemVvZihOZXR3b3JrTG9hZE1ldHJpY3MpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuICBKdXN0IGdyZWF0bHkg
cmVkdWNpbmcgdGhlIHNpemUgb2YgYSBjb21tb24gc3RydWN0dXJlLgorCisgICAgICAgIFdlIHRh
a2UgYWxsIHRoZSBtZW1iZXJzIHRoYXQgYXJlbid0IHVzZWQgd2l0aG91dCB0aGUgaW5zcGVjdG9y
IGFuZCBtb3ZlIHRoZW0gdG8gYSBuZXcgc3RydWN0LAorICAgICAgICBBZGRpdGlvbmFsTmV0d29y
a0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yLiAgV2UgYWxzbyByZW1vdmUgc29tZSBlcXVhbGl0
eSBjb21wYXJpc29uIHRoYXQKKyAgICAgICAgd2FzIHVubmVjZXNzYXJ5IGJlY2F1c2UgaXQgd2Fz
IG9ubHkgdXNlZCBmb3IgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgZXF1YWxpdHkgY29tcGFyaXNv
bnMgaW4KKyAgICAgICAgUmVzb3VyY2VIYW5kbGVNYWMuICBXZSBhbHNvIHVzZSBlbXB0eU1ldHJp
Y3MoKSB0byByZW1vdmUgYSBmZXcgdW5uZWNlc3NhcnkgYW5kIGhhcmQgdG8gc2VlCisgICAgICAg
IGNvcHkgY29uc3RydWN0b3IgY2FsbHMuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvck1ldHJpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvclJlc291cmNlUmVz
cG9uc2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFsRm9yV2ViS2l0TGVnYWN5Q2hh
bGxlbmdlQ29tcGFyaXNvbik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUJhc2U6OmNvbXBhcmUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
cj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6Ok5ldHdvcmtMb2FkTWV0cmlj
cyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcyk6
CisgICAgICAgIChXZWJDb3JlOjpBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5z
cGVjdG9yOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0
d29ya0xvYWRNZXRyaWNzLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9y
V2ViSW5zcGVjdG9yOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWRkaXRpb25h
bE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcjo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljc1dpdGhvdXROb25UaW1pbmdEYXRhOjppc0NvbXBsZXRl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljc1dp
dGhvdXROb25UaW1pbmdEYXRhOjptYXJrQ29tcGxldGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjpOZXR3b3JrTG9hZE1ldHJpY3MpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjppc29sYXRlZENvcHkgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjpvcGVyYXRv
cj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
czo6b3BlcmF0b3IhPSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9w
ZXJhdG9yIT0pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsSGFuZGxlOjphZGRFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpuZXR3b3JrTG9hZE1ldHJp
Y3MpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlh
bCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9D
b250aW51ZVdpdGhvdXRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0
SGFuZGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hh
bGxlbmdlUmVqZWN0aW9uKToKKwogMjAyMS0wOC0yNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFw
QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXByb3ZlIGRpYWdub3N0aWNzIGZvciBtaXNzaW5nIGZp
bGVzIGluIERlcml2ZWRTb3VyY2VzLm1ha2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzdkYjg0YzM2YmU0ZDk2ZTkz
M2MzZGFjMjllN2ZmZTgwYWNhMzFmMi4uYjE4NGZhNjJlZDY3MzMxNmFjZTExNjQyMWYwM2FkMDQx
MzBjNWVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wOC0yNCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBzaXpl
b2YoTmV0d29ya0xvYWRNZXRyaWNzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI2OTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRGb3JD
YWNoZUVudHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lv
bjp0YXNrOmRpZEZpbmlzaENvbGxlY3RpbmdNZXRyaWNzOl0pOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza1NvdXA6OmFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNw
ZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRHZXRIZWFk
ZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6d3JvdGVIZWFkZXJz
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjp3cm90ZUJv
ZHlDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6Om5ldHdv
cmtFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlc3Rh
cnQpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKwogMjAyMS0w
OC0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIElt
cGxlbWVudCBwcm9jZXNzLXN3YXBwaW5nIGJhc2VkIG9uIENyb3NzLU9yaWdpbi1PcGVuZXItUG9s
aWN5IEhUVFAgaGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDZkNTlkYzNmZDg3ODRhYzM1NzYwYWRk
ZjVkOTIwNThkMjU4NGQwN2IuLjc5MjlmYjM1ZGU2MzAyNzAwYWIyOTAwZWYzMDk0ZWU4N2U5MGJi
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDg1LDYgKzIwODUsNyBAQCBwbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBIZWFkZXJNYXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJWYWx1ZXMuY3Bw
CiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAogcGxhdGZvcm0vbmV0d29yay9NSU1F
SGVhZGVyLmNwcAorcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAogcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRS
YW5nZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBkMGFhMGU4ZDJiOWI5MTA3M2I5ODNhNjhjZjU5ZjdlNjZhMmE1Mzc1Li4z
Mzc1NWQ2MGY2ZDQ0ODZiMDJjMmVmMjgxOTIzMzAwMjc2MjEyMjQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NjYxLDYgKzk2
NjEsNyBAQAogCQk1QzlFRjJGMjIxRjA2MTcxMDAzQkRDNTYgLyogU3RvcmFnZVNlc3Npb25Qcm92
aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTFERUMyMUY3MUU2ODYw
MEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSFRUUEhlYWRlckZpZWxkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUNBMURFQzQxRjcxRTY4NzAwRTcxQkQzIC8qIEhUVFBIZWFkZXJGaWVsZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVFRQSGVhZGVyRmllbGQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNBQzVEMDgyNkNFRjAwMTAwQkFGRDE0IC8qIE5ldHdvcmtM
b2FkTWV0cmljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3
b3JrTG9hZE1ldHJpY3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IzN0ZG
QzFDNjJEMjc4MDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yTW9jay5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjM3RkZEMUM2MkQyNzgwMEYyMDE4OCAvKiBTY3JvbGxB
bmltYXRvck1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQW5p
bWF0b3JNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM4REFBMUFBQTMw
MjIwMEUxQzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTcwMiw2ICsyMTcwMyw3IEBACiAJCQkJ
NTE0Qzc2NUUwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmggKi8sCiAJCQkJNjI4RDIx
NEIxMjEzMUVEMTAwNTVEQ0ZDIC8qIE5ldHdvcmtpbmdDb250ZXh0LmggKi8sCiAJCQkJNDE2RDc1
OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCAqLywKKwkJCQk1
Q0FDNUQwODI2Q0VGMDAxMDBCQUZEMTQgLyogTmV0d29ya0xvYWRNZXRyaWNzLmNwcCAqLywKIAkJ
CQk4QTgxQkY4NDExRENGRDkwMDBEQTJCOTggLyogTmV0d29ya0xvYWRNZXRyaWNzLmggKi8sCiAJ
CQkJMUE3RkE2MUEwRERBM0JCRTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCAq
LywKIAkJCQkxQTdGQTYxODBEREEzQjNBMDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXIu
aCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA3OTQ4ODUyZGQ5YTZiYzQyYjQwMTE2OTQxY2Uw
MzQ2YzMyZTE2ZjJkLi42MjQ2NTU4ODgxOTU4MzJkZmVjODEwYmE2ODU5NmYxOTZkY2Y4MGJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0yNjMsMjEgKzI2MywyMiBAQCBSZWY8UHJvdG9jb2w6Ok5l
dHdvcms6Ok1ldHJpY3M+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JNZXRy
aWNzKGNvbgogCiAgICAgaWYgKCFuZXR3b3JrTG9hZE1ldHJpY3MucHJvdG9jb2wuaXNOdWxsKCkp
CiAgICAgICAgIG1ldHJpY3MtPnNldFByb3RvY29sKG5ldHdvcmtMb2FkTWV0cmljcy5wcm90b2Nv
bCk7Ci0gICAgaWYgKG5ldHdvcmtMb2FkTWV0cmljcy5wcmlvcml0eSAhPSBOZXR3b3JrTG9hZFBy
aW9yaXR5OjpVbmtub3duKQotICAgICAgICBtZXRyaWNzLT5zZXRQcmlvcml0eSh0b1Byb3RvY29s
KG5ldHdvcmtMb2FkTWV0cmljcy5wcmlvcml0eSkpOwotICAgIGlmICghbmV0d29ya0xvYWRNZXRy
aWNzLnJlbW90ZUFkZHJlc3MuaXNOdWxsKCkpCi0gICAgICAgIG1ldHJpY3MtPnNldFJlbW90ZUFk
ZHJlc3MobmV0d29ya0xvYWRNZXRyaWNzLnJlbW90ZUFkZHJlc3MpOwotICAgIGlmICghbmV0d29y
a0xvYWRNZXRyaWNzLmNvbm5lY3Rpb25JZGVudGlmaWVyLmlzTnVsbCgpKQotICAgICAgICBtZXRy
aWNzLT5zZXRDb25uZWN0aW9uSWRlbnRpZmllcihuZXR3b3JrTG9hZE1ldHJpY3MuY29ubmVjdGlv
bklkZW50aWZpZXIpOwotICAgIGlmICghbmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RIZWFkZXJz
LmlzRW1wdHkoKSkKLSAgICAgICAgbWV0cmljcy0+c2V0UmVxdWVzdEhlYWRlcnMoYnVpbGRPYmpl
Y3RGb3JIZWFkZXJzKG5ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0SGVhZGVycykpOwotCi0gICAg
aWYgKG5ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50ICE9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSkKLSAgICAgICAgbWV0cmljcy0+c2V0UmVxdWVz
dEhlYWRlckJ5dGVzU2VudChuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRlckJ5dGVzU2Vu
dCk7Ci0gICAgaWYgKG5ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0Qm9keUJ5dGVzU2VudCAhPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCi0gICAgICAgIG1ldHJpY3MtPnNl
dFJlcXVlc3RCb2R5Qnl0ZXNTZW50KG5ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0Qm9keUJ5dGVz
U2VudCk7Ci0gICAgaWYgKG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUhlYWRlckJ5dGVzUmVj
ZWl2ZWQgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKQotICAgICAgICBt
ZXRyaWNzLT5zZXRSZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQobmV0d29ya0xvYWRNZXRyaWNz
LnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCk7CisgICAgaWYgKGF1dG8qIGFkZGl0aW9uYWxN
ZXRyaWNzID0gbmV0d29ya0xvYWRNZXRyaWNzLmFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NG
b3JXZWJJbnNwZWN0b3IuZ2V0KCkpIHsKKyAgICAgICAgaWYgKGFkZGl0aW9uYWxNZXRyaWNzLT5w
cmlvcml0eSAhPSBOZXR3b3JrTG9hZFByaW9yaXR5OjpVbmtub3duKQorICAgICAgICAgICAgbWV0
cmljcy0+c2V0UHJpb3JpdHkodG9Qcm90b2NvbChhZGRpdGlvbmFsTWV0cmljcy0+cHJpb3JpdHkp
KTsKKyAgICAgICAgaWYgKCFhZGRpdGlvbmFsTWV0cmljcy0+cmVtb3RlQWRkcmVzcy5pc051bGwo
KSkKKyAgICAgICAgICAgIG1ldHJpY3MtPnNldFJlbW90ZUFkZHJlc3MoYWRkaXRpb25hbE1ldHJp
Y3MtPnJlbW90ZUFkZHJlc3MpOworICAgICAgICBpZiAoIWFkZGl0aW9uYWxNZXRyaWNzLT5jb25u
ZWN0aW9uSWRlbnRpZmllci5pc051bGwoKSkKKyAgICAgICAgICAgIG1ldHJpY3MtPnNldENvbm5l
Y3Rpb25JZGVudGlmaWVyKGFkZGl0aW9uYWxNZXRyaWNzLT5jb25uZWN0aW9uSWRlbnRpZmllcik7
CisgICAgICAgIGlmICghYWRkaXRpb25hbE1ldHJpY3MtPnJlcXVlc3RIZWFkZXJzLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIG1ldHJpY3MtPnNldFJlcXVlc3RIZWFkZXJzKGJ1aWxkT2JqZWN0Rm9y
SGVhZGVycyhhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEhlYWRlcnMpKTsKKyAgICAgICAgaWYg
KGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50ICE9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dWludDY0X3Q+OjptYXgoKSkKKyAgICAgICAgICAgIG1ldHJpY3MtPnNldFJlcXVl
c3RIZWFkZXJCeXRlc1NlbnQoYWRkaXRpb25hbE1ldHJpY3MtPnJlcXVlc3RIZWFkZXJCeXRlc1Nl
bnQpOworICAgICAgICBpZiAoYWRkaXRpb25hbE1ldHJpY3MtPnJlcXVlc3RCb2R5Qnl0ZXNTZW50
ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSkKKyAgICAgICAgICAgIG1l
dHJpY3MtPnNldFJlcXVlc3RCb2R5Qnl0ZXNTZW50KGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0
Qm9keUJ5dGVzU2VudCk7CisgICAgICAgIGlmIChhZGRpdGlvbmFsTWV0cmljcy0+cmVzcG9uc2VI
ZWFkZXJCeXRlc1JlY2VpdmVkICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgo
KSkKKyAgICAgICAgICAgIG1ldHJpY3MtPnNldFJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZChh
ZGRpdGlvbmFsTWV0cmljcy0+cmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkKTsKKyAgICB9CiAg
ICAgaWYgKG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkICE9IHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSkKICAgICAgICAgbWV0cmljcy0+c2V0
UmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZChuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5
Qnl0ZXNSZWNlaXZlZCk7CiAgICAgaWYgKG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUJvZHlE
ZWNvZGVkU2l6ZSAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCkBAIC0y
ODYsMTEgKzI4NywxMiBAQCBSZWY8UHJvdG9jb2w6Ok5ldHdvcms6Ok1ldHJpY3M+IEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JNZXRyaWNzKGNvbgogICAgIGF1dG8gY29ubmVj
dGlvblBheWxvYWQgPSBQcm90b2NvbDo6U2VjdXJpdHk6OkNvbm5lY3Rpb246OmNyZWF0ZSgpCiAg
ICAgICAgIC5yZWxlYXNlKCk7CiAKLSAgICBpZiAoIW5ldHdvcmtMb2FkTWV0cmljcy50bHNQcm90
b2NvbC5pc0VtcHR5KCkpCi0gICAgICAgIGNvbm5lY3Rpb25QYXlsb2FkLT5zZXRQcm90b2NvbChu
ZXR3b3JrTG9hZE1ldHJpY3MudGxzUHJvdG9jb2wpOwotCi0gICAgaWYgKCFuZXR3b3JrTG9hZE1l
dHJpY3MudGxzQ2lwaGVyLmlzRW1wdHkoKSkKLSAgICAgICAgY29ubmVjdGlvblBheWxvYWQtPnNl
dENpcGhlcihuZXR3b3JrTG9hZE1ldHJpY3MudGxzQ2lwaGVyKTsKKyAgICBpZiAoYXV0byogYWRk
aXRpb25hbE1ldHJpY3MgPSBuZXR3b3JrTG9hZE1ldHJpY3MuYWRkaXRpb25hbE5ldHdvcmtMb2Fk
TWV0cmljc0ZvcldlYkluc3BlY3Rvci5nZXQoKSkgeworICAgICAgICBpZiAoIWFkZGl0aW9uYWxN
ZXRyaWNzLT50bHNQcm90b2NvbC5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb25uZWN0aW9uUGF5
bG9hZC0+c2V0UHJvdG9jb2woYWRkaXRpb25hbE1ldHJpY3MtPnRsc1Byb3RvY29sKTsKKyAgICAg
ICAgaWYgKCFhZGRpdGlvbmFsTWV0cmljcy0+dGxzQ2lwaGVyLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIGNvbm5lY3Rpb25QYXlsb2FkLT5zZXRDaXBoZXIoYWRkaXRpb25hbE1ldHJpY3MtPnRsc0Np
cGhlcik7CisgICAgfQogCiAgICAgbWV0cmljcy0+c2V0U2VjdXJpdHlDb25uZWN0aW9uKFdURk1v
dmUoY29ubmVjdGlvblBheWxvYWQpKTsKIApAQCAtMzUzLDcgKzM1NSw3IEBAIFJlZlB0cjxQcm90
b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmpl
Y3RGb3JSZXNvdXJjCiAKICAgICBpZiAocmVzb3VyY2VMb2FkZXIpIHsKICAgICAgICAgYXV0byog
bWV0cmljcyA9IHJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsK
LSAgICAgICAgcmVzcG9uc2VPYmplY3QtPnNldFRpbWluZyhidWlsZE9iamVjdEZvclRpbWluZyht
ZXRyaWNzID8gKm1ldHJpY3MgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9LCAqcmVzb3VyY2VMb2Fk
ZXIpKTsKKyAgICAgICAgcmVzcG9uc2VPYmplY3QtPnNldFRpbWluZyhidWlsZE9iamVjdEZvclRp
bWluZyhtZXRyaWNzID8gKm1ldHJpY3MgOiBOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0cmlj
cygpLCAqcmVzb3VyY2VMb2FkZXIpKTsKICAgICB9CiAKICAgICBpZiAoYXV0byYgY2VydGlmaWNh
dGVJbmZvID0gcmVzcG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNWE5YTU3ZTkz
OTA1MjhmZDM1OTliMDdkYjYwYWMxNWIwMDY2Yzk3MC4uNjM0YTUwYjMyODI3NTVkZjdmMjNjYTg5
ZWNhOWQwNGIxMTNhNjMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTY2NCw3ICs2NjQsNyBAQCB2b2lkIERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
U2VjdXJpdHlDaAogICAgIH0KIAogICAgIGNvbnN0IGF1dG8qIHRpbWluZyA9IHJlc3BvbnNlLmRl
cHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKLSAgICBhdXRvIHJlc291cmNlVGlt
aW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21TeW5jaHJvbm91c0xvYWQocmVxdWVzdFVSTCwgbV9v
cHRpb25zLmluaXRpYXRvciwgbG9hZFRpbWluZywgdGltaW5nID8gKnRpbWluZyA6IE5ldHdvcmtM
b2FkTWV0cmljcyB7IH0sIHJlc3BvbnNlLCBzZWN1cml0eU9yaWdpbigpKTsKKyAgICBhdXRvIHJl
c291cmNlVGltaW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21TeW5jaHJvbm91c0xvYWQocmVxdWVz
dFVSTCwgbV9vcHRpb25zLmluaXRpYXRvciwgbG9hZFRpbWluZywgdGltaW5nID8gKnRpbWluZyA6
IE5ldHdvcmtMb2FkTWV0cmljczo6ZW1wdHlNZXRyaWNzKCksIHJlc3BvbnNlLCBzZWN1cml0eU9y
aWdpbigpKTsKICAgICBpZiAob3B0aW9ucygpLmluaXRpYXRvckNvbnRleHQgPT0gSW5pdGlhdG9y
Q29udGV4dDo6V29ya2VyKQogICAgICAgICBmaW5pc2hlZFRpbWluZ0ZvcldvcmtlckxvYWQocmVz
b3VyY2VUaW1pbmcpOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggMWFkODQwYmNkZjdlMWY2N2QyMDI4ZWUwY2U3MThkYzIxY2Ri
NDBlMS4uMjY0NmJmZWRlYzM0Mzg0MWNhN2ZkYzhjMzA0OTY1YzRmOTYzOWM1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00OTgsNyArNDk4LDcg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb20KICAgICAgICAgaWYgKHJlc3BvbnNlSGFzSFRUUFN0
YXR1c0NvZGVFcnJvcigpKSB7CiAgICAgICAgICAgICBtX2xvYWRUaW1pbmcubWFya0VuZFRpbWUo
KTsKICAgICAgICAgICAgIGF1dG8qIG1ldHJpY3MgPSB0aGlzLT5yZXNwb25zZSgpLmRlcHJlY2F0
ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKLSAgICAgICAgICAgIHJlcG9ydFJlc291cmNl
VGltaW5nKG1ldHJpY3MgPyAqbWV0cmljcyA6IE5ldHdvcmtMb2FkTWV0cmljcyB7IH0pOworICAg
ICAgICAgICAgcmVwb3J0UmVzb3VyY2VUaW1pbmcobWV0cmljcyA/ICptZXRyaWNzIDogTmV0d29y
a0xvYWRNZXRyaWNzOjplbXB0eU1ldHJpY3MoKSk7CiAKICAgICAgICAgICAgIG1fc3RhdGUgPSBG
aW5pc2hpbmc7CiAgICAgICAgICAgICBtX3Jlc291cmNlLT5lcnJvcihDYWNoZWRSZXNvdXJjZTo6
TG9hZEVycm9yKTsKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZQog
ICAgICAgICAvLyBjb21wbGV0ZSBsb2FkIG1ldHJpY3MgaW4gZGlkRmluaXNoTG9hZC4gSW4gdGhv
c2UgY2FzZXMsIGZhbGwgYmFjayB0byB0aGUgcG9zc2liaWxpdHkKICAgICAgICAgLy8gdGhhdCB0
aGV5IHBvcHVsYXRlZCBwYXJ0aWFsIGxvYWQgdGltaW5nIGluZm9ybWF0aW9uIG9uIHRoZSBSZXNv
dXJjZVJlc3BvbnNlLgogICAgICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSBtX3Jlc291cmNlLT5y
ZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKLSAgICAgICAg
cmVwb3J0UmVzb3VyY2VUaW1pbmcodGltaW5nID8gKnRpbWluZyA6IE5ldHdvcmtMb2FkTWV0cmlj
cyB7IH0pOworICAgICAgICByZXBvcnRSZXNvdXJjZVRpbWluZyh0aW1pbmcgPyAqdGltaW5nIDog
TmV0d29ya0xvYWRNZXRyaWNzOjplbXB0eU1ldHJpY3MoKSk7CiAgICAgfQogCiAgICAgaWYgKG1f
cmVzb3VyY2UtPnR5cGUoKSAhPSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggMjExYjMyYTM0N2YxZTkzYmYwZTQ0NzBmMzRkNDQ5Nzc5NDJhNzE5NC4uZGE1
ODUzNDVjOThiZDE5M2U1NmJlMTJkZmM5OTQzMzk1M2RjMjA0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDQw
LDcgKzEwNDAsNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdQogICAgICAgICAgICAgICAgIC8v
IGZvciB0aGlzIGRvY3VtZW50IGJlY2F1c2UgaXQgbWF5IGhhdmUgYmVlbiBzcGVjdWxhdGl2ZWx5
IHByZWxvYWRlZC4KICAgICAgICAgICAgICAgICBpZiAoYXV0byBtZXRyaWNzRnJvbVJlc291cmNl
ID0gcmVzb3VyY2UtPnRha2VOZXR3b3JrTG9hZE1ldHJpY3MoKTsgbWV0cmljc0Zyb21SZXNvdXJj
ZSAmJiBkb2N1bWVudExvYWRlciAmJiBtZXRyaWNzRnJvbVJlc291cmNlLT5yZWRpcmVjdFN0YXJ0
ID49IGRvY3VtZW50TG9hZGVyLT50aW1pbmcoKS50aW1lT3JpZ2luKCkpCiAgICAgICAgICAgICAg
ICAgICAgIG1ldHJpY3MgPSBXVEZNb3ZlKG1ldHJpY3NGcm9tUmVzb3VyY2UpOwotICAgICAgICAg
ICAgICAgIGF1dG8gcmVzb3VyY2VUaW1pbmcgPSBSZXNvdXJjZVRpbWluZzo6ZnJvbU1lbW9yeUNh
Y2hlKHVybCwgcmVxdWVzdC5pbml0aWF0b3JOYW1lKCksIGxvYWRUaW1pbmcsIHJlc291cmNlLT5y
ZXNwb25zZSgpLCBtZXRyaWNzID8gKm1ldHJpY3MgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9LCAq
cmVxdWVzdC5vcmlnaW4oKSk7CisgICAgICAgICAgICAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9
IFJlc291cmNlVGltaW5nOjpmcm9tTWVtb3J5Q2FjaGUodXJsLCByZXF1ZXN0LmluaXRpYXRvck5h
bWUoKSwgbG9hZFRpbWluZywgcmVzb3VyY2UtPnJlc3BvbnNlKCksIG1ldHJpY3MgPyAqbWV0cmlj
cyA6IE5ldHdvcmtMb2FkTWV0cmljczo6ZW1wdHlNZXRyaWNzKCksICpyZXF1ZXN0Lm9yaWdpbigp
KTsKICAgICAgICAgICAgICAgICBpZiAoaW5pdGlhdG9yQ29udGV4dCA9PSBJbml0aWF0b3JDb250
ZXh0OjpXb3JrZXIpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlzPENhY2hlZFJhd1Jl
c291cmNlPihyZXNvdXJjZS5nZXQoKSkpOwogICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxD
YWNoZWRSYXdSZXNvdXJjZT4ocmVzb3VyY2UuZ2V0KCkpLT5maW5pc2hlZFRpbWluZ0Zvcldvcmtl
ckxvYWQoV1RGTW92ZShyZXNvdXJjZVRpbWluZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2Uu
Y3BwCmluZGV4IDdjMTllMWY1MjE2NDkyNTc5OTRmNzUzZmFlMDMzNzY3NzM5ZTMzOGEuLjFhZWNk
MmU0ZjlhNDliZTE1OGVkOGUzNjYyNDlkOGNhMTljZDM2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQmFzZS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUJhc2U6Om51bGxpZnkoKQogICAgIG1faXNOdWxsID0gdHJ1ZTsKIH0KIAotYm9vbCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmNvbXBhcmUoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKQorYm9vbCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFsRm9yV2ViS2l0TGVnYWN5Q2hhbGxlbmdlQ29tcGFyaXNv
bihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGIpCiB7CiAgICAgaWYgKGEuaXNOdWxsKCkgJiYgYi5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC05OSw5ICs5OSw5IEBAIGJvb2wgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlOjpjb21wYXJlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25z
CiAgICAgaWYgKGEucHJldmlvdXNGYWlsdXJlQ291bnQoKSAhPSBiLnByZXZpb3VzRmFpbHVyZUNv
dW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgaWYgKGEuZmFpbHVy
ZVJlc3BvbnNlKCkgIT0gYi5mYWlsdXJlUmVzcG9uc2UoKSkKKyAgICBpZiAoIVJlc291cmNlUmVz
cG9uc2VCYXNlOjplcXVhbEZvcldlYktpdExlZ2FjeUNoYWxsZW5nZUNvbXBhcmlzb24oYS5mYWls
dXJlUmVzcG9uc2UoKSwgYi5mYWlsdXJlUmVzcG9uc2UoKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgCisKICAgICBpZiAoYS5lcnJvcigpICE9IGIuZXJyb3IoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oCmluZGV4IGE0
ZjdiNjJlZGExMDJlY2Y1OTk4NzFkMzc1Nzg5MmQ3Nzk5ZDAyMDcuLjU4NjA3MGZlYTk2OWY0YmMy
ODg1NTU2M2RiMzA2ZTZmOTUwY2JlN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaApAQCAt
NDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc051bGwoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG51bGxpZnkoKTsKICAgICAKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29u
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKTsKIAogcHJvdGVjdGVkOgogICAgIC8vIFRoZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSBzdWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBtZXRob2QgdG8gY29tcGFyZSBwbGF0Zm9ybSBz
cGVjaWZpYyBmaWVsZHMKQEAgLTYyLDkgKzYyLDYgQEAgcHJvdGVjdGVkOgogICAgIFJlc291cmNl
RXJyb3IgbV9lcnJvcjsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKSB7
IHJldHVybiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmNvbXBhcmUoYSwgYik7IH0KLWlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KLQog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya0xvYWRNZXRyaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya0xvYWRNZXRyaWNzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2E0YzJmZWQ0ZGVhMGMyNTNiZjJj
YThiYTE1MmQ1MDY5NjY5NDdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtMb2FkTWV0cmljcy5oIgorCisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTmV0d29ya0xvYWRN
ZXRyaWNzOjpOZXR3b3JrTG9hZE1ldHJpY3MoKQorICAgIDogY29tcGxldGUoZmFsc2UpCisgICAg
LCBjZWxsdWxhcihmYWxzZSkKKyAgICAsIGV4cGVuc2l2ZShmYWxzZSkKKyAgICAsIGNvbnN0cmFp
bmVkKGZhbHNlKQorICAgICwgbXVsdGlwYXRoKGZhbHNlKQorICAgICwgaXNSZXVzZWRDb25uZWN0
aW9uKGZhbHNlKQorICAgICwgZmFpbHNUQU9DaGVjayhmYWxzZSkKKyAgICAsIGhhc0Nyb3NzT3Jp
Z2luUmVkaXJlY3QoZmFsc2UpIHsgfQorCitjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIE5ldHdv
cmtMb2FkTWV0cmljczo6ZW1wdHlNZXRyaWNzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8TmV0d29ya0xvYWRNZXRyaWNzPiBtZXRyaWNzOworICAgIHJldHVybiBtZXRyaWNzLmdldCgp
OworfQorCitSZWY8QWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcj4g
QWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcjo6aXNvbGF0ZWRDb3B5
KCkKK3sKKyAgICBhdXRvIGNvcHkgPSBhZG9wdFJlZigqbmV3IEFkZGl0aW9uYWxOZXR3b3JrTG9h
ZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IpOworICAgIGNvcHktPnByaW9yaXR5ID0gcHJpb3JpdHk7
CisgICAgY29weS0+cmVtb3RlQWRkcmVzcyA9IHJlbW90ZUFkZHJlc3MuaXNvbGF0ZWRDb3B5KCk7
CisgICAgY29weS0+Y29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uSWRlbnRpZmllci5p
c29sYXRlZENvcHkoKTsKKyAgICBjb3B5LT50bHNQcm90b2NvbCA9IHRsc1Byb3RvY29sLmlzb2xh
dGVkQ29weSgpOworICAgIGNvcHktPnRsc0NpcGhlciA9IHRsc0NpcGhlci5pc29sYXRlZENvcHko
KTsKKyAgICBjb3B5LT5yZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJzLmlzb2xhdGVkQ29w
eSgpOworICAgIGNvcHktPnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQgPSByZXF1ZXN0SGVhZGVyQnl0
ZXNTZW50OworICAgIGNvcHktPnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCA9IHJlc3BvbnNl
SGVhZGVyQnl0ZXNSZWNlaXZlZDsKKyAgICBjb3B5LT5yZXF1ZXN0Qm9keUJ5dGVzU2VudCA9IHJl
cXVlc3RCb2R5Qnl0ZXNTZW50OworICAgIHJldHVybiBjb3B5OworfQorCitOZXR3b3JrTG9hZE1l
dHJpY3MgTmV0d29ya0xvYWRNZXRyaWNzOjppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIE5l
dHdvcmtMb2FkTWV0cmljcyBjb3B5OworCisgICAgY29weS5yZWRpcmVjdFN0YXJ0ID0gcmVkaXJl
Y3RTdGFydC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LmZldGNoU3RhcnQgPSBmZXRjaFN0YXJ0
Lmlzb2xhdGVkQ29weSgpOworICAgIGNvcHkuZG9tYWluTG9va3VwU3RhcnQgPSBkb21haW5Mb29r
dXBTdGFydC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LmRvbWFpbkxvb2t1cEVuZCA9IGRvbWFp
bkxvb2t1cEVuZC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LmNvbm5lY3RTdGFydCA9IGNvbm5l
Y3RTdGFydC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9
IHNlY3VyZUNvbm5lY3Rpb25TdGFydC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LmNvbm5lY3RF
bmQgPSBjb25uZWN0RW5kLmlzb2xhdGVkQ29weSgpOworICAgIGNvcHkucmVxdWVzdFN0YXJ0ID0g
cmVxdWVzdFN0YXJ0Lmlzb2xhdGVkQ29weSgpOworICAgIGNvcHkucmVzcG9uc2VTdGFydCA9IHJl
c3BvbnNlU3RhcnQuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5yZXNwb25zZUVuZCA9IHJlc3Bv
bnNlRW5kLmlzb2xhdGVkQ29weSgpOworCisgICAgY29weS5wcm90b2NvbCA9IHByb3RvY29sLmlz
b2xhdGVkQ29weSgpOworCisgICAgY29weS5yZWRpcmVjdENvdW50ID0gcmVkaXJlY3RDb3VudDsK
KworICAgIGNvcHkuY29tcGxldGUgPSBjb21wbGV0ZTsKKyAgICBjb3B5LmNlbGx1bGFyID0gY2Vs
bHVsYXI7CisgICAgY29weS5leHBlbnNpdmUgPSBleHBlbnNpdmU7CisgICAgY29weS5jb25zdHJh
aW5lZCA9IGNvbnN0cmFpbmVkOworICAgIGNvcHkubXVsdGlwYXRoID0gbXVsdGlwYXRoOworICAg
IGNvcHkuaXNSZXVzZWRDb25uZWN0aW9uID0gaXNSZXVzZWRDb25uZWN0aW9uOworICAgIGNvcHku
ZmFpbHNUQU9DaGVjayA9IGZhaWxzVEFPQ2hlY2s7CisgICAgY29weS5oYXNDcm9zc09yaWdpblJl
ZGlyZWN0ID0gaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdDsKKworICAgIGNvcHkucHJpdmFjeVN0YW5j
ZSA9IHByaXZhY3lTdGFuY2U7CisKKyAgICBjb3B5LnJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQg
PSByZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkOworICAgIGNvcHkucmVzcG9uc2VCb2R5RGVjb2Rl
ZFNpemUgPSByZXNwb25zZUJvZHlEZWNvZGVkU2l6ZTsKKworICAgIGlmIChhZGRpdGlvbmFsTmV0
d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yKQorICAgICAgICBjb3B5LmFkZGl0aW9uYWxO
ZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IgPSBhZGRpdGlvbmFsTmV0d29ya0xvYWRN
ZXRyaWNzRm9yV2ViSW5zcGVjdG9yLT5pc29sYXRlZENvcHkoKTsKKworICAgIHJldHVybiBjb3B5
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0cmljcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaAppbmRleCBmMWVhNzZlMWRiMTEz
ZGM2NDY5MDg4Njc5YmE5N2M3OGE5MjEzNzc1Li42YjQ2MjlkNWY0NjdmZjgzY2UyY2ZjYmI3NDE2
ZDhlY2I5MzY4ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtMb2FkTWV0cmljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya0xvYWRNZXRyaWNzLmgKQEAgLTM0LDcgKzM0LDYgQEAKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogT0JKQ19DTEFTUyBOU1VSTENvbm5lY3Rpb247Ci1PQkpDX0NMQVNTIE5TVVJMUmVz
cG9uc2U7CiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzOwogI2VuZGlmCiAKQEAg
LTU5LDkgKzU4LDI0IEBAIGVudW0gY2xhc3MgUHJpdmFjeVN0YW5jZSA6IHVpbnQ4X3QgewogCiBj
b25zdGV4cHIgTW9ub3RvbmljVGltZSByZXVzZWRUTFNDb25uZWN0aW9uU2VudGluZWwgeyBNb25v
dG9uaWNUaW1lOjpmcm9tUmF3U2Vjb25kcygtMSkgfTsKIAotY2xhc3MgTmV0d29ya0xvYWRNZXRy
aWNzV2l0aG91dE5vblRpbWluZ0RhdGEgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKE5l
dHdvcmtMb2FkTWV0cmljc1dpdGhvdXROb25UaW1pbmdEYXRhKTsKK3N0cnVjdCBBZGRpdGlvbmFs
TmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yOworCitjbGFzcyBOZXR3b3JrTG9hZE1l
dHJpY3MgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKE5ldHdvcmtMb2FkTWV0cmljcyk7
CiBwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgTmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAg
TmV0d29ya0xvYWRNZXRyaWNzKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpID0gZGVmYXVsdDsK
KyAgICBOZXR3b3JrTG9hZE1ldHJpY3MoTmV0d29ya0xvYWRNZXRyaWNzJiYpID0gZGVmYXVsdDsK
KyAgICBOZXR3b3JrTG9hZE1ldHJpY3MmIG9wZXJhdG9yPShOZXR3b3JrTG9hZE1ldHJpY3MmJikg
PSBkZWZhdWx0OworICAgIE5ldHdvcmtMb2FkTWV0cmljcyYgb3BlcmF0b3I9KGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpID0gZGVmYXVsdDsKKworICAgIHN0YXRpYyBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIGVtcHR5TWV0cmljcygpOworCisgICAgTmV0d29ya0xvYWRNZXRyaWNzIGlzb2xh
dGVkQ29weSgpIGNvbnN0OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZGVjb2RlKERlY29kZXImKTsKKwogICAg
IGJvb2wgaXNDb21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIGNvbXBsZXRlOyB9CiAgICAgdm9pZCBt
YXJrQ29tcGxldGUoKSB7IGNvbXBsZXRlID0gdHJ1ZTsgfQogCkBAIC04MiwxMTAgKzk2LDMyIEBA
IHB1YmxpYzoKIAogICAgIHVpbnQxNl90IHJlZGlyZWN0Q291bnQgeyAwIH07CiAKLSAgICAvLyBG
SVhNRTogVGhlc2UgY291bGQgYWxsIGJlIG1hZGUgYml0IGZpZWxkcy4KLSAgICBib29sIGNvbXBs
ZXRlIHsgZmFsc2UgfTsKLSAgICBib29sIGNlbGx1bGFyIHsgZmFsc2UgfTsKLSAgICBib29sIGV4
cGVuc2l2ZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBjb25zdHJhaW5lZCB7IGZhbHNlIH07Ci0gICAg
Ym9vbCBtdWx0aXBhdGggeyBmYWxzZSB9OwotICAgIGJvb2wgaXNSZXVzZWRDb25uZWN0aW9uIHsg
ZmFsc2UgfTsKLSAgICBib29sIGZhaWxzVEFPQ2hlY2sgeyBmYWxzZSB9OwotICAgIGJvb2wgaGFz
Q3Jvc3NPcmlnaW5SZWRpcmVjdCB7IGZhbHNlIH07Ci19OworICAgIGJvb2wgY29tcGxldGUgOiAx
OworICAgIGJvb2wgY2VsbHVsYXIgOiAxOworICAgIGJvb2wgZXhwZW5zaXZlIDogMTsKKyAgICBi
b29sIGNvbnN0cmFpbmVkIDogMTsKKyAgICBib29sIG11bHRpcGF0aCA6IDE7CisgICAgYm9vbCBp
c1JldXNlZENvbm5lY3Rpb24gOiAxOworICAgIGJvb2wgZmFpbHNUQU9DaGVjayA6IDE7CisgICAg
Ym9vbCBoYXNDcm9zc09yaWdpblJlZGlyZWN0IDogMTsKIAotY2xhc3MgTmV0d29ya0xvYWRNZXRy
aWNzIDogcHVibGljIE5ldHdvcmtMb2FkTWV0cmljc1dpdGhvdXROb25UaW1pbmdEYXRhIHsKLXB1
YmxpYzoKLSAgICBOZXR3b3JrTG9hZE1ldHJpY3MoKQotICAgICAgICA6IE5ldHdvcmtMb2FkTWV0
cmljc1dpdGhvdXROb25UaW1pbmdEYXRhKCkKLSAgICB7Ci0gICAgfQorICAgIFByaXZhY3lTdGFu
Y2UgcHJpdmFjeVN0YW5jZSB7IFByaXZhY3lTdGFuY2U6OlVua25vd24gfTsKIAotICAgIE5ldHdv
cmtMb2FkTWV0cmljcyBpc29sYXRlZENvcHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgTmV0d29y
a0xvYWRNZXRyaWNzIGNvcHk7Ci0KLSAgICAgICAgY29weS5yZWRpcmVjdFN0YXJ0ID0gcmVkaXJl
Y3RTdGFydDsKLSAgICAgICAgY29weS5mZXRjaFN0YXJ0ID0gZmV0Y2hTdGFydDsKLQotICAgICAg
ICBjb3B5LmRvbWFpbkxvb2t1cFN0YXJ0ID0gZG9tYWluTG9va3VwU3RhcnQ7Ci0gICAgICAgIGNv
cHkuZG9tYWluTG9va3VwRW5kID0gZG9tYWluTG9va3VwRW5kOwotICAgICAgICBjb3B5LmNvbm5l
Y3RTdGFydCA9IGNvbm5lY3RTdGFydDsKLSAgICAgICAgY29weS5zZWN1cmVDb25uZWN0aW9uU3Rh
cnQgPSBzZWN1cmVDb25uZWN0aW9uU3RhcnQ7Ci0gICAgICAgIGNvcHkuY29ubmVjdEVuZCA9IGNv
bm5lY3RFbmQ7Ci0gICAgICAgIGNvcHkucmVxdWVzdFN0YXJ0ID0gcmVxdWVzdFN0YXJ0OwotICAg
ICAgICBjb3B5LnJlc3BvbnNlU3RhcnQgPSByZXNwb25zZVN0YXJ0OwotICAgICAgICBjb3B5LnJl
c3BvbnNlRW5kID0gcmVzcG9uc2VFbmQ7Ci0gICAgICAgIGNvcHkuY29tcGxldGUgPSBjb21wbGV0
ZTsKLSAgICAgICAgY29weS5wcm90b2NvbCA9IHByb3RvY29sLmlzb2xhdGVkQ29weSgpOwotICAg
ICAgICBjb3B5LnJlZGlyZWN0Q291bnQgPSByZWRpcmVjdENvdW50OwotICAgICAgICBjb3B5LmNl
bGx1bGFyID0gY2VsbHVsYXI7Ci0gICAgICAgIGNvcHkuZXhwZW5zaXZlID0gZXhwZW5zaXZlOwot
ICAgICAgICBjb3B5LmNvbnN0cmFpbmVkID0gY29uc3RyYWluZWQ7Ci0gICAgICAgIGNvcHkubXVs
dGlwYXRoID0gbXVsdGlwYXRoOwotICAgICAgICBjb3B5LmlzUmV1c2VkQ29ubmVjdGlvbiA9IGlz
UmV1c2VkQ29ubmVjdGlvbjsKLSAgICAgICAgY29weS5mYWlsc1RBT0NoZWNrID0gZmFpbHNUQU9D
aGVjazsKLSAgICAgICAgY29weS5oYXNDcm9zc09yaWdpblJlZGlyZWN0ID0gaGFzQ3Jvc3NPcmln
aW5SZWRpcmVjdDsKLQotICAgICAgICBjb3B5LnJlbW90ZUFkZHJlc3MgPSByZW1vdGVBZGRyZXNz
Lmlzb2xhdGVkQ29weSgpOwotICAgICAgICBjb3B5LmNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29u
bmVjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgICAgIGNvcHkudGxzUHJvdG9j
b2wgPSB0bHNQcm90b2NvbC5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgY29weS50bHNDaXBoZXIg
PSB0bHNDaXBoZXIuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgICAgIGNvcHkucHJpb3JpdHkgPSBwcmlv
cml0eTsKLSAgICAgICAgY29weS5wcml2YWN5U3RhbmNlID0gcHJpdmFjeVN0YW5jZTsKLSAgICAg
ICAgY29weS5yZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJzLmlzb2xhdGVkQ29weSgpOwot
Ci0gICAgICAgIGNvcHkucmVxdWVzdEhlYWRlckJ5dGVzU2VudCA9IHJlcXVlc3RIZWFkZXJCeXRl
c1NlbnQ7Ci0gICAgICAgIGNvcHkucmVxdWVzdEJvZHlCeXRlc1NlbnQgPSByZXF1ZXN0Qm9keUJ5
dGVzU2VudDsKLSAgICAgICAgY29weS5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQgPSByZXNw
b25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQ7Ci0gICAgICAgIGNvcHkucmVzcG9uc2VCb2R5Qnl0ZXNS
ZWNlaXZlZCA9IHJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQ7Ci0gICAgICAgIGNvcHkucmVzcG9u
c2VCb2R5RGVjb2RlZFNpemUgPSByZXNwb25zZUJvZHlEZWNvZGVkU2l6ZTsKLQotICAgICAgICBy
ZXR1cm4gY29weTsKLSAgICB9CisgICAgdWludDY0X3QgcmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZl
ZCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSB9OworICAgIHVpbnQ2NF90
IHJlc3BvbnNlQm9keURlY29kZWRTaXplIHsgc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46
Om1heCgpIH07CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiByZWRpcmVjdFN0YXJ0ID09IG90
aGVyLnJlZGlyZWN0U3RhcnQKLSAgICAgICAgICAgICYmIGZldGNoU3RhcnQgPT0gb3RoZXIuZmV0
Y2hTdGFydAotICAgICAgICAgICAgJiYgZG9tYWluTG9va3VwU3RhcnQgPT0gb3RoZXIuZG9tYWlu
TG9va3VwU3RhcnQKLSAgICAgICAgICAgICYmIGRvbWFpbkxvb2t1cEVuZCA9PSBvdGhlci5kb21h
aW5Mb29rdXBFbmQKLSAgICAgICAgICAgICYmIGNvbm5lY3RTdGFydCA9PSBvdGhlci5jb25uZWN0
U3RhcnQKLSAgICAgICAgICAgICYmIHNlY3VyZUNvbm5lY3Rpb25TdGFydCA9PSBvdGhlci5zZWN1
cmVDb25uZWN0aW9uU3RhcnQKLSAgICAgICAgICAgICYmIGNvbm5lY3RFbmQgPT0gb3RoZXIuY29u
bmVjdEVuZAotICAgICAgICAgICAgJiYgcmVxdWVzdFN0YXJ0ID09IG90aGVyLnJlcXVlc3RTdGFy
dAotICAgICAgICAgICAgJiYgcmVzcG9uc2VTdGFydCA9PSBvdGhlci5yZXNwb25zZVN0YXJ0Ci0g
ICAgICAgICAgICAmJiByZXNwb25zZUVuZCA9PSBvdGhlci5yZXNwb25zZUVuZAotICAgICAgICAg
ICAgJiYgY29tcGxldGUgPT0gb3RoZXIuY29tcGxldGUKLSAgICAgICAgICAgICYmIGNlbGx1bGFy
ID09IG90aGVyLmNlbGx1bGFyCi0gICAgICAgICAgICAmJiBleHBlbnNpdmUgPT0gb3RoZXIuZXhw
ZW5zaXZlCi0gICAgICAgICAgICAmJiBjb25zdHJhaW5lZCA9PSBvdGhlci5jb25zdHJhaW5lZAot
ICAgICAgICAgICAgJiYgbXVsdGlwYXRoID09IG90aGVyLm11bHRpcGF0aAotICAgICAgICAgICAg
JiYgaXNSZXVzZWRDb25uZWN0aW9uID09IG90aGVyLmlzUmV1c2VkQ29ubmVjdGlvbgotICAgICAg
ICAgICAgJiYgZmFpbHNUQU9DaGVjayA9PSBvdGhlci5mYWlsc1RBT0NoZWNrCi0gICAgICAgICAg
ICAmJiBoYXNDcm9zc09yaWdpblJlZGlyZWN0ID09IG90aGVyLmhhc0Nyb3NzT3JpZ2luUmVkaXJl
Y3QKLSAgICAgICAgICAgICYmIHByb3RvY29sID09IG90aGVyLnByb3RvY29sCi0gICAgICAgICAg
ICAmJiByZWRpcmVjdENvdW50ID09IG90aGVyLnJlZGlyZWN0Q291bnQKLSAgICAgICAgICAgICYm
IHJlbW90ZUFkZHJlc3MgPT0gb3RoZXIucmVtb3RlQWRkcmVzcwotICAgICAgICAgICAgJiYgY29u
bmVjdGlvbklkZW50aWZpZXIgPT0gb3RoZXIuY29ubmVjdGlvbklkZW50aWZpZXIKLSAgICAgICAg
ICAgICYmIHRsc1Byb3RvY29sID09IG90aGVyLnRsc1Byb3RvY29sCi0gICAgICAgICAgICAmJiB0
bHNDaXBoZXIgPT0gb3RoZXIudGxzQ2lwaGVyCi0gICAgICAgICAgICAmJiBwcmlvcml0eSA9PSBv
dGhlci5wcmlvcml0eQotICAgICAgICAgICAgJiYgcHJpdmFjeVN0YW5jZSA9PSBvdGhlci5wcml2
YWN5U3RhbmNlCi0gICAgICAgICAgICAmJiByZXF1ZXN0SGVhZGVycyA9PSBvdGhlci5yZXF1ZXN0
SGVhZGVycwotICAgICAgICAgICAgJiYgcmVxdWVzdEhlYWRlckJ5dGVzU2VudCA9PSBvdGhlci5y
ZXF1ZXN0SGVhZGVyQnl0ZXNTZW50Ci0gICAgICAgICAgICAmJiByZXF1ZXN0Qm9keUJ5dGVzU2Vu
dCA9PSBvdGhlci5yZXF1ZXN0Qm9keUJ5dGVzU2VudAotICAgICAgICAgICAgJiYgcmVzcG9uc2VI
ZWFkZXJCeXRlc1JlY2VpdmVkID09IG90aGVyLnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZAot
ICAgICAgICAgICAgJiYgcmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZCA9PSBvdGhlci5yZXNwb25z
ZUJvZHlCeXRlc1JlY2VpdmVkCi0gICAgICAgICAgICAmJiByZXNwb25zZUJvZHlEZWNvZGVkU2l6
ZSA9PSBvdGhlci5yZXNwb25zZUJvZHlEZWNvZGVkU2l6ZTsKLSAgICB9CisgICAgUmVmUHRyPEFk
ZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I+IGFkZGl0aW9uYWxOZXR3
b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I7Cit9OwogCi0gICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorc3RydWN0IEFkZGl0aW9uYWxOZXR3b3Jr
TG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxBZGRpdGlvbmFs
TmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yPiB7CisKKyAgICBSZWY8QWRkaXRpb25h
bE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcj4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZShEZWNvZGVyJiwgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJlZlB0cjxBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRy
aWNzRm9yV2ViSW5zcGVjdG9yPiBkZWNvZGUoRGVjb2RlciYpOworICAgIFJlZjxBZGRpdGlvbmFs
TmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yPiBpc29sYXRlZENvcHkoKTsKKworICAg
IE5ldHdvcmtMb2FkUHJpb3JpdHkgcHJpb3JpdHkgeyBOZXR3b3JrTG9hZFByaW9yaXR5OjpVbmtu
b3duIH07CiAKICAgICBTdHJpbmcgcmVtb3RlQWRkcmVzczsKICAgICBTdHJpbmcgY29ubmVjdGlv
bklkZW50aWZpZXI7CkBAIC0xOTMsMTYgKzEyOSwxMSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHRs
c1Byb3RvY29sOwogICAgIFN0cmluZyB0bHNDaXBoZXI7CiAKLSAgICBOZXR3b3JrTG9hZFByaW9y
aXR5IHByaW9yaXR5IHsgTmV0d29ya0xvYWRQcmlvcml0eTo6VW5rbm93biB9OwotICAgIFByaXZh
Y3lTdGFuY2UgcHJpdmFjeVN0YW5jZSB7IFByaXZhY3lTdGFuY2U6OlVua25vd24gfTsKLQogICAg
IEhUVFBIZWFkZXJNYXAgcmVxdWVzdEhlYWRlcnM7CiAKICAgICB1aW50NjRfdCByZXF1ZXN0SGVh
ZGVyQnl0ZXNTZW50IHsgc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIH07CiAg
ICAgdWludDY0X3QgcmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkIHsgc3RkOjpudW1lcmljX2xp
bWl0czx1aW50NjRfdD46Om1heCgpIH07CiAgICAgdWludDY0X3QgcmVxdWVzdEJvZHlCeXRlc1Nl
bnQgeyBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkgfTsKLSAgICB1aW50NjRf
dCByZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkIHsgc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRf
dD46Om1heCgpIH07Ci0gICAgdWludDY0X3QgcmVzcG9uc2VCb2R5RGVjb2RlZFNpemUgeyBzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkgfTsKIH07CiAKICNpZiBQTEFURk9STShD
T0NPQSkKQEAgLTIyNSw2ICsxNTYsMTEgQEAgdm9pZCBOZXR3b3JrTG9hZE1ldHJpY3M6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgcmVxdWVzdFN0YXJ0Owog
ICAgIGVuY29kZXIgPDwgcmVzcG9uc2VTdGFydDsKICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlRW5k
OworCisgICAgZW5jb2RlciA8PCBwcm90b2NvbDsKKworICAgIGVuY29kZXIgPDwgcmVkaXJlY3RD
b3VudDsKKwogICAgIGVuY29kZXIgPDwgY29tcGxldGU7CiAgICAgZW5jb2RlciA8PCBjZWxsdWxh
cjsKICAgICBlbmNvZGVyIDw8IGV4cGVuc2l2ZTsKQEAgLTIzMywyOCArMTY5LDI2IEBAIHZvaWQg
TmV0d29ya0xvYWRNZXRyaWNzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBl
bmNvZGVyIDw8IGlzUmV1c2VkQ29ubmVjdGlvbjsKICAgICBlbmNvZGVyIDw8IGZhaWxzVEFPQ2hl
Y2s7CiAgICAgZW5jb2RlciA8PCBoYXNDcm9zc09yaWdpblJlZGlyZWN0OwotICAgIGVuY29kZXIg
PDwgcHJvdG9jb2w7Ci0gICAgZW5jb2RlciA8PCByZWRpcmVjdENvdW50OwotICAgIGVuY29kZXIg
PDwgcmVtb3RlQWRkcmVzczsKLSAgICBlbmNvZGVyIDw8IGNvbm5lY3Rpb25JZGVudGlmaWVyOwot
ICAgIGVuY29kZXIgPDwgdGxzUHJvdG9jb2w7Ci0gICAgZW5jb2RlciA8PCB0bHNDaXBoZXI7Ci0g
ICAgZW5jb2RlciA8PCBwcmlvcml0eTsKKwogICAgIGVuY29kZXIgPDwgcHJpdmFjeVN0YW5jZTsK
LSAgICBlbmNvZGVyIDw8IHJlcXVlc3RIZWFkZXJzOwotICAgIGVuY29kZXIgPDwgcmVxdWVzdEhl
YWRlckJ5dGVzU2VudDsKLSAgICBlbmNvZGVyIDw8IHJlcXVlc3RCb2R5Qnl0ZXNTZW50OwotICAg
IGVuY29kZXIgPDwgcmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkOworCiAgICAgZW5jb2RlciA8
PCByZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkOwogICAgIGVuY29kZXIgPDwgcmVzcG9uc2VCb2R5
RGVjb2RlZFNpemU7CisgICAgCisgICAgaWYgKGFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NG
b3JXZWJJbnNwZWN0b3IpIHsKKyAgICAgICAgZW5jb2RlciA8PCB0cnVlOworICAgICAgICBlbmNv
ZGVyIDw8ICphZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yOworICAg
IH0gZWxzZQorICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgotYm9vbCBOZXR3b3JrTG9hZE1ldHJpY3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCitzdGQ6Om9wdGlvbmFsPE5ldHdvcmtMb2Fk
TWV0cmljcz4gTmV0d29ya0xvYWRNZXRyaWNzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
ICAgICBzdGF0aWNfYXNzZXJ0KERlY29kZXI6OmlzSVBDRGVjb2RlciwgIk5ldHdvcmtMb2FkTWV0
cmljcyBzaG91bGQgbm90IGJlIHN0b3JlZCBieSB0aGUgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rl
ciIpOwogCi0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVkaXJlY3RTdGFydCkK
KyAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbWV0cmljczsKKyAgICBpZiAoIShkZWNvZGVyLmRlY29k
ZShtZXRyaWNzLnJlZGlyZWN0U3RhcnQpCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJp
Y3MuZmV0Y2hTdGFydCkKICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5kb21haW5M
b29rdXBTdGFydCkKICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5kb21haW5Mb29r
dXBFbmQpCkBAIC0yNjQsMjggKzE5OCwxNTEgQEAgYm9vbCBOZXR3b3JrTG9hZE1ldHJpY3M6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAg
ICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVxdWVzdFN0YXJ0KQogICAgICAgICAmJiBk
ZWNvZGVyLmRlY29kZShtZXRyaWNzLnJlc3BvbnNlU3RhcnQpCiAgICAgICAgICYmIGRlY29kZXIu
ZGVjb2RlKG1ldHJpY3MucmVzcG9uc2VFbmQpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1l
dHJpY3MuY29tcGxldGUpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuY2VsbHVs
YXIpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuZXhwZW5zaXZlKQotICAgICAg
ICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmNvbnN0cmFpbmVkKQotICAgICAgICAmJiBkZWNv
ZGVyLmRlY29kZShtZXRyaWNzLm11bHRpcGF0aCkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUo
bWV0cmljcy5pc1JldXNlZENvbm5lY3Rpb24pCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1l
dHJpY3MuZmFpbHNUQU9DaGVjaykKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5o
YXNDcm9zc09yaWdpblJlZGlyZWN0KQogICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNz
LnByb3RvY29sKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnJlZGlyZWN0Q291
bnQpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVtb3RlQWRkcmVzcykKLSAg
ICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5jb25uZWN0aW9uSWRlbnRpZmllcikKLSAg
ICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy50bHNQcm90b2NvbCkKLSAgICAgICAgJiYg
ZGVjb2Rlci5kZWNvZGUobWV0cmljcy50bHNDaXBoZXIpCi0gICAgICAgICYmIGRlY29kZXIuZGVj
b2RlKG1ldHJpY3MucHJpb3JpdHkpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3Mu
cHJpdmFjeVN0YW5jZSkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZXF1ZXN0
SGVhZGVycykKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZXF1ZXN0SGVhZGVy
Qnl0ZXNTZW50KQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnJlcXVlc3RCb2R5
Qnl0ZXNTZW50KQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnJlc3BvbnNlSGVh
ZGVyQnl0ZXNSZWNlaXZlZCkKKyAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZWRp
cmVjdENvdW50KSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBjb21wbGV0ZTsKKyAgICBkZWNvZGVyID4+IGNvbXBsZXRlOworICAg
IGlmICghY29tcGxldGUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgbWV0cmlj
cy5jb21wbGV0ZSA9IFdURk1vdmUoKmNvbXBsZXRlKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gY2VsbHVsYXI7CisgICAgZGVjb2RlciA+PiBjZWxsdWxhcjsKKyAgICBpZiAoIWNlbGx1bGFy
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIG1ldHJpY3MuY2VsbHVsYXIgPSBX
VEZNb3ZlKCpjZWxsdWxhcik7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGV4cGVuc2l2ZTsK
KyAgICBkZWNvZGVyID4+IGV4cGVuc2l2ZTsKKyAgICBpZiAoIWV4cGVuc2l2ZSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBtZXRyaWNzLmV4cGVuc2l2ZSA9IFdURk1vdmUoKmV4
cGVuc2l2ZSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNvbnN0cmFpbmVkOworICAgIGRl
Y29kZXIgPj4gY29uc3RyYWluZWQ7CisgICAgaWYgKCFjb25zdHJhaW5lZCkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBtZXRyaWNzLmNvbnN0cmFpbmVkID0gV1RGTW92ZSgqY29u
c3RyYWluZWQpOworCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtdWx0aXBhdGg7CisgICAgZGVj
b2RlciA+PiBtdWx0aXBhdGg7CisgICAgaWYgKCFtdWx0aXBhdGgpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgbWV0cmljcy5tdWx0aXBhdGggPSBXVEZNb3ZlKCptdWx0aXBhdGgp
OworCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc1JldXNlZENvbm5lY3Rpb247CisgICAgZGVj
b2RlciA+PiBpc1JldXNlZENvbm5lY3Rpb247CisgICAgaWYgKCFpc1JldXNlZENvbm5lY3Rpb24p
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgbWV0cmljcy5pc1JldXNlZENvbm5l
Y3Rpb24gPSBXVEZNb3ZlKCppc1JldXNlZENvbm5lY3Rpb24pOworCisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBmYWlsc1RBT0NoZWNrOworICAgIGRlY29kZXIgPj4gZmFpbHNUQU9DaGVjazsKKyAg
ICBpZiAoIWZhaWxzVEFPQ2hlY2spCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
bWV0cmljcy5mYWlsc1RBT0NoZWNrID0gV1RGTW92ZSgqZmFpbHNUQU9DaGVjayk7CisKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3Q7CisgICAgZGVjb2RlciA+
PiBoYXNDcm9zc09yaWdpblJlZGlyZWN0OworICAgIGlmICghaGFzQ3Jvc3NPcmlnaW5SZWRpcmVj
dCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBtZXRyaWNzLmhhc0Nyb3NzT3Jp
Z2luUmVkaXJlY3QgPSBXVEZNb3ZlKCpoYXNDcm9zc09yaWdpblJlZGlyZWN0KTsKKworICAgIGlm
ICghKGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucHJpdmFjeVN0YW5jZSkKICAgICAgICAgJiYgZGVj
b2Rlci5kZWNvZGUobWV0cmljcy5yZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkKQotICAgICAgICAm
JiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnJlc3BvbnNlQm9keURlY29kZWRTaXplKTsKKyAgICAg
ICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZXNwb25zZUJvZHlEZWNvZGVkU2l6ZSkpKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBo
YXNBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yOworICAgIGRlY29k
ZXIgPj4gaGFzQWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcjsKKyAg
ICBpZiAoIWhhc0FkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCpoYXNBZGRpdGlvbmFsTmV0d29y
a0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yKSB7CisgICAgICAgIG1ldHJpY3MuYWRkaXRpb25h
bE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvciA9IEFkZGl0aW9uYWxOZXR3b3JrTG9h
ZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I6OmRlY29kZShkZWNvZGVyKTsKKyAgICAgICAgaWYgKCFt
ZXRyaWNzLmFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IpCisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKyAgICByZXR1cm4gbWV0cmljczsK
K30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQWRkaXRpb25hbE5ldHdvcmtMb2Fk
TWV0cmljc0ZvcldlYkluc3BlY3Rvcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgZW5jb2RlciA8PCBwcmlvcml0eTsKKyAgICBlbmNvZGVyIDw8IHJlbW90ZUFkZHJlc3M7
CisgICAgZW5jb2RlciA8PCBjb25uZWN0aW9uSWRlbnRpZmllcjsKKworICAgIGVuY29kZXIgPDwg
dGxzUHJvdG9jb2w7CisgICAgZW5jb2RlciA8PCB0bHNDaXBoZXI7CisKKyAgICBlbmNvZGVyIDw8
IHJlcXVlc3RIZWFkZXJzOworCisgICAgZW5jb2RlciA8PCByZXF1ZXN0SGVhZGVyQnl0ZXNTZW50
OworICAgIGVuY29kZXIgPDwgcmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkOworICAgIGVuY29k
ZXIgPDwgcmVxdWVzdEJvZHlCeXRlc1NlbnQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+
CitSZWZQdHI8QWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcj4gQWRk
aXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrTG9hZFByaW9yaXR5PiBwcmlv
cml0eTsKKyAgICBkZWNvZGVyID4+IHByaW9yaXR5OworICAgIGlmICghcHJpb3JpdHkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiByZW1v
dGVBZGRyZXNzOworICAgIGRlY29kZXIgPj4gcmVtb3RlQWRkcmVzczsKKyAgICBpZiAoIXJlbW90
ZUFkZHJlc3MpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGNvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gY29ubmVjdGlvbklk
ZW50aWZpZXI7CisgICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGxzUHJvdG9jb2w7CisgICAg
ZGVjb2RlciA+PiB0bHNQcm90b2NvbDsKKyAgICBpZiAoIXRsc1Byb3RvY29sKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0bHNDaXBoZXI7Cisg
ICAgZGVjb2RlciA+PiB0bHNDaXBoZXI7CisgICAgaWYgKCF0bHNDaXBoZXIpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgc3RkOjpvcHRpb25hbDxIVFRQSGVhZGVyTWFwPiByZXF1ZXN0
SGVhZGVyczsKKyAgICBkZWNvZGVyID4+IHJlcXVlc3RIZWFkZXJzOworICAgIGlmICghcmVxdWVz
dEhlYWRlcnMpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gcmVxdWVzdEhlYWRlckJ5dGVzU2VudDsKKyAgICBkZWNvZGVyID4+IHJlcXVlc3RI
ZWFkZXJCeXRlc1NlbnQ7CisgICAgaWYgKCFyZXF1ZXN0SGVhZGVyQnl0ZXNTZW50KQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJlc3BvbnNl
SGVhZGVyQnl0ZXNSZWNlaXZlZDsKKyAgICBkZWNvZGVyID4+IHJlc3BvbnNlSGVhZGVyQnl0ZXNS
ZWNlaXZlZDsKKyAgICBpZiAoIXJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiByZXF1ZXN0Qm9k
eUJ5dGVzU2VudDsKKyAgICBkZWNvZGVyID4+IHJlcXVlc3RCb2R5Qnl0ZXNTZW50OworICAgIGlm
ICghcmVxdWVzdEJvZHlCeXRlc1NlbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
YXV0byBkZWNvZGVkID0gYWRvcHRSZWYoKm5ldyBBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNz
Rm9yV2ViSW5zcGVjdG9yKTsKKyAgICBkZWNvZGVkLT5wcmlvcml0eSA9IFdURk1vdmUoKnByaW9y
aXR5KTsKKyAgICBkZWNvZGVkLT5yZW1vdGVBZGRyZXNzID0gV1RGTW92ZSgqcmVtb3RlQWRkcmVz
cyk7CisgICAgZGVjb2RlZC0+Y29ubmVjdGlvbklkZW50aWZpZXIgPSBXVEZNb3ZlKCpjb25uZWN0
aW9uSWRlbnRpZmllcik7CisgICAgZGVjb2RlZC0+dGxzUHJvdG9jb2wgPSBXVEZNb3ZlKCp0bHNQ
cm90b2NvbCk7CisgICAgZGVjb2RlZC0+dGxzQ2lwaGVyID0gV1RGTW92ZSgqdGxzQ2lwaGVyKTsK
KyAgICBkZWNvZGVkLT5yZXF1ZXN0SGVhZGVycyA9IFdURk1vdmUoKnJlcXVlc3RIZWFkZXJzKTsK
KyAgICBkZWNvZGVkLT5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50ID0gV1RGTW92ZSgqcmVxdWVzdEhl
YWRlckJ5dGVzU2VudCk7CisgICAgZGVjb2RlZC0+cmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVk
ID0gV1RGTW92ZSgqcmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkKTsKKyAgICBkZWNvZGVkLT5y
ZXF1ZXN0Qm9keUJ5dGVzU2VudCA9IFdURk1vdmUoKnJlcXVlc3RCb2R5Qnl0ZXNTZW50KTsKKyAg
ICByZXR1cm4gZGVjb2RlZDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpAQCAtMzAzLDQg
KzM2MCwxNCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlByaXZhY3lT
dGFuY2U+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVl
czwKKyAgICAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eSwKKyAgICAgICAgV2ViQ29y
ZTo6TmV0d29ya0xvYWRQcmlvcml0eTo6TG93LAorICAgICAgICBXZWJDb3JlOjpOZXR3b3JrTG9h
ZFByaW9yaXR5OjpNZWRpdW0sCisgICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHk6
OkhpZ2gsCisgICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHk6OlVua25vd24KKyAg
ICA+OworfTsKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRleCA2MTM2MDA1NDIwOTBhMmI5NzczMWFm
ZmYzYmZmZjk5NTQ1NjQ5NGQzLi45NTBlODI2N2UyYTVlODZiYTc5ZDY3OWU3ZDczNjExMDFjMGZi
YWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtODAyLDcgKzgwMiw3IEBAIHZvaWQgUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmxhenlJbml0KEluaXRMZXZlbCBpbml0TGV2ZWwpIGNvbnN0CiAgICAgY29u
c3RfY2FzdDxSZXNvdXJjZVJlc3BvbnNlKj4oc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXNw
b25zZSo+KHRoaXMpKS0+cGxhdGZvcm1MYXp5SW5pdChpbml0TGV2ZWwpOwogfQogCi1ib29sIFJl
c291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIGIpCitib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjplcXVh
bEZvcldlYktpdExlZ2FjeUNoYWxsZW5nZUNvbXBhcmlzb24oY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikKIHsKICAgICBpZiAoYS5pc051bGwoKSAh
PSBiLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7ICAKQEAgLTgyMiwxNiArODIyLDYg
QEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3AKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
IChhLmh0dHBIZWFkZXJGaWVsZHMoKSAhPSBiLmh0dHBIZWFkZXJGaWVsZHMoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmIChhLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpICE9IGIu
bV9uZXR3b3JrTG9hZE1ldHJpY3MuZ2V0KCkpIHsKLSAgICAgICAgaWYgKCFhLm1fbmV0d29ya0xv
YWRNZXRyaWNzKSB7Ci0gICAgICAgICAgICBpZiAoTmV0d29ya0xvYWRNZXRyaWNzKCkgIT0gKmIu
bV9uZXR3b3JrTG9hZE1ldHJpY3MuZ2V0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9IGVsc2UgaWYgKCFiLm1fbmV0d29ya0xvYWRNZXRyaWNzKSB7Ci0gICAgICAg
ICAgICBpZiAoTmV0d29ya0xvYWRNZXRyaWNzKCkgIT0gKmEubV9uZXR3b3JrTG9hZE1ldHJpY3Mu
Z2V0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9IGVsc2UgaWYg
KCphLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpICE9ICpiLm1fbmV0d29ya0xvYWRNZXRyaWNz
LmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KICAgICByZXR1cm4gUmVz
b3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGEsIGIpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5k
ZXggMTc2YjczN2RhNTNiZWMxMDYzYTI5ODE0NWY3YzEzOWIxZTYzMTRhZC4uMjYyZTUzMTgwZDZk
ZDdjNGQxMzNkZGMxZGFmNTY1MmJkNmYzMWM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMjA5LDcgKzIw
OSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXNvdXJjZVJlc3Bv
bnNlIHN5bnRoZXRpY1JlZGlyZWN0UmVzcG9uc2UoY29uc3QgVVJMJiBmcm9tVVJMLCBjb25zdCBV
UkwmIHRvVVJMKTsKIAotICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBlcXVhbEZv
cldlYktpdExlZ2FjeUNoYWxsZW5nZUNvbXBhcmlzb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBSZXNvdXJj
ZVJlc3BvbnNlQmFzZSYpOwpAQCAtMjg1LDkgKzI4NSw2IEBAIHByb3RlY3RlZDoKICAgICBzaG9y
dCBtX2h0dHBTdGF0dXNDb2RlIHsgMCB9OwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKSB7IHJl
dHVybiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZShhLCBiKTsgfQotaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KLQogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
IHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q29udGV4dC5jcHAKaW5kZXggNjA4NDA2YjgzZTUzOTJmMjNhZTk5Y2M5Y2YyMDYzMmQyNTM2Y2Q2
YS4uMTZlODQ2MDFiMjRjNTgyYzlmZGE5YTI5ZDU5MzRmMTg4ZmI4ZjJjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBA
IC04NjIsMTYgKzg2MiwyMCBAQCB2b2lkIEN1cmxIYW5kbGU6OmFkZEV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzKE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaQogICAgIGlmIChlcnJv
ckNvZGUgIT0gQ1VSTEVfT0spCiAgICAgICAgIHJldHVybjsKIAotICAgIG5ldHdvcmtMb2FkTWV0
cmljcy5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50ID0gcmVxdWVzdEhlYWRlclNpemU7Ci0gICAgbmV0
d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RCb2R5Qnl0ZXNTZW50ID0gcmVxdWVzdEJvZHlTaXplOwot
ICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQgPSByZXNw
b25zZUhlYWRlclNpemU7CiAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlQm9keUJ5dGVz
UmVjZWl2ZWQgPSByZXNwb25zZUJvZHlTaXplOwogCisgICAgYXV0byBhZGRpdGlvbmFsTWV0cmlj
cyA9IGFkb3B0UmVmKCpuZXcgQWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3Bl
Y3Rvcik7CisgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQgPSBy
ZXF1ZXN0SGVhZGVyU2l6ZTsKKyAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEJvZHlCeXRl
c1NlbnQgPSByZXF1ZXN0Qm9keVNpemU7CisgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlc3BvbnNl
SGVhZGVyQnl0ZXNSZWNlaXZlZCA9IHJlc3BvbnNlSGVhZGVyU2l6ZTsKKwogICAgIGlmIChpcCkg
ewotICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVtb3RlQWRkcmVzcyA9IFN0cmluZyhpcCk7
CisgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZW1vdGVBZGRyZXNzID0gU3RyaW5nKGlwKTsK
ICAgICAgICAgaWYgKHBvcnQpCi0gICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVtb3Rl
QWRkcmVzcy5hcHBlbmQoIjoiICsgU3RyaW5nOjpudW1iZXIocG9ydCkpOworICAgICAgICAgICAg
YWRkaXRpb25hbE1ldHJpY3MtPnJlbW90ZUFkZHJlc3MuYXBwZW5kKCI6IiArIFN0cmluZzo6bnVt
YmVyKHBvcnQpKTsKICAgICB9CisKKyAgICBuZXR3b3JrTG9hZE1ldHJpY3MuYWRkaXRpb25hbE5l
dHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvciA9IFdURk1vdmUoYWRkaXRpb25hbE1ldHJp
Y3MpOwogfQogCiBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gQ3VybEhhbmRsZTo6Y2Vy
dGlmaWNhdGVJbmZvKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDI5ODczNTU4NWJiYzI1ZDEyNzdmOTY1
YjU5OWU0M2NhNjZlNmZjYmUuLjE2YThjNDJkMTQxNGQ0NWVhNGE3NzdiNTUxMDdkMjBlMjk5YWI3
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0LmNwcApAQCAtNzU3LDcgKzc1Nyw4IEBAIE5ldHdvcmtMb2FkTWV0cmljcyBDdXJs
UmVxdWVzdDo6bmV0d29ya0xvYWRNZXRyaWNzKCkKIAogICAgIGlmIChtX2NhcHR1cmVFeHRyYU1l
dHJpY3MpIHsKICAgICAgICAgbV9jdXJsSGFuZGxlLT5hZGRFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
cygqbmV0d29ya0xvYWRNZXRyaWNzKTsKLSAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLT5yZXF1
ZXN0SGVhZGVycyA9IG1fcmVxdWVzdEhlYWRlcnM7CisgICAgICAgIGlmIChhdXRvKiBhZGRpdGlv
bmFsTWV0cmljcyA9IG5ldHdvcmtMb2FkTWV0cmljcy0+YWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0
cmljc0ZvcldlYkluc3BlY3Rvci5nZXQoKSkKKyAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNz
LT5yZXF1ZXN0SGVhZGVycyA9IG1fcmVxdWVzdEhlYWRlcnM7CiAgICAgICAgIG5ldHdvcmtMb2Fk
TWV0cmljcy0+cmVzcG9uc2VCb2R5RGVjb2RlZFNpemUgPSBtX3RvdGFsUmVjZWl2ZWRTaXplOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRleCBmOGI3MDhhZGI2ZGZmNWUwMjE0YmRm
YjEyODM2ZWJmOGI2ZWVjZjIxLi5kZTk0NzQyODYzYmY5NzkzNDAzOWFmMzYxMmIwNDZhMjEzZmQ5
ZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgY2hhbGxlbmdlCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlm
IChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKQorICAgIGlmICghQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VCYXNlOjplcXVhbEZvcldlYktpdExlZ2FjeUNoYWxsZW5nZUNvbXBh
cmlzb24oY2hhbGxlbmdlLCBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKQEAgLTI5MCw3ICsyOTAsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENy
ZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKLSAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKKyAgICBp
ZiAoIUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFs
bGVuZ2VDb21wYXJpc29uKGNoYWxsZW5nZSwgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwpAQCAtMzA0LDcgKzMw
NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIAotICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKQor
ICAgIGlmICghQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjplcXVhbEZvcldlYktpdExlZ2Fj
eUNoYWxsZW5nZUNvbXBhcmlzb24oY2hhbGxlbmdlLCBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2Up
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY2xpZW50KCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0K
aW5kZXggYmM0NGNiYjRjYTE0NmYxNDA1ZTFhZGJmYmE3MzQ4OTAyZjhhODBkOC4uOTA5ZDkyZmRk
MDZhYWIyYWM0ZTkzMGJjMDM3YmU2MDBjNzU5NzFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTU3
Nyw3ICs1NzcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZQogICAgIExPRyhOZXR3b3JrLCAi
SGFuZGxlICVwIHJlY2VpdmVkQ3JlZGVudGlhbCIsIHRoaXMpOwogCiAgICAgQVNTRVJUKCFjaGFs
bGVuZ2UuaXNOdWxsKCkpOwotICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hh
bGxlbmdlKQorICAgIGlmICghQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjplcXVhbEZvcldl
YktpdExlZ2FjeUNoYWxsZW5nZUNvbXBhcmlzb24oY2hhbGxlbmdlLCBkLT5tX2N1cnJlbnRXZWJD
aGFsbGVuZ2UpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCBlbXB0
eSBjcmVkZW50aWFscy4gQ3VycmVudGx5LCBhbiBlbXB0eSBjcmVkZW50aWFsIGNhbm5vdCBiZSBz
dG9yZWQgaW4gV2ViQ29yZSBjcmVkZW50aWFsIHN0b3JhZ2UsIGFzIHRoYXQncyBlbXB0eSB2YWx1
ZSBmb3IgaXRzIG1hcC4KQEAgLTYwNyw3ICs2MDcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGlj
YQogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVX
aXRob3V0Q3JlZGVudGlhbCIsIHRoaXMpOwogCiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxs
KCkpOwotICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKQorICAg
IGlmICghQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjplcXVhbEZvcldlYktpdExlZ2FjeUNo
YWxsZW5nZUNvbXBhcmlzb24oY2hhbGxlbmdlLCBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBbW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBzZW5kZXJd
IGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpkLT5t
X2N1cnJlbnRNYWNDaGFsbGVuZ2VdOwpAQCAtNjE5LDcgKzYxOSw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBjaGFsbGVuCiB7CiAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgcmVjZWl2ZWRDYW5jZWxs
YXRpb24iLCB0aGlzKTsKIAotICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hh
bGxlbmdlKQorICAgIGlmICghQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjplcXVhbEZvcldl
YktpdExlZ2FjeUNoYWxsZW5nZUNvbXBhcmlzb24oY2hhbGxlbmdlLCBkLT5tX2N1cnJlbnRXZWJD
aGFsbGVuZ2UpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY2xpZW50KCkpCkBAIC02MzEs
NyArNjMxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3Jt
RGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW8KICAgICBMT0coTmV0d29yaywgIkhh
bmRsZSAlcCByZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmciLCB0aGlzKTsK
IAogICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKLSAgICBpZiAoY2hhbGxlbmdlICE9
IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKKyAgICBpZiAoIUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNoYWxsZW5n
ZSwgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgW1tk
LT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2Ugc2VuZGVyXSBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9y
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6ZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlXTsKQEAgLTY0
NCw3ICs2NDQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVj
dGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYwogICAgIExPRyhOZXR3b3JrLCAi
SGFuZGxlICVwIHJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uIiwgdGhpcyk7CiAKICAgICBBU1NF
UlQoIWNoYWxsZW5nZS5pc051bGwoKSk7Ci0gICAgaWYgKGNoYWxsZW5nZSAhPSBkLT5tX2N1cnJl
bnRXZWJDaGFsbGVuZ2UpCisgICAgaWYgKCFBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVx
dWFsRm9yV2ViS2l0TGVnYWN5Q2hhbGxlbmdlQ29tcGFyaXNvbihjaGFsbGVuZ2UsIGQtPm1fY3Vy
cmVudFdlYkNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFtbZC0+bV9jdXJyZW50
TWFjQ2hhbGxlbmdlIHNlbmRlcl0gcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRo
Q2hhbGxlbmdlOmQtPm1fY3VycmVudE1hY0NoYWxsZW5nZV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODJm
MWU1MzAxNDRmYTBmZjJkYWIxMWU2NDRjMDliN2Y2ODYxYTAwMC4uMjMwZTFmOGEwNzFjZTdlNWRi
NDNkMTEwMDJkMDYwZDI0OWYyZjg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTIyNyw5ICsxMjI3LDEz
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeShz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlCiAKICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzOwogICAgIG5ldHdvcmtMb2FkTWV0cmljcy5tYXJrQ29t
cGxldGUoKTsKLSAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRlckJ5dGVzU2VudCA9
IDA7Ci0gICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RCb2R5Qnl0ZXNTZW50ID0gMDsKLSAg
ICBuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkID0gMDsKKyAg
ICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkpIHsKKyAgICAgICAg
YXV0byBhZGRpdGlvbmFsTWV0cmljcyA9IGFkb3B0UmVmKCpuZXcgV2ViQ29yZTo6QWRkaXRpb25h
bE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcik7CisgICAgICAgIGFkZGl0aW9uYWxN
ZXRyaWNzLT5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50ID0gMDsKKyAgICAgICAgYWRkaXRpb25hbE1l
dHJpY3MtPnJlcXVlc3RCb2R5Qnl0ZXNTZW50ID0gMDsKKyAgICAgICAgYWRkaXRpb25hbE1ldHJp
Y3MtPnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCA9IDA7CisgICAgICAgIG5ldHdvcmtMb2Fk
TWV0cmljcy5hZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yID0gV1RG
TW92ZShhZGRpdGlvbmFsTWV0cmljcyk7CisgICAgfQogICAgIG5ldHdvcmtMb2FkTWV0cmljcy5y
ZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkID0gMDsKICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVz
cG9uc2VCb2R5RGVjb2RlZFNpemUgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMTM4YzRl
OTI5MWQ1MzNlODdlYmY0MmJjZDViMzZlZjA1ODZkMjI5OC4uNmUxYzY1YmQzMDIzNDlhZGIxODQ5
MTZmYmE4YTEyZDg2ZGY4ZTAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtODc4LDI4ICs4Nzgs
MjkgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKIAogICAgICAg
ICBpZiAobmV0d29ya0RhdGFUYXNrLT5zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3MoKSkgewotICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnByaW9yaXR5ID0gdG9OZXR3
b3JrTG9hZFByaW9yaXR5KHRhc2sucHJpb3JpdHkpOworICAgICAgICAgICAgYXV0byBhZGRpdGlv
bmFsTWV0cmljcyA9IGFkb3B0UmVmKCpuZXcgV2ViQ29yZTo6QWRkaXRpb25hbE5ldHdvcmtMb2Fk
TWV0cmljc0ZvcldlYkluc3BlY3Rvcik7CisgICAgICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+
cHJpb3JpdHkgPSB0b05ldHdvcmtMb2FkUHJpb3JpdHkodGFzay5wcmlvcml0eSk7CiAKICNpZiBI
QVZFKENGTkVUV09SS19NRVRSSUNTX0FQSVNfVjQpCiAgICAgICAgICAgICBpZiAoYXV0byBwb3J0
ID0gW20ucmVtb3RlUG9ydCB1bnNpZ25lZEludFZhbHVlXSkKLSAgICAgICAgICAgICAgICBuZXR3
b3JrTG9hZE1ldHJpY3MucmVtb3RlQWRkcmVzcyA9IG1ha2VTdHJpbmcoU3RyaW5nKG0ucmVtb3Rl
QWRkcmVzcyksICc6JywgcG9ydCk7CisgICAgICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3Mt
PnJlbW90ZUFkZHJlc3MgPSBtYWtlU3RyaW5nKFN0cmluZyhtLnJlbW90ZUFkZHJlc3MpLCAnOics
IHBvcnQpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0
cmljcy5yZW1vdGVBZGRyZXNzID0gbS5yZW1vdGVBZGRyZXNzOworICAgICAgICAgICAgICAgIGFk
ZGl0aW9uYWxNZXRyaWNzLT5yZW1vdGVBZGRyZXNzID0gbS5yZW1vdGVBZGRyZXNzOwogI2Vsc2UK
ICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAg
ICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVtb3RlQWRkcmVzcyA9IFN0cmluZyhtLl9yZW1vdGVB
ZGRyZXNzQW5kUG9ydCk7CisgICAgICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVtb3RlQWRk
cmVzcyA9IFN0cmluZyhtLl9yZW1vdGVBZGRyZXNzQW5kUG9ydCk7CiAgICAgICAgICAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgotICAgICAgICAgICAgbmV0d29y
a0xvYWRNZXRyaWNzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0gU3RyaW5nKFttLl9jb25uZWN0aW9u
SWRlbnRpZmllciBVVUlEU3RyaW5nXSk7CisgICAgICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+
Y29ubmVjdGlvbklkZW50aWZpZXIgPSBTdHJpbmcoW20uX2Nvbm5lY3Rpb25JZGVudGlmaWVyIFVV
SURTdHJpbmddKTsKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX05FR09USUFURURfU1NMX1BST1RPQ09M
X0NJUEhFUikKICNpZiBIQVZFKENGTkVUV09SS19NRVRSSUNTX0FQSVNfVjQpCi0gICAgICAgICAg
ICBuZXR3b3JrTG9hZE1ldHJpY3MudGxzUHJvdG9jb2wgPSBzdHJpbmdGb3JUTFNQcm90b2NvbFZl
cnNpb24oKHRsc19wcm90b2NvbF92ZXJzaW9uX3QpW20ubmVnb3RpYXRlZFRMU1Byb3RvY29sVmVy
c2lvbiB1bnNpZ25lZFNob3J0VmFsdWVdKTsKLSAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmlj
cy50bHNDaXBoZXIgPSBzdHJpbmdGb3JUTFNDaXBoZXJTdWl0ZSgodGxzX2NpcGhlcnN1aXRlX3Qp
W20ubmVnb3RpYXRlZFRMU0NpcGhlclN1aXRlIHVuc2lnbmVkU2hvcnRWYWx1ZV0pOworICAgICAg
ICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnRsc1Byb3RvY29sID0gc3RyaW5nRm9yVExTUHJvdG9j
b2xWZXJzaW9uKCh0bHNfcHJvdG9jb2xfdmVyc2lvbl90KVttLm5lZ290aWF0ZWRUTFNQcm90b2Nv
bFZlcnNpb24gdW5zaWduZWRTaG9ydFZhbHVlXSk7CisgICAgICAgICAgICBhZGRpdGlvbmFsTWV0
cmljcy0+dGxzQ2lwaGVyID0gc3RyaW5nRm9yVExTQ2lwaGVyU3VpdGUoKHRsc19jaXBoZXJzdWl0
ZV90KVttLm5lZ290aWF0ZWRUTFNDaXBoZXJTdWl0ZSB1bnNpZ25lZFNob3J0VmFsdWVdKTsKICNl
bHNlCiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAg
ICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnRsc1Byb3RvY29sID0gc3RyaW5nRm9yU1NMUHJv
dG9jb2wobS5fbmVnb3RpYXRlZFRMU1Byb3RvY29sKTsKLSAgICAgICAgICAgIG5ldHdvcmtMb2Fk
TWV0cmljcy50bHNDaXBoZXIgPSBzdHJpbmdGb3JTU0xDaXBoZXIobS5fbmVnb3RpYXRlZFRMU0Np
cGhlcik7CisgICAgICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+dGxzUHJvdG9jb2wgPSBzdHJp
bmdGb3JTU0xQcm90b2NvbChtLl9uZWdvdGlhdGVkVExTUHJvdG9jb2wpOworICAgICAgICAgICAg
YWRkaXRpb25hbE1ldHJpY3MtPnRsc0NpcGhlciA9IHN0cmluZ0ZvclNTTENpcGhlcihtLl9uZWdv
dGlhdGVkVExTQ2lwaGVyKTsKICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogI2VuZGlmCiAjZW5kaWYKQEAgLTkwOCw3ICs5MDksNyBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFttLnJlcXVlc3QuYWxsSFRUUEhlYWRl
ckZpZWxkcyBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAqbmFt
ZSwgTlNTdHJpbmcgKnZhbHVlLCBCT09MICopIHsKICAgICAgICAgICAgICAgICByZXF1ZXN0SGVh
ZGVycy5zZXQoU3RyaW5nKG5hbWUpLCBTdHJpbmcodmFsdWUpKTsKICAgICAgICAgICAgIH1dOwot
ICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RIZWFkZXJzID0gV1RGTW92ZShy
ZXF1ZXN0SGVhZGVycyk7CisgICAgICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEhl
YWRlcnMgPSBXVEZNb3ZlKHJlcXVlc3RIZWFkZXJzKTsKIAogICAgICAgICAgICAgdWludDY0X3Qg
cmVxdWVzdEhlYWRlckJ5dGVzU2VudCA9IDA7CiAgICAgICAgICAgICB1aW50NjRfdCByZXNwb25z
ZUhlYWRlckJ5dGVzUmVjZWl2ZWQgPSAwOwpAQCAtOTI1LDkgKzkyNiwxMCBAQCBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRlckJ5dGVzU2VudCA9IHJlcXVlc3RI
ZWFkZXJCeXRlc1NlbnQ7Ci0gICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEJv
ZHlCeXRlc1NlbnQgPSB0YXNrLmNvdW50T2ZCeXRlc1NlbnQ7Ci0gICAgICAgICAgICBuZXR3b3Jr
TG9hZE1ldHJpY3MucmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkID0gcmVzcG9uc2VIZWFkZXJC
eXRlc1JlY2VpdmVkOworICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlcXVlc3RIZWFk
ZXJCeXRlc1NlbnQgPSByZXF1ZXN0SGVhZGVyQnl0ZXNTZW50OworICAgICAgICAgICAgYWRkaXRp
b25hbE1ldHJpY3MtPnJlcXVlc3RCb2R5Qnl0ZXNTZW50ID0gdGFzay5jb3VudE9mQnl0ZXNTZW50
OworICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNl
aXZlZCA9IHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZDsKKyAgICAgICAgICAgIG5ldHdvcmtM
b2FkTWV0cmljcy5hZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yID0g
V1RGTW92ZShhZGRpdGlvbmFsTWV0cmljcyk7CiAgICAgICAgIH0KICNpZiBIQVZFKENGTkVUV09S
S19NRVRSSUNTX0FQSVNfVjQpCiAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUJv
ZHlCeXRlc1JlY2VpdmVkID0gbS5jb3VudE9mUmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRh
c2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0
YVRhc2tTb3VwLmNwcAppbmRleCAxYTI4Y2RiNzkzN2YyYzdiZWE0Mjc5YmYyMDAxZDMyZWE2ZDY3
YzQ0Li4zN2RlODY2MjY0YjUyN2UwMGM5NjIzYzg0MjBlZGU0OTRlMDAzZTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwCkBAIC0xMjEwLDYgKzEyMTAsMTMgQEAgc3RhdGljIFN0cmluZyB0bHNQcm90b2Nv
bFZlcnNpb25Ub1N0cmluZyhHVGxzUHJvdG9jb2xWZXJzaW9uIHZlcnNpb24pCiB9CiAjZW5kaWYK
IAorV2ViQ29yZTo6QWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvciYg
TmV0d29ya0RhdGFUYXNrU291cDo6YWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYklu
c3BlY3RvcigpCit7CisgICAgaWYgKCFtX25ldHdvcmtMb2FkTWV0cmljcy5hZGRpdGlvbmFsTmV0
d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yKQorICAgICAgICBtX25ldHdvcmtMb2FkTWV0
cmljcy5hZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yID0gYWRvcHRS
ZWYoKm5ldyBXZWJDb3JlOjpBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVj
dG9yKTsKKyAgICByZXR1cm4gKm1fbmV0d29ya0xvYWRNZXRyaWNzLmFkZGl0aW9uYWxOZXR3b3Jr
TG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I7Cit9CisKIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6ZGlkR2V0SGVhZGVycygpCiB7CiAgICAgLy8gV2UgYXJlIGEgYml0IG1vcmUgY29uc2VydmF0
aXZlIHdpdGggdGhlIHBlcnNpc3RlbnQgY3JlZGVudGlhbCBzdG9yYWdlIHRoYW4gdGhlIHNlc3Np
b24gc3RvcmUsCkBAIC0xMjMzLDYgKzEyNDAsOCBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6
OmRpZEdldEhlYWRlcnMoKQogICAgIC8vIGlzIHRoZSBmaXJzdCBvbmUgd2UgcmVjZWl2ZSBhZnRl
ciBzdGFydGluZywgc28gd2UgdXNlIGl0IGFsc28gdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IHRo
ZQogICAgIC8vIHJlcXVlc3QgaGVhZGVycy4KICAgICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzKCkpIHsKKyAgICAgICAgYXV0byYgYWRkaXRpb25hbE1ldHJpY3MgPSBh
ZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yKCk7CisKICAgICAgICAg
SFRUUEhlYWRlck1hcCByZXF1ZXN0SGVhZGVyczsKICAgICAgICAgU291cE1lc3NhZ2VIZWFkZXJz
SXRlciBoZWFkZXJzSXRlcjsKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfaXRlcl9pbml0
KCZoZWFkZXJzSXRlciwgc291cF9tZXNzYWdlX2dldF9yZXF1ZXN0X2hlYWRlcnMobV9zb3VwTWVz
c2FnZS5nZXQoKSkpOwpAQCAtMTI0MCwxOSArMTI0OSwxOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
a1NvdXA6OmRpZEdldEhlYWRlcnMoKQogICAgICAgICBjb25zdCBjaGFyKiBoZWFkZXJWYWx1ZTsK
ICAgICAgICAgd2hpbGUgKHNvdXBfbWVzc2FnZV9oZWFkZXJzX2l0ZXJfbmV4dCgmaGVhZGVyc0l0
ZXIsICZoZWFkZXJOYW1lLCAmaGVhZGVyVmFsdWUpKQogICAgICAgICAgICAgcmVxdWVzdEhlYWRl
cnMuc2V0KFN0cmluZyhoZWFkZXJOYW1lKSwgU3RyaW5nKGhlYWRlclZhbHVlKSk7Ci0gICAgICAg
IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RIZWFkZXJzID0gV1RGTW92ZShyZXF1ZXN0SGVh
ZGVycyk7CisgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLnJlcXVlc3RIZWFkZXJzID0gV1RGTW92
ZShyZXF1ZXN0SGVhZGVycyk7CiAKLSAgICAgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MucHJpb3Jp
dHkgPSB0b05ldHdvcmtMb2FkUHJpb3JpdHkoc291cF9tZXNzYWdlX2dldF9wcmlvcml0eShtX3Nv
dXBNZXNzYWdlLmdldCgpKSk7CisgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLnByaW9yaXR5ID0g
dG9OZXR3b3JrTG9hZFByaW9yaXR5KHNvdXBfbWVzc2FnZV9nZXRfcHJpb3JpdHkobV9zb3VwTWVz
c2FnZS5nZXQoKSkpOwogI2lmICFVU0UoU09VUDIpCi0gICAgICAgIG1fbmV0d29ya0xvYWRNZXRy
aWNzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0gU3RyaW5nOjpudW1iZXIoc291cF9tZXNzYWdlX2dl
dF9jb25uZWN0aW9uX2lkKG1fc291cE1lc3NhZ2UuZ2V0KCkpKTsKKyAgICAgICAgYWRkaXRpb25h
bE1ldHJpY3MuY29ubmVjdGlvbklkZW50aWZpZXIgPSBTdHJpbmc6Om51bWJlcihzb3VwX21lc3Nh
Z2VfZ2V0X2Nvbm5lY3Rpb25faWQobV9zb3VwTWVzc2FnZS5nZXQoKSkpOwogICAgICAgICBhdXRv
KiBhZGRyZXNzID0gc291cF9tZXNzYWdlX2dldF9yZW1vdGVfYWRkcmVzcyhtX3NvdXBNZXNzYWdl
LmdldCgpKTsKICAgICAgICAgaWYgKEdfSVNfSU5FVF9TT0NLRVRfQUREUkVTUyhhZGRyZXNzKSkg
ewogICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBpcEFkZHJlc3MoZ19pbmV0X2FkZHJlc3Nf
dG9fc3RyaW5nKGdfaW5ldF9zb2NrZXRfYWRkcmVzc19nZXRfYWRkcmVzcyhHX0lORVRfU09DS0VU
X0FERFJFU1MoYWRkcmVzcykpKSk7Ci0gICAgICAgICAgICBtX25ldHdvcmtMb2FkTWV0cmljcy5y
ZW1vdGVBZGRyZXNzID0gbWFrZVN0cmluZyhpcEFkZHJlc3MuZ2V0KCksICc6JywgZ19pbmV0X3Nv
Y2tldF9hZGRyZXNzX2dldF9wb3J0KEdfSU5FVF9TT0NLRVRfQUREUkVTUyhhZGRyZXNzKSkpOwor
ICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MucmVtb3RlQWRkcmVzcyA9IG1ha2VTdHJpbmco
aXBBZGRyZXNzLmdldCgpLCAnOicsIGdfaW5ldF9zb2NrZXRfYWRkcmVzc19nZXRfcG9ydChHX0lO
RVRfU09DS0VUX0FERFJFU1MoYWRkcmVzcykpKTsKICAgICAgICAgfQotICAgICAgICBtX25ldHdv
cmtMb2FkTWV0cmljcy50bHNQcm90b2NvbCA9IHRsc1Byb3RvY29sVmVyc2lvblRvU3RyaW5nKHNv
dXBfbWVzc2FnZV9nZXRfdGxzX3Byb3RvY29sX3ZlcnNpb24obV9zb3VwTWVzc2FnZS5nZXQoKSkp
OwotICAgICAgICBtX25ldHdvcmtMb2FkTWV0cmljcy50bHNDaXBoZXIgPSBTdHJpbmc6OmZyb21V
VEY4KHNvdXBfbWVzc2FnZV9nZXRfdGxzX2NpcGhlcnN1aXRlX25hbWUobV9zb3VwTWVzc2FnZS5n
ZXQoKSkpOwotICAgICAgICBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUhlYWRlckJ5dGVz
UmVjZWl2ZWQgPSBzb3VwX21lc3NhZ2VfbWV0cmljc19nZXRfcmVzcG9uc2VfaGVhZGVyX2J5dGVz
X3JlY2VpdmVkKG1ldHJpY3MpOworICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy50bHNQcm90b2Nv
bCA9IHRsc1Byb3RvY29sVmVyc2lvblRvU3RyaW5nKHNvdXBfbWVzc2FnZV9nZXRfdGxzX3Byb3Rv
Y29sX3ZlcnNpb24obV9zb3VwTWVzc2FnZS5nZXQoKSkpOworICAgICAgICBhZGRpdGlvbmFsTWV0
cmljcy50bHNDaXBoZXIgPSBTdHJpbmc6OmZyb21VVEY4KHNvdXBfbWVzc2FnZV9nZXRfdGxzX2Np
cGhlcnN1aXRlX25hbWUobV9zb3VwTWVzc2FnZS5nZXQoKSkpOworICAgICAgICBhZGRpdGlvbmFs
TWV0cmljcy5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQgPSBzb3VwX21lc3NhZ2VfbWV0cmlj
c19nZXRfcmVzcG9uc2VfaGVhZGVyX2J5dGVzX3JlY2VpdmVkKG1ldHJpY3MpOwogI2VuZGlmCiAg
ICAgfQogCkBAIC0xMjY4LDcgKzEyNzcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Ondy
b3RlSGVhZGVyc0NhbGxiYWNrKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgTmV0d29yawogICAg
IH0KICAgICBBU1NFUlQodGFzay0+bV9zb3VwTWVzc2FnZS5nZXQoKSA9PSBzb3VwTWVzc2FnZSk7
CiAgICAgYXV0byogbWV0cmljcyA9IHNvdXBfbWVzc2FnZV9nZXRfbWV0cmljcyhzb3VwTWVzc2Fn
ZSk7Ci0gICAgdGFzay0+bV9uZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRlckJ5dGVzU2Vu
dCA9IHNvdXBfbWVzc2FnZV9tZXRyaWNzX2dldF9yZXF1ZXN0X2hlYWRlcl9ieXRlc19zZW50KG1l
dHJpY3MpOworICAgIHRhc2stPmFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNw
ZWN0b3IoKS5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50ID0gc291cF9tZXNzYWdlX21ldHJpY3NfZ2V0
X3JlcXVlc3RfaGVhZGVyX2J5dGVzX3NlbnQobWV0cmljcyk7CiB9CiAKIHZvaWQgTmV0d29ya0Rh
dGFUYXNrU291cDo6d3JvdGVCb2R5Q2FsbGJhY2soU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBO
ZXR3b3JrRGF0YVRhc2tTb3VwKiB0YXNrKQpAQCAtMTI3OSw3ICsxMjg4LDcgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2tTb3VwOjp3cm90ZUJvZHlDYWxsYmFjayhTb3VwTWVzc2FnZSogc291cE1lc3Nh
Z2UsIE5ldHdvcmtEYXQKICAgICB9CiAgICAgQVNTRVJUKHRhc2stPm1fc291cE1lc3NhZ2UuZ2V0
KCkgPT0gc291cE1lc3NhZ2UpOwogICAgIGF1dG8qIG1ldHJpY3MgPSBzb3VwX21lc3NhZ2VfZ2V0
X21ldHJpY3Moc291cE1lc3NhZ2UpOwotICAgIHRhc2stPm1fbmV0d29ya0xvYWRNZXRyaWNzLnJl
cXVlc3RCb2R5Qnl0ZXNTZW50ID0gc291cF9tZXNzYWdlX21ldHJpY3NfZ2V0X3JlcXVlc3RfYm9k
eV9ieXRlc19zZW50KG1ldHJpY3MpOworICAgIHRhc2stPmFkZGl0aW9uYWxOZXR3b3JrTG9hZE1l
dHJpY3NGb3JXZWJJbnNwZWN0b3IoKS5yZXF1ZXN0Qm9keUJ5dGVzU2VudCA9IHNvdXBfbWVzc2Fn
ZV9tZXRyaWNzX2dldF9yZXF1ZXN0X2JvZHlfYnl0ZXNfc2VudChtZXRyaWNzKTsKIH0KIAogdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpnb3RCb2R5Q2FsbGJhY2soU291cE1lc3NhZ2UqIHNvdXBN
ZXNzYWdlLCBOZXR3b3JrRGF0YVRhc2tTb3VwKiB0YXNrKQpAQCAtMTUxNSw3ICsxNTI0LDcgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpuZXR3b3JrRXZlbnQoR1NvY2tldENsaWVudEV2ZW50
IGV2ZW50LCBHSU9TdHJlYW0qIHN0cmUKICAgICAgICAgICAgIEdSZWZQdHI8R1NvY2tldEFkZHJl
c3M+IGFkZHJlc3MgPSBhZG9wdEdSZWYoZ19zb2NrZXRfY29ubmVjdGlvbl9nZXRfcmVtb3RlX2Fk
ZHJlc3MoR19TT0NLRVRfQ09OTkVDVElPTihzdHJlYW0pLCBudWxscHRyKSk7CiAgICAgICAgICAg
ICBpZiAoR19JU19JTkVUX1NPQ0tFVF9BRERSRVNTKGFkZHJlc3MuZ2V0KCkpKSB7CiAgICAgICAg
ICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBpcEFkZHJlc3MoZ19pbmV0X2FkZHJlc3NfdG9fc3Ry
aW5nKGdfaW5ldF9zb2NrZXRfYWRkcmVzc19nZXRfYWRkcmVzcyhHX0lORVRfU09DS0VUX0FERFJF
U1MoYWRkcmVzcy5nZXQoKSkpKSk7Ci0gICAgICAgICAgICAgICAgbV9uZXR3b3JrTG9hZE1ldHJp
Y3MucmVtb3RlQWRkcmVzcyA9IG1ha2VTdHJpbmcoaXBBZGRyZXNzLmdldCgpLCAnOicsIGdfaW5l
dF9zb2NrZXRfYWRkcmVzc19nZXRfcG9ydChHX0lORVRfU09DS0VUX0FERFJFU1MoYWRkcmVzcy5n
ZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9y
V2ViSW5zcGVjdG9yKCkucmVtb3RlQWRkcmVzcyA9IG1ha2VTdHJpbmcoaXBBZGRyZXNzLmdldCgp
LCAnOicsIGdfaW5ldF9zb2NrZXRfYWRkcmVzc19nZXRfcG9ydChHX0lORVRfU09DS0VUX0FERFJF
U1MoYWRkcmVzcy5nZXQoKSkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAv
LyBXZWIgVGltaW5nIGNvbnNpZGVycyB0aGF0IGNvbm5lY3Rpb24gdGltZSBpbnZvbHZlcyBkbnMs
IHByb3h5ICYgVExTIG5lZ290aWF0aW9uLi4uCkBAIC0xNjM0LDcgKzE2NDMsNyBAQCB2b2lkIE5l
dHdvcmtEYXRhVGFza1NvdXA6OnJlc3RhcnRlZENhbGxiYWNrKFNvdXBNZXNzYWdlKiBzb3VwTWVz
c2FnZSwgTmV0d29ya0RhdAogCiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlc3RhcnQo
KQogewotICAgIG1fbmV0d29ya0xvYWRNZXRyaWNzID0geyB9OworICAgIG1fbmV0d29ya0xvYWRN
ZXRyaWNzID0gTmV0d29ya0xvYWRNZXRyaWNzOjplbXB0eU1ldHJpY3MoKTsKICNpZiBVU0UoU09V
UDIpCiAgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MuZmV0Y2hTdGFydCA9IE1vbm90b25pY1RpbWU6
Om5vdygpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCmluZGV4IGMzMzMwNjUxZDY2MjRkYWRkNDk2YzY4
OWZiMDhjMTQ0M2ExYTVlNzEuLmNmZWQ2YjM4MjYzMTllODU4MjZmOGY0MWZiMTAwMTBiMGNhMDkx
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
RGF0YVRhc2tTb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuaApAQCAtMTgxLDYgKzE4MSw4IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGF0YVVSTERlY29kZXI6
OlJlc3VsdD4mJik7CiAKKyAgICBXZWJDb3JlOjpBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNz
Rm9yV2ViSW5zcGVjdG9yJiBhZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVj
dG9yKCk7CisKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbV9mcmFtZUlEOwogICAgIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0
ZTo6U3VzcGVuZGVkIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCmluZGV4IGU3MDRlY2I4ODE0Y2NkZDA2MTBhN2IyMjgxYzc0YzcyOTVhMGM1NzUuLjU2
MjhhN2M3YzBjOWFkOGNhNjVmYzBlYWNiYWU1ZmI4NTc4ZjdmNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC05MDMsMTYgKzkwMyw2IEBAIHRl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6SW5wdXRNb2RlPiB7CiAgICAgPjsK
IH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TmV0d29ya0xvYWRQ
cmlvcml0eT4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYkNv
cmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHksCi0gICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJp
b3JpdHk6OkxvdywKLSAgICAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eTo6TWVkaXVt
LAotICAgICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5OjpIaWdoLAotICAgICAgICBX
ZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5OjpVbmtub3duCi0gICAgPjsKLX07Ci0KIHRlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uPiB7
CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uRGlyZWN0aW9uLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436964</attachid>
            <date>2021-08-31 16:44:43 -0700</date>
            <delta_ts>2021-09-21 16:22:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226982-20210831164443.patch</filename>
            <type>text/plain</type>
            <size>65073</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZlYmJjMWI4YTNkMWUw
MWE2MWUwNWY2MDgyZWI2ZTdiZjc1NGMzNy4uZTEzNDMwZTNlMGJiNDI2M2MzNWU5OGJlOGQ4YmI3
YWI2ZmY0NWRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIxLTA4LTMxICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNl
IHNpemVvZihOZXR3b3JrTG9hZE1ldHJpY3MpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuICBKdXN0IGdyZWF0bHkg
cmVkdWNpbmcgdGhlIHNpemUgb2YgYSBjb21tb24gc3RydWN0dXJlLgorCisgICAgICAgIFdlIHRh
a2UgYWxsIHRoZSBtZW1iZXJzIHRoYXQgYXJlbid0IHVzZWQgd2l0aG91dCB0aGUgaW5zcGVjdG9y
IGFuZCBtb3ZlIHRoZW0gdG8gYSBuZXcgc3RydWN0LAorICAgICAgICBBZGRpdGlvbmFsTmV0d29y
a0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yLiAgV2UgYWxzbyByZW1vdmUgc29tZSBlcXVhbGl0
eSBjb21wYXJpc29uIHRoYXQKKyAgICAgICAgd2FzIHVubmVjZXNzYXJ5IGJlY2F1c2UgaXQgd2Fz
IG9ubHkgdXNlZCBmb3IgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgZXF1YWxpdHkgY29tcGFyaXNv
bnMgaW4KKyAgICAgICAgUmVzb3VyY2VIYW5kbGVNYWMuICBXZSBhbHNvIHVzZSBlbXB0eU1ldHJp
Y3MoKSB0byByZW1vdmUgYSBmZXcgdW5uZWNlc3NhcnkgYW5kIGhhcmQgdG8gc2VlCisgICAgICAg
IGNvcHkgY29uc3RydWN0b3IgY2FsbHMuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvck1ldHJpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvclJlc291cmNlUmVz
cG9uc2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFsRm9yV2ViS2l0TGVnYWN5Q2hh
bGxlbmdlQ29tcGFyaXNvbik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUJhc2U6OmNvbXBhcmUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
cj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6Ok5ldHdvcmtMb2FkTWV0cmlj
cyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcyk6
CisgICAgICAgIChXZWJDb3JlOjpBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5z
cGVjdG9yOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0
d29ya0xvYWRNZXRyaWNzLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9y
V2ViSW5zcGVjdG9yOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWRkaXRpb25h
bE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcjo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljc1dpdGhvdXROb25UaW1pbmdEYXRhOjppc0NvbXBsZXRl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljc1dp
dGhvdXROb25UaW1pbmdEYXRhOjptYXJrQ29tcGxldGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjpOZXR3b3JrTG9hZE1ldHJpY3MpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjppc29sYXRlZENvcHkgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjpvcGVyYXRv
cj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
czo6b3BlcmF0b3IhPSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9w
ZXJhdG9yIT0pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsSGFuZGxlOjphZGRFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpuZXR3b3JrTG9hZE1ldHJp
Y3MpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlh
bCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9D
b250aW51ZVdpdGhvdXRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0
SGFuZGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hh
bGxlbmdlUmVqZWN0aW9uKToKKwogMjAyMS0wOC0zMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVf
Y2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBMb2FkcyBhZnRlciBzZXNzaW9uIHJlc3RvcmUg
bWFya2VkIGFwcCBpbml0aWF0ZWQgaW4gU2FmYXJpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY3NjBlYzc5YzI0ZjEw
ZWZkOWFlY2ViMjliMzdhZGFmZjU2Y2RmOWEuLjkxYTg0Njc3MDk1MzNkNGYyNzE0OWE0MzYxZGQx
Y2ZlMzE4YTI4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMDgtMzEgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2Ug
c2l6ZW9mKE5ldHdvcmtMb2FkTWV0cmljcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjk4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kUmVzdWx0
Rm9yQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNl
c3Npb246dGFzazpkaWRGaW5pc2hDb2xsZWN0aW5nTWV0cmljczpdKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjphZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2Vi
SW5zcGVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0
SGVhZGVycyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6Ondyb3RlSGVh
ZGVyc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6d3Jv
dGVCb2R5Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpu
ZXR3b3JrRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRS
ZXN0YXJ0KToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisKIDIw
MjEtMDgtMzEgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAg
ICAgICAgTG9hZHMgYWZ0ZXIgc2Vzc2lvbiByZXN0b3JlIG1hcmtlZCBhcHAgaW5pdGlhdGVkIGlu
IFNhZmFyaQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyNGM1MTVjMDU3YjI0ZjBmMmZmNjEyMjllODRiOTRj
NmE1NzY5YzQwLi40YTljYjc5MDYwYWMyNWMxM2ZiMTY0NDczNWI2NTgyZWYyNmI4OTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dApAQCAtMjA5Miw2ICsyMDkyLDcgQEAgcGxhdGZvcm0vbmV0d29yay9IVFRQSGVh
ZGVyTWFwLmNwcAogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyVmFsdWVzLmNwcAogcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5j
cHAKK3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmNwcAogcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcAogcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFuZ2UuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggOGYxYzNkM2FlZmIwNzZiY2JiNzAyMGE1NTFlNWUyOWZhNGVjMDY0Ni4uZDQ1M2Q2NmU2
ZjU4ZjBmZjlkYmM1YmNhODM4NGFkOTZkMWQ0N2VlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTY4Myw2ICs5NjgzLDcgQEAK
IAkJNUM5RUYyRjIyMUYwNjE3MTAwM0JEQzU2IC8qIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZVNlc3Npb25Qcm92aWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0ExREVDMjFGNzFFNjg2MDBFNzFCRDMg
LyogSFRUUEhlYWRlckZpZWxkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEhUVFBIZWFkZXJGaWVsZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
QTFERUM0MUY3MUU2ODcwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSFRUUEhlYWRlckZpZWxkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTVDQUM1RDA4MjZDRUYwMDEwMEJBRkQxNCAvKiBOZXR3b3JrTG9hZE1ldHJp
Y3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0xvYWRN
ZXRyaWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMzdGRkMxQzYyRDI3
ODAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTY3JvbGxBbmltYXRvck1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1Q0IzN0ZGRDFDNjJEMjc4MDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JN
b2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yTW9j
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOERBQTFBQUEzMDIyMDBFMUM4
MDMgLyogTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE3NTEsNiArMjE3NTIsNyBAQAogCQkJCTUxNEM3NjVF
MENFOTIzQTEwMDdFRjNDRCAvKiBIVFRQUGFyc2Vycy5oICovLAogCQkJCTYyOEQyMTRCMTIxMzFF
RDEwMDU1RENGQyAvKiBOZXR3b3JraW5nQ29udGV4dC5oICovLAogCQkJCTQxNkQ3NTlGMjBDNjQ0
MTMwMEQwMkQyQyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggKi8sCisJCQkJNUNBQzVEMDgy
NkNFRjAwMTAwQkFGRDE0IC8qIE5ldHdvcmtMb2FkTWV0cmljcy5jcHAgKi8sCiAJCQkJOEE4MUJG
ODQxMURDRkQ5MDAwREEyQjk4IC8qIE5ldHdvcmtMb2FkTWV0cmljcy5oICovLAogCQkJCTFBN0ZB
NjFBMEREQTNCQkUwMDI4RjhBNSAvKiBOZXR3b3JrU3RhdGVOb3RpZmllci5jcHAgKi8sCiAJCQkJ
MUE3RkE2MTgwRERBM0IzQTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmggKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAKaW5kZXggNzk0ODg1MmRkOWE2YmM0MmI0MDExNjk0MWNlMDM0NmMzMmUx
NmYyZC4uNjI0NjU1ODg4MTk1ODMyZGZlYzgxMGJhNjg1OTZmMTk2ZGNmODBiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcApAQCAtMjYzLDIxICsyNjMsMjIgQEAgUmVmPFByb3RvY29sOjpOZXR3b3JrOjpN
ZXRyaWNzPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTWV0cmljcyhjb24K
IAogICAgIGlmICghbmV0d29ya0xvYWRNZXRyaWNzLnByb3RvY29sLmlzTnVsbCgpKQogICAgICAg
ICBtZXRyaWNzLT5zZXRQcm90b2NvbChuZXR3b3JrTG9hZE1ldHJpY3MucHJvdG9jb2wpOwotICAg
IGlmIChuZXR3b3JrTG9hZE1ldHJpY3MucHJpb3JpdHkgIT0gTmV0d29ya0xvYWRQcmlvcml0eTo6
VW5rbm93bikKLSAgICAgICAgbWV0cmljcy0+c2V0UHJpb3JpdHkodG9Qcm90b2NvbChuZXR3b3Jr
TG9hZE1ldHJpY3MucHJpb3JpdHkpKTsKLSAgICBpZiAoIW5ldHdvcmtMb2FkTWV0cmljcy5yZW1v
dGVBZGRyZXNzLmlzTnVsbCgpKQotICAgICAgICBtZXRyaWNzLT5zZXRSZW1vdGVBZGRyZXNzKG5l
dHdvcmtMb2FkTWV0cmljcy5yZW1vdGVBZGRyZXNzKTsKLSAgICBpZiAoIW5ldHdvcmtMb2FkTWV0
cmljcy5jb25uZWN0aW9uSWRlbnRpZmllci5pc051bGwoKSkKLSAgICAgICAgbWV0cmljcy0+c2V0
Q29ubmVjdGlvbklkZW50aWZpZXIobmV0d29ya0xvYWRNZXRyaWNzLmNvbm5lY3Rpb25JZGVudGlm
aWVyKTsKLSAgICBpZiAoIW5ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0SGVhZGVycy5pc0VtcHR5
KCkpCi0gICAgICAgIG1ldHJpY3MtPnNldFJlcXVlc3RIZWFkZXJzKGJ1aWxkT2JqZWN0Rm9ySGVh
ZGVycyhuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRlcnMpKTsKLQotICAgIGlmIChuZXR3
b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRlckJ5dGVzU2VudCAhPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQ2NF90Pjo6bWF4KCkpCi0gICAgICAgIG1ldHJpY3MtPnNldFJlcXVlc3RIZWFkZXJC
eXRlc1NlbnQobmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQpOwotICAg
IGlmIChuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEJvZHlCeXRlc1NlbnQgIT0gc3RkOjpudW1l
cmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKQotICAgICAgICBtZXRyaWNzLT5zZXRSZXF1ZXN0
Qm9keUJ5dGVzU2VudChuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEJvZHlCeXRlc1NlbnQpOwot
ICAgIGlmIChuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkICE9
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSkKLSAgICAgICAgbWV0cmljcy0+
c2V0UmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkKG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25z
ZUhlYWRlckJ5dGVzUmVjZWl2ZWQpOworICAgIGlmIChhdXRvKiBhZGRpdGlvbmFsTWV0cmljcyA9
IG5ldHdvcmtMb2FkTWV0cmljcy5hZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5z
cGVjdG9yLmdldCgpKSB7CisgICAgICAgIGlmIChhZGRpdGlvbmFsTWV0cmljcy0+cHJpb3JpdHkg
IT0gTmV0d29ya0xvYWRQcmlvcml0eTo6VW5rbm93bikKKyAgICAgICAgICAgIG1ldHJpY3MtPnNl
dFByaW9yaXR5KHRvUHJvdG9jb2woYWRkaXRpb25hbE1ldHJpY3MtPnByaW9yaXR5KSk7CisgICAg
ICAgIGlmICghYWRkaXRpb25hbE1ldHJpY3MtPnJlbW90ZUFkZHJlc3MuaXNOdWxsKCkpCisgICAg
ICAgICAgICBtZXRyaWNzLT5zZXRSZW1vdGVBZGRyZXNzKGFkZGl0aW9uYWxNZXRyaWNzLT5yZW1v
dGVBZGRyZXNzKTsKKyAgICAgICAgaWYgKCFhZGRpdGlvbmFsTWV0cmljcy0+Y29ubmVjdGlvbklk
ZW50aWZpZXIuaXNOdWxsKCkpCisgICAgICAgICAgICBtZXRyaWNzLT5zZXRDb25uZWN0aW9uSWRl
bnRpZmllcihhZGRpdGlvbmFsTWV0cmljcy0+Y29ubmVjdGlvbklkZW50aWZpZXIpOworICAgICAg
ICBpZiAoIWFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0SGVhZGVycy5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBtZXRyaWNzLT5zZXRSZXF1ZXN0SGVhZGVycyhidWlsZE9iamVjdEZvckhlYWRlcnMo
YWRkaXRpb25hbE1ldHJpY3MtPnJlcXVlc3RIZWFkZXJzKSk7CisgICAgICAgIGlmIChhZGRpdGlv
bmFsTWV0cmljcy0+cmVxdWVzdEhlYWRlckJ5dGVzU2VudCAhPSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQ2NF90Pjo6bWF4KCkpCisgICAgICAgICAgICBtZXRyaWNzLT5zZXRSZXF1ZXN0SGVhZGVy
Qnl0ZXNTZW50KGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50KTsKKyAg
ICAgICAgaWYgKGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0Qm9keUJ5dGVzU2VudCAhPSBzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCisgICAgICAgICAgICBtZXRyaWNzLT5z
ZXRSZXF1ZXN0Qm9keUJ5dGVzU2VudChhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEJvZHlCeXRl
c1NlbnQpOworICAgICAgICBpZiAoYWRkaXRpb25hbE1ldHJpY3MtPnJlc3BvbnNlSGVhZGVyQnl0
ZXNSZWNlaXZlZCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCisgICAg
ICAgICAgICBtZXRyaWNzLT5zZXRSZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQoYWRkaXRpb25h
bE1ldHJpY3MtPnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCk7CisgICAgfQogICAgIGlmIChu
ZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZCAhPSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCiAgICAgICAgIG1ldHJpY3MtPnNldFJlc3BvbnNl
Qm9keUJ5dGVzUmVjZWl2ZWQobmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlQm9keUJ5dGVzUmVj
ZWl2ZWQpOwogICAgIGlmIChuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5RGVjb2RlZFNp
emUgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKQpAQCAtMjg2LDExICsy
ODcsMTIgQEAgUmVmPFByb3RvY29sOjpOZXR3b3JrOjpNZXRyaWNzPiBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTWV0cmljcyhjb24KICAgICBhdXRvIGNvbm5lY3Rpb25QYXls
b2FkID0gUHJvdG9jb2w6OlNlY3VyaXR5OjpDb25uZWN0aW9uOjpjcmVhdGUoKQogICAgICAgICAu
cmVsZWFzZSgpOwogCi0gICAgaWYgKCFuZXR3b3JrTG9hZE1ldHJpY3MudGxzUHJvdG9jb2wuaXNF
bXB0eSgpKQotICAgICAgICBjb25uZWN0aW9uUGF5bG9hZC0+c2V0UHJvdG9jb2wobmV0d29ya0xv
YWRNZXRyaWNzLnRsc1Byb3RvY29sKTsKLQotICAgIGlmICghbmV0d29ya0xvYWRNZXRyaWNzLnRs
c0NpcGhlci5pc0VtcHR5KCkpCi0gICAgICAgIGNvbm5lY3Rpb25QYXlsb2FkLT5zZXRDaXBoZXIo
bmV0d29ya0xvYWRNZXRyaWNzLnRsc0NpcGhlcik7CisgICAgaWYgKGF1dG8qIGFkZGl0aW9uYWxN
ZXRyaWNzID0gbmV0d29ya0xvYWRNZXRyaWNzLmFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NG
b3JXZWJJbnNwZWN0b3IuZ2V0KCkpIHsKKyAgICAgICAgaWYgKCFhZGRpdGlvbmFsTWV0cmljcy0+
dGxzUHJvdG9jb2wuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29ubmVjdGlvblBheWxvYWQtPnNl
dFByb3RvY29sKGFkZGl0aW9uYWxNZXRyaWNzLT50bHNQcm90b2NvbCk7CisgICAgICAgIGlmICgh
YWRkaXRpb25hbE1ldHJpY3MtPnRsc0NpcGhlci5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb25u
ZWN0aW9uUGF5bG9hZC0+c2V0Q2lwaGVyKGFkZGl0aW9uYWxNZXRyaWNzLT50bHNDaXBoZXIpOwor
ICAgIH0KIAogICAgIG1ldHJpY3MtPnNldFNlY3VyaXR5Q29ubmVjdGlvbihXVEZNb3ZlKGNvbm5l
Y3Rpb25QYXlsb2FkKSk7CiAKQEAgLTM1Myw3ICszNTUsNyBAQCBSZWZQdHI8UHJvdG9jb2w6Ok5l
dHdvcms6OlJlc3BvbnNlPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUmVz
b3VyYwogCiAgICAgaWYgKHJlc291cmNlTG9hZGVyKSB7CiAgICAgICAgIGF1dG8qIG1ldHJpY3Mg
PSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7Ci0gICAgICAg
IHJlc3BvbnNlT2JqZWN0LT5zZXRUaW1pbmcoYnVpbGRPYmplY3RGb3JUaW1pbmcobWV0cmljcyA/
ICptZXRyaWNzIDogTmV0d29ya0xvYWRNZXRyaWNzIHsgfSwgKnJlc291cmNlTG9hZGVyKSk7Cisg
ICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRUaW1pbmcoYnVpbGRPYmplY3RGb3JUaW1pbmcobWV0
cmljcyA/ICptZXRyaWNzIDogTmV0d29ya0xvYWRNZXRyaWNzOjplbXB0eU1ldHJpY3MoKSwgKnJl
c291cmNlTG9hZGVyKSk7CiAgICAgfQogCiAgICAgaWYgKGF1dG8mIGNlcnRpZmljYXRlSW5mbyA9
IHJlc3BvbnNlLmNlcnRpZmljYXRlSW5mbygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDVhOWE1N2U5MzkwNTI4ZmQz
NTk5YjA3ZGI2MGFjMTViMDA2NmM5NzAuLjYzNGE1MGIzMjgyNzU1ZGY3ZjIzY2E4OWVjYTlkMDRi
MTEzYTYzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCkBAIC02NjQsNyArNjY0LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5
Q2gKICAgICB9CiAKICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVk
TmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7Ci0gICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJl
c291cmNlVGltaW5nOjpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5p
bml0aWF0b3IsIGxvYWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJp
Y3MgeyB9LCByZXNwb25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgYXV0byByZXNvdXJjZVRp
bWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1f
b3B0aW9ucy5pbml0aWF0b3IsIGxvYWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3Jr
TG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcygpLCByZXNwb25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7
CiAgICAgaWYgKG9wdGlvbnMoKS5pbml0aWF0b3JDb250ZXh0ID09IEluaXRpYXRvckNvbnRleHQ6
OldvcmtlcikKICAgICAgICAgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKHJlc291cmNlVGlt
aW5nKTsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDFhZDg0MGJjZGY3ZTFmNjdkMjAyOGVlMGNlNzE4ZGMyMWNkYjQwZTEuLjI2
NDZiZmVkZWMzNDM4NDFjYTdmZGM4YzMwNDk2NWM0Zjk2MzljNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNDk4LDcgKzQ5OCw3IEBAIHZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgQ29tCiAgICAgICAgIGlmIChyZXNwb25zZUhhc0hUVFBTdGF0dXNDb2Rl
RXJyb3IoKSkgewogICAgICAgICAgICAgbV9sb2FkVGltaW5nLm1hcmtFbmRUaW1lKCk7CiAgICAg
ICAgICAgICBhdXRvKiBtZXRyaWNzID0gdGhpcy0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29y
a0xvYWRNZXRyaWNzT3JOdWxsKCk7Ci0gICAgICAgICAgICByZXBvcnRSZXNvdXJjZVRpbWluZyht
ZXRyaWNzID8gKm1ldHJpY3MgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9KTsKKyAgICAgICAgICAg
IHJlcG9ydFJlc291cmNlVGltaW5nKG1ldHJpY3MgPyAqbWV0cmljcyA6IE5ldHdvcmtMb2FkTWV0
cmljczo6ZW1wdHlNZXRyaWNzKCkpOwogCiAgICAgICAgICAgICBtX3N0YXRlID0gRmluaXNoaW5n
OwogICAgICAgICAgICAgbV9yZXNvdXJjZS0+ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OkxvYWRFcnJv
cik7CkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWUKICAgICAgICAg
Ly8gY29tcGxldGUgbG9hZCBtZXRyaWNzIGluIGRpZEZpbmlzaExvYWQuIEluIHRob3NlIGNhc2Vz
LCBmYWxsIGJhY2sgdG8gdGhlIHBvc3NpYmlsaXR5CiAgICAgICAgIC8vIHRoYXQgdGhleSBwb3B1
bGF0ZWQgcGFydGlhbCBsb2FkIHRpbWluZyBpbmZvcm1hdGlvbiBvbiB0aGUgUmVzb3VyY2VSZXNw
b25zZS4KICAgICAgICAgY29uc3QgYXV0byogdGltaW5nID0gbV9yZXNvdXJjZS0+cmVzcG9uc2Uo
KS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7Ci0gICAgICAgIHJlcG9ydFJl
c291cmNlVGltaW5nKHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9KTsK
KyAgICAgICAgcmVwb3J0UmVzb3VyY2VUaW1pbmcodGltaW5nID8gKnRpbWluZyA6IE5ldHdvcmtM
b2FkTWV0cmljczo6ZW1wdHlNZXRyaWNzKCkpOwogICAgIH0KIAogICAgIGlmIChtX3Jlc291cmNl
LT50eXBlKCkgIT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDIxMWIzMmEzNDdmMWU5M2JmMGU0NDcwZjM0ZDQ0OTc3OTQyYTcxOTQuLmRhNTg1MzQ1Yzk4
YmQxOTNlNTZiZTEyZGZjOTk0MzM5NTNkYzIwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtMTA0MCw3ICsxMDQw
LDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNl
Pj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXUKICAgICAgICAgICAgICAgICAvLyBmb3IgdGhp
cyBkb2N1bWVudCBiZWNhdXNlIGl0IG1heSBoYXZlIGJlZW4gc3BlY3VsYXRpdmVseSBwcmVsb2Fk
ZWQuCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gbWV0cmljc0Zyb21SZXNvdXJjZSA9IHJlc291
cmNlLT50YWtlTmV0d29ya0xvYWRNZXRyaWNzKCk7IG1ldHJpY3NGcm9tUmVzb3VyY2UgJiYgZG9j
dW1lbnRMb2FkZXIgJiYgbWV0cmljc0Zyb21SZXNvdXJjZS0+cmVkaXJlY3RTdGFydCA+PSBkb2N1
bWVudExvYWRlci0+dGltaW5nKCkudGltZU9yaWdpbigpKQogICAgICAgICAgICAgICAgICAgICBt
ZXRyaWNzID0gV1RGTW92ZShtZXRyaWNzRnJvbVJlc291cmNlKTsKLSAgICAgICAgICAgICAgICBh
dXRvIHJlc291cmNlVGltaW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21NZW1vcnlDYWNoZSh1cmws
IHJlcXVlc3QuaW5pdGlhdG9yTmFtZSgpLCBsb2FkVGltaW5nLCByZXNvdXJjZS0+cmVzcG9uc2Uo
KSwgbWV0cmljcyA/ICptZXRyaWNzIDogTmV0d29ya0xvYWRNZXRyaWNzIHsgfSwgKnJlcXVlc3Qu
b3JpZ2luKCkpOworICAgICAgICAgICAgICAgIGF1dG8gcmVzb3VyY2VUaW1pbmcgPSBSZXNvdXJj
ZVRpbWluZzo6ZnJvbU1lbW9yeUNhY2hlKHVybCwgcmVxdWVzdC5pbml0aWF0b3JOYW1lKCksIGxv
YWRUaW1pbmcsIHJlc291cmNlLT5yZXNwb25zZSgpLCBtZXRyaWNzID8gKm1ldHJpY3MgOiBOZXR3
b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcygpLCAqcmVxdWVzdC5vcmlnaW4oKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKGluaXRpYXRvckNvbnRleHQgPT0gSW5pdGlhdG9yQ29udGV4dDo6V29y
a2VyKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpczxDYWNoZWRSYXdSZXNvdXJjZT4o
cmVzb3VyY2UuZ2V0KCkpKTsKICAgICAgICAgICAgICAgICAgICAgZG93bmNhc3Q8Q2FjaGVkUmF3
UmVzb3VyY2U+KHJlc291cmNlLmdldCgpKS0+ZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKFdU
Rk1vdmUocmVzb3VyY2VUaW1pbmcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNwcAppbmRl
eCA3YzE5ZTFmNTIxNjQ5MjU3OTk0Zjc1M2ZhZTAzMzc2NzczOWUzMzhhLi4xYWVjZDJlNGY5YTQ5
YmUxNThlZDhlMzY2MjQ5ZDhjYTE5Y2QzNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2Uu
Y3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjpu
dWxsaWZ5KCkKICAgICBtX2lzTnVsbCA9IHRydWU7CiB9CiAKLWJvb2wgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VCYXNlOjpjb21wYXJlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYikKK2Jvb2wgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlOjplcXVhbEZvcldlYktpdExlZ2FjeUNoYWxsZW5nZUNvbXBhcmlzb24oY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBiKQogewogICAgIGlmIChhLmlzTnVsbCgpICYmIGIuaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtOTksOSArOTksOSBAQCBib29sIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFz
ZTo6Y29tcGFyZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29ucwogICAgIGlm
IChhLnByZXZpb3VzRmFpbHVyZUNvdW50KCkgIT0gYi5wcmV2aW91c0ZhaWx1cmVDb3VudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgIGlmIChhLmZhaWx1cmVSZXNwb25z
ZSgpICE9IGIuZmFpbHVyZVJlc3BvbnNlKCkpCisgICAgaWYgKCFSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGEuZmFpbHVyZVJlc3Bv
bnNlKCksIGIuZmFpbHVyZVJlc3BvbnNlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIAorCiAgICAgaWYgKGEuZXJyb3IoKSAhPSBiLmVycm9yKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaAppbmRleCBhNGY3YjYyZWRh
MTAyZWNmNTk5ODcxZDM3NTc4OTJkNzc5OWQwMjA3Li41ODYwNzBmZWE5NjlmNGJjMjg4NTU1NjNk
YjMwNmU2Zjk1MGNiZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmgKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBudWxsaWZ5KCk7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGJvb2wgY29tcGFyZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwg
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIGVxdWFsRm9yV2ViS2l0TGVnYWN5Q2hhbGxlbmdlQ29tcGFyaXNvbihjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7
CiAKIHByb3RlY3RlZDoKICAgICAvLyBUaGUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ugc3ViY2xh
c3MgbWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRvIGNvbXBhcmUgcGxhdGZvcm0gc3BlY2lmaWMg
ZmllbGRzCkBAIC02Miw5ICs2Miw2IEBAIHByb3RlY3RlZDoKICAgICBSZXNvdXJjZUVycm9yIG1f
ZXJyb3I7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYikgeyByZXR1cm4g
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9Ci1pbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgYikgeyByZXR1cm4gIShhID09IGIpOyB9Ci0KIH0KIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtM
b2FkTWV0cmljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtM
b2FkTWV0cmljcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNhNGMyZmVkNGRlYTBjMjUzYmYyY2E4YmExNTJk
NTA2OTY2OTQ3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmNwcApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJOZXR3b3JrTG9hZE1ldHJpY3MuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05ldHdvcmtMb2FkTWV0cmljczo6
TmV0d29ya0xvYWRNZXRyaWNzKCkKKyAgICA6IGNvbXBsZXRlKGZhbHNlKQorICAgICwgY2VsbHVs
YXIoZmFsc2UpCisgICAgLCBleHBlbnNpdmUoZmFsc2UpCisgICAgLCBjb25zdHJhaW5lZChmYWxz
ZSkKKyAgICAsIG11bHRpcGF0aChmYWxzZSkKKyAgICAsIGlzUmV1c2VkQ29ubmVjdGlvbihmYWxz
ZSkKKyAgICAsIGZhaWxzVEFPQ2hlY2soZmFsc2UpCisgICAgLCBoYXNDcm9zc09yaWdpblJlZGly
ZWN0KGZhbHNlKSB7IH0KKworY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBOZXR3b3JrTG9hZE1l
dHJpY3M6OmVtcHR5TWV0cmljcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE5ldHdv
cmtMb2FkTWV0cmljcz4gbWV0cmljczsKKyAgICByZXR1cm4gbWV0cmljcy5nZXQoKTsKK30KKwor
UmVmPEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I+IEFkZGl0aW9u
YWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I6Omlzb2xhdGVkQ29weSgpCit7Cisg
ICAgYXV0byBjb3B5ID0gYWRvcHRSZWYoKm5ldyBBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNz
Rm9yV2ViSW5zcGVjdG9yKTsKKyAgICBjb3B5LT5wcmlvcml0eSA9IHByaW9yaXR5OworICAgIGNv
cHktPnJlbW90ZUFkZHJlc3MgPSByZW1vdGVBZGRyZXNzLmlzb2xhdGVkQ29weSgpOworICAgIGNv
cHktPmNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRD
b3B5KCk7CisgICAgY29weS0+dGxzUHJvdG9jb2wgPSB0bHNQcm90b2NvbC5pc29sYXRlZENvcHko
KTsKKyAgICBjb3B5LT50bHNDaXBoZXIgPSB0bHNDaXBoZXIuaXNvbGF0ZWRDb3B5KCk7CisgICAg
Y29weS0+cmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5pc29sYXRlZENvcHkoKTsKKyAg
ICBjb3B5LT5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50ID0gcmVxdWVzdEhlYWRlckJ5dGVzU2VudDsK
KyAgICBjb3B5LT5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQgPSByZXNwb25zZUhlYWRlckJ5
dGVzUmVjZWl2ZWQ7CisgICAgY29weS0+cmVxdWVzdEJvZHlCeXRlc1NlbnQgPSByZXF1ZXN0Qm9k
eUJ5dGVzU2VudDsKKyAgICByZXR1cm4gY29weTsKK30KKworTmV0d29ya0xvYWRNZXRyaWNzIE5l
dHdvcmtMb2FkTWV0cmljczo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBOZXR3b3JrTG9h
ZE1ldHJpY3MgY29weTsKKworICAgIGNvcHkucmVkaXJlY3RTdGFydCA9IHJlZGlyZWN0U3RhcnQu
aXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5mZXRjaFN0YXJ0ID0gZmV0Y2hTdGFydC5pc29sYXRl
ZENvcHkoKTsKKyAgICBjb3B5LmRvbWFpbkxvb2t1cFN0YXJ0ID0gZG9tYWluTG9va3VwU3RhcnQu
aXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5kb21haW5Mb29rdXBFbmQgPSBkb21haW5Mb29rdXBF
bmQuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5jb25uZWN0U3RhcnQgPSBjb25uZWN0U3RhcnQu
aXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBzZWN1cmVD
b25uZWN0aW9uU3RhcnQuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5jb25uZWN0RW5kID0gY29u
bmVjdEVuZC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LnJlcXVlc3RTdGFydCA9IHJlcXVlc3RT
dGFydC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LnJlc3BvbnNlU3RhcnQgPSByZXNwb25zZVN0
YXJ0Lmlzb2xhdGVkQ29weSgpOworICAgIGNvcHkucmVzcG9uc2VFbmQgPSByZXNwb25zZUVuZC5p
c29sYXRlZENvcHkoKTsKKworICAgIGNvcHkucHJvdG9jb2wgPSBwcm90b2NvbC5pc29sYXRlZENv
cHkoKTsKKworICAgIGNvcHkucmVkaXJlY3RDb3VudCA9IHJlZGlyZWN0Q291bnQ7CisKKyAgICBj
b3B5LmNvbXBsZXRlID0gY29tcGxldGU7CisgICAgY29weS5jZWxsdWxhciA9IGNlbGx1bGFyOwor
ICAgIGNvcHkuZXhwZW5zaXZlID0gZXhwZW5zaXZlOworICAgIGNvcHkuY29uc3RyYWluZWQgPSBj
b25zdHJhaW5lZDsKKyAgICBjb3B5Lm11bHRpcGF0aCA9IG11bHRpcGF0aDsKKyAgICBjb3B5Lmlz
UmV1c2VkQ29ubmVjdGlvbiA9IGlzUmV1c2VkQ29ubmVjdGlvbjsKKyAgICBjb3B5LmZhaWxzVEFP
Q2hlY2sgPSBmYWlsc1RBT0NoZWNrOworICAgIGNvcHkuaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCA9
IGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3Q7CisKKyAgICBjb3B5LnByaXZhY3lTdGFuY2UgPSBwcml2
YWN5U3RhbmNlOworCisgICAgY29weS5yZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkID0gcmVzcG9u
c2VCb2R5Qnl0ZXNSZWNlaXZlZDsKKyAgICBjb3B5LnJlc3BvbnNlQm9keURlY29kZWRTaXplID0g
cmVzcG9uc2VCb2R5RGVjb2RlZFNpemU7CisKKyAgICBpZiAoYWRkaXRpb25hbE5ldHdvcmtMb2Fk
TWV0cmljc0ZvcldlYkluc3BlY3RvcikKKyAgICAgICAgY29weS5hZGRpdGlvbmFsTmV0d29ya0xv
YWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yID0gYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0Zv
cldlYkluc3BlY3Rvci0+aXNvbGF0ZWRDb3B5KCk7CisKKyAgICByZXR1cm4gY29weTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmgKaW5kZXggZjFlYTc2ZTFkYjExM2RjNjQ2OTA4
ODY3OWJhOTdjNzhhOTIxMzc3NS4uNmI0NjI5ZDVmNDY3ZmY4M2NlMmNmY2JiNzQxNmQ4ZWNiOTM2
OGU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
TG9hZE1ldHJpY3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtMb2FkTWV0cmljcy5oCkBAIC0zNCw3ICszNCw2IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkK
IE9CSkNfQ0xBU1MgTlNVUkxDb25uZWN0aW9uOwotT0JKQ19DTEFTUyBOU1VSTFJlc3BvbnNlOwog
T0JKQ19DTEFTUyBOU1VSTFNlc3Npb25UYXNrTWV0cmljczsKICNlbmRpZgogCkBAIC01OSw5ICs1
OCwyNCBAQCBlbnVtIGNsYXNzIFByaXZhY3lTdGFuY2UgOiB1aW50OF90IHsKIAogY29uc3RleHBy
IE1vbm90b25pY1RpbWUgcmV1c2VkVExTQ29ubmVjdGlvblNlbnRpbmVsIHsgTW9ub3RvbmljVGlt
ZTo6ZnJvbVJhd1NlY29uZHMoLTEpIH07CiAKLWNsYXNzIE5ldHdvcmtMb2FkTWV0cmljc1dpdGhv
dXROb25UaW1pbmdEYXRhIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChOZXR3b3JrTG9h
ZE1ldHJpY3NXaXRob3V0Tm9uVGltaW5nRGF0YSk7CitzdHJ1Y3QgQWRkaXRpb25hbE5ldHdvcmtM
b2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcjsKKworY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChOZXR3b3JrTG9hZE1ldHJpY3MpOwogcHVibGlj
OgorICAgIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtMb2FkTWV0cmljcygpOworICAgIE5ldHdvcmtM
b2FkTWV0cmljcyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IGRlZmF1bHQ7CisgICAgTmV0
d29ya0xvYWRNZXRyaWNzKE5ldHdvcmtMb2FkTWV0cmljcyYmKSA9IGRlZmF1bHQ7CisgICAgTmV0
d29ya0xvYWRNZXRyaWNzJiBvcGVyYXRvcj0oTmV0d29ya0xvYWRNZXRyaWNzJiYpID0gZGVmYXVs
dDsKKyAgICBOZXR3b3JrTG9hZE1ldHJpY3MmIG9wZXJhdG9yPShjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBlbXB0eU1ldHJpY3MoKTsKKworICAgIE5ldHdvcmtMb2FkTWV0cmljcyBpc29sYXRlZENvcHko
KSBjb25zdDsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxOZXR3b3JrTG9hZE1ldHJpY3M+IGRlY29kZShEZWNvZGVyJik7CisKICAgICBib29sIGlz
Q29tcGxldGUoKSBjb25zdCB7IHJldHVybiBjb21wbGV0ZTsgfQogICAgIHZvaWQgbWFya0NvbXBs
ZXRlKCkgeyBjb21wbGV0ZSA9IHRydWU7IH0KIApAQCAtODIsMTEwICs5NiwzMiBAQCBwdWJsaWM6
CiAKICAgICB1aW50MTZfdCByZWRpcmVjdENvdW50IHsgMCB9OwogCi0gICAgLy8gRklYTUU6IFRo
ZXNlIGNvdWxkIGFsbCBiZSBtYWRlIGJpdCBmaWVsZHMuCi0gICAgYm9vbCBjb21wbGV0ZSB7IGZh
bHNlIH07Ci0gICAgYm9vbCBjZWxsdWxhciB7IGZhbHNlIH07Ci0gICAgYm9vbCBleHBlbnNpdmUg
eyBmYWxzZSB9OwotICAgIGJvb2wgY29uc3RyYWluZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbXVs
dGlwYXRoIHsgZmFsc2UgfTsKLSAgICBib29sIGlzUmV1c2VkQ29ubmVjdGlvbiB7IGZhbHNlIH07
Ci0gICAgYm9vbCBmYWlsc1RBT0NoZWNrIHsgZmFsc2UgfTsKLSAgICBib29sIGhhc0Nyb3NzT3Jp
Z2luUmVkaXJlY3QgeyBmYWxzZSB9OwotfTsKKyAgICBib29sIGNvbXBsZXRlIDogMTsKKyAgICBi
b29sIGNlbGx1bGFyIDogMTsKKyAgICBib29sIGV4cGVuc2l2ZSA6IDE7CisgICAgYm9vbCBjb25z
dHJhaW5lZCA6IDE7CisgICAgYm9vbCBtdWx0aXBhdGggOiAxOworICAgIGJvb2wgaXNSZXVzZWRD
b25uZWN0aW9uIDogMTsKKyAgICBib29sIGZhaWxzVEFPQ2hlY2sgOiAxOworICAgIGJvb2wgaGFz
Q3Jvc3NPcmlnaW5SZWRpcmVjdCA6IDE7CiAKLWNsYXNzIE5ldHdvcmtMb2FkTWV0cmljcyA6IHB1
YmxpYyBOZXR3b3JrTG9hZE1ldHJpY3NXaXRob3V0Tm9uVGltaW5nRGF0YSB7Ci1wdWJsaWM6Ci0g
ICAgTmV0d29ya0xvYWRNZXRyaWNzKCkKLSAgICAgICAgOiBOZXR3b3JrTG9hZE1ldHJpY3NXaXRo
b3V0Tm9uVGltaW5nRGF0YSgpCi0gICAgewotICAgIH0KKyAgICBQcml2YWN5U3RhbmNlIHByaXZh
Y3lTdGFuY2UgeyBQcml2YWN5U3RhbmNlOjpVbmtub3duIH07CiAKLSAgICBOZXR3b3JrTG9hZE1l
dHJpY3MgaXNvbGF0ZWRDb3B5KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ldHdvcmtMb2FkTWV0
cmljcyBjb3B5OwotCi0gICAgICAgIGNvcHkucmVkaXJlY3RTdGFydCA9IHJlZGlyZWN0U3RhcnQ7
Ci0gICAgICAgIGNvcHkuZmV0Y2hTdGFydCA9IGZldGNoU3RhcnQ7Ci0KLSAgICAgICAgY29weS5k
b21haW5Mb29rdXBTdGFydCA9IGRvbWFpbkxvb2t1cFN0YXJ0OwotICAgICAgICBjb3B5LmRvbWFp
bkxvb2t1cEVuZCA9IGRvbWFpbkxvb2t1cEVuZDsKLSAgICAgICAgY29weS5jb25uZWN0U3RhcnQg
PSBjb25uZWN0U3RhcnQ7Ci0gICAgICAgIGNvcHkuc2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gc2Vj
dXJlQ29ubmVjdGlvblN0YXJ0OwotICAgICAgICBjb3B5LmNvbm5lY3RFbmQgPSBjb25uZWN0RW5k
OwotICAgICAgICBjb3B5LnJlcXVlc3RTdGFydCA9IHJlcXVlc3RTdGFydDsKLSAgICAgICAgY29w
eS5yZXNwb25zZVN0YXJ0ID0gcmVzcG9uc2VTdGFydDsKLSAgICAgICAgY29weS5yZXNwb25zZUVu
ZCA9IHJlc3BvbnNlRW5kOwotICAgICAgICBjb3B5LmNvbXBsZXRlID0gY29tcGxldGU7Ci0gICAg
ICAgIGNvcHkucHJvdG9jb2wgPSBwcm90b2NvbC5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgY29w
eS5yZWRpcmVjdENvdW50ID0gcmVkaXJlY3RDb3VudDsKLSAgICAgICAgY29weS5jZWxsdWxhciA9
IGNlbGx1bGFyOwotICAgICAgICBjb3B5LmV4cGVuc2l2ZSA9IGV4cGVuc2l2ZTsKLSAgICAgICAg
Y29weS5jb25zdHJhaW5lZCA9IGNvbnN0cmFpbmVkOwotICAgICAgICBjb3B5Lm11bHRpcGF0aCA9
IG11bHRpcGF0aDsKLSAgICAgICAgY29weS5pc1JldXNlZENvbm5lY3Rpb24gPSBpc1JldXNlZENv
bm5lY3Rpb247Ci0gICAgICAgIGNvcHkuZmFpbHNUQU9DaGVjayA9IGZhaWxzVEFPQ2hlY2s7Ci0g
ICAgICAgIGNvcHkuaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCA9IGhhc0Nyb3NzT3JpZ2luUmVkaXJl
Y3Q7Ci0KLSAgICAgICAgY29weS5yZW1vdGVBZGRyZXNzID0gcmVtb3RlQWRkcmVzcy5pc29sYXRl
ZENvcHkoKTsKLSAgICAgICAgY29weS5jb25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb25J
ZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpOwotICAgICAgICBjb3B5LnRsc1Byb3RvY29sID0gdGxz
UHJvdG9jb2wuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgICAgIGNvcHkudGxzQ2lwaGVyID0gdGxzQ2lw
aGVyLmlzb2xhdGVkQ29weSgpOwotICAgICAgICBjb3B5LnByaW9yaXR5ID0gcHJpb3JpdHk7Ci0g
ICAgICAgIGNvcHkucHJpdmFjeVN0YW5jZSA9IHByaXZhY3lTdGFuY2U7Ci0gICAgICAgIGNvcHku
cmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5pc29sYXRlZENvcHkoKTsKLQotICAgICAg
ICBjb3B5LnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQgPSByZXF1ZXN0SGVhZGVyQnl0ZXNTZW50Owot
ICAgICAgICBjb3B5LnJlcXVlc3RCb2R5Qnl0ZXNTZW50ID0gcmVxdWVzdEJvZHlCeXRlc1NlbnQ7
Ci0gICAgICAgIGNvcHkucmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkID0gcmVzcG9uc2VIZWFk
ZXJCeXRlc1JlY2VpdmVkOwotICAgICAgICBjb3B5LnJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQg
PSByZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkOwotICAgICAgICBjb3B5LnJlc3BvbnNlQm9keURl
Y29kZWRTaXplID0gcmVzcG9uc2VCb2R5RGVjb2RlZFNpemU7Ci0KLSAgICAgICAgcmV0dXJuIGNv
cHk7Ci0gICAgfQorICAgIHVpbnQ2NF90IHJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQgeyBzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkgfTsKKyAgICB1aW50NjRfdCByZXNwb25z
ZUJvZHlEZWNvZGVkU2l6ZSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSB9
OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgb3RoZXIp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcmVkaXJlY3RTdGFydCA9PSBvdGhlci5yZWRp
cmVjdFN0YXJ0Ci0gICAgICAgICAgICAmJiBmZXRjaFN0YXJ0ID09IG90aGVyLmZldGNoU3RhcnQK
LSAgICAgICAgICAgICYmIGRvbWFpbkxvb2t1cFN0YXJ0ID09IG90aGVyLmRvbWFpbkxvb2t1cFN0
YXJ0Ci0gICAgICAgICAgICAmJiBkb21haW5Mb29rdXBFbmQgPT0gb3RoZXIuZG9tYWluTG9va3Vw
RW5kCi0gICAgICAgICAgICAmJiBjb25uZWN0U3RhcnQgPT0gb3RoZXIuY29ubmVjdFN0YXJ0Ci0g
ICAgICAgICAgICAmJiBzZWN1cmVDb25uZWN0aW9uU3RhcnQgPT0gb3RoZXIuc2VjdXJlQ29ubmVj
dGlvblN0YXJ0Ci0gICAgICAgICAgICAmJiBjb25uZWN0RW5kID09IG90aGVyLmNvbm5lY3RFbmQK
LSAgICAgICAgICAgICYmIHJlcXVlc3RTdGFydCA9PSBvdGhlci5yZXF1ZXN0U3RhcnQKLSAgICAg
ICAgICAgICYmIHJlc3BvbnNlU3RhcnQgPT0gb3RoZXIucmVzcG9uc2VTdGFydAotICAgICAgICAg
ICAgJiYgcmVzcG9uc2VFbmQgPT0gb3RoZXIucmVzcG9uc2VFbmQKLSAgICAgICAgICAgICYmIGNv
bXBsZXRlID09IG90aGVyLmNvbXBsZXRlCi0gICAgICAgICAgICAmJiBjZWxsdWxhciA9PSBvdGhl
ci5jZWxsdWxhcgotICAgICAgICAgICAgJiYgZXhwZW5zaXZlID09IG90aGVyLmV4cGVuc2l2ZQot
ICAgICAgICAgICAgJiYgY29uc3RyYWluZWQgPT0gb3RoZXIuY29uc3RyYWluZWQKLSAgICAgICAg
ICAgICYmIG11bHRpcGF0aCA9PSBvdGhlci5tdWx0aXBhdGgKLSAgICAgICAgICAgICYmIGlzUmV1
c2VkQ29ubmVjdGlvbiA9PSBvdGhlci5pc1JldXNlZENvbm5lY3Rpb24KLSAgICAgICAgICAgICYm
IGZhaWxzVEFPQ2hlY2sgPT0gb3RoZXIuZmFpbHNUQU9DaGVjawotICAgICAgICAgICAgJiYgaGFz
Q3Jvc3NPcmlnaW5SZWRpcmVjdCA9PSBvdGhlci5oYXNDcm9zc09yaWdpblJlZGlyZWN0Ci0gICAg
ICAgICAgICAmJiBwcm90b2NvbCA9PSBvdGhlci5wcm90b2NvbAotICAgICAgICAgICAgJiYgcmVk
aXJlY3RDb3VudCA9PSBvdGhlci5yZWRpcmVjdENvdW50Ci0gICAgICAgICAgICAmJiByZW1vdGVB
ZGRyZXNzID09IG90aGVyLnJlbW90ZUFkZHJlc3MKLSAgICAgICAgICAgICYmIGNvbm5lY3Rpb25J
ZGVudGlmaWVyID09IG90aGVyLmNvbm5lY3Rpb25JZGVudGlmaWVyCi0gICAgICAgICAgICAmJiB0
bHNQcm90b2NvbCA9PSBvdGhlci50bHNQcm90b2NvbAotICAgICAgICAgICAgJiYgdGxzQ2lwaGVy
ID09IG90aGVyLnRsc0NpcGhlcgotICAgICAgICAgICAgJiYgcHJpb3JpdHkgPT0gb3RoZXIucHJp
b3JpdHkKLSAgICAgICAgICAgICYmIHByaXZhY3lTdGFuY2UgPT0gb3RoZXIucHJpdmFjeVN0YW5j
ZQotICAgICAgICAgICAgJiYgcmVxdWVzdEhlYWRlcnMgPT0gb3RoZXIucmVxdWVzdEhlYWRlcnMK
LSAgICAgICAgICAgICYmIHJlcXVlc3RIZWFkZXJCeXRlc1NlbnQgPT0gb3RoZXIucmVxdWVzdEhl
YWRlckJ5dGVzU2VudAotICAgICAgICAgICAgJiYgcmVxdWVzdEJvZHlCeXRlc1NlbnQgPT0gb3Ro
ZXIucmVxdWVzdEJvZHlCeXRlc1NlbnQKLSAgICAgICAgICAgICYmIHJlc3BvbnNlSGVhZGVyQnl0
ZXNSZWNlaXZlZCA9PSBvdGhlci5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQKLSAgICAgICAg
ICAgICYmIHJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQgPT0gb3RoZXIucmVzcG9uc2VCb2R5Qnl0
ZXNSZWNlaXZlZAotICAgICAgICAgICAgJiYgcmVzcG9uc2VCb2R5RGVjb2RlZFNpemUgPT0gb3Ro
ZXIucmVzcG9uc2VCb2R5RGVjb2RlZFNpemU7Ci0gICAgfQorICAgIFJlZlB0cjxBZGRpdGlvbmFs
TmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yPiBhZGRpdGlvbmFsTmV0d29ya0xvYWRN
ZXRyaWNzRm9yV2ViSW5zcGVjdG9yOworfTsKIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOwotICAgIH0KK3N0cnVjdCBBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRy
aWNzRm9yV2ViSW5zcGVjdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8QWRkaXRpb25hbE5ldHdvcmtM
b2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcj4geworCisgICAgUmVmPEFkZGl0aW9uYWxOZXR3b3Jr
TG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I+IGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCiAgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBSZWZQdHI8QWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0Zvcldl
Ykluc3BlY3Rvcj4gZGVjb2RlKERlY29kZXImKTsKKyAgICBSZWY8QWRkaXRpb25hbE5ldHdvcmtM
b2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcj4gaXNvbGF0ZWRDb3B5KCk7CisKKyAgICBOZXR3b3Jr
TG9hZFByaW9yaXR5IHByaW9yaXR5IHsgTmV0d29ya0xvYWRQcmlvcml0eTo6VW5rbm93biB9Owog
CiAgICAgU3RyaW5nIHJlbW90ZUFkZHJlc3M7CiAgICAgU3RyaW5nIGNvbm5lY3Rpb25JZGVudGlm
aWVyOwpAQCAtMTkzLDE2ICsxMjksMTEgQEAgcHVibGljOgogICAgIFN0cmluZyB0bHNQcm90b2Nv
bDsKICAgICBTdHJpbmcgdGxzQ2lwaGVyOwogCi0gICAgTmV0d29ya0xvYWRQcmlvcml0eSBwcmlv
cml0eSB7IE5ldHdvcmtMb2FkUHJpb3JpdHk6OlVua25vd24gfTsKLSAgICBQcml2YWN5U3RhbmNl
IHByaXZhY3lTdGFuY2UgeyBQcml2YWN5U3RhbmNlOjpVbmtub3duIH07Ci0KICAgICBIVFRQSGVh
ZGVyTWFwIHJlcXVlc3RIZWFkZXJzOwogCiAgICAgdWludDY0X3QgcmVxdWVzdEhlYWRlckJ5dGVz
U2VudCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSB9OwogICAgIHVpbnQ2
NF90IHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDY0X3Q+OjptYXgoKSB9OwogICAgIHVpbnQ2NF90IHJlcXVlc3RCb2R5Qnl0ZXNTZW50IHsgc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIH07Ci0gICAgdWludDY0X3QgcmVzcG9u
c2VCb2R5Qnl0ZXNSZWNlaXZlZCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgo
KSB9OwotICAgIHVpbnQ2NF90IHJlc3BvbnNlQm9keURlY29kZWRTaXplIHsgc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50NjRfdD46Om1heCgpIH07CiB9OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBA
IC0yMjUsNiArMTU2LDExIEBAIHZvaWQgTmV0d29ya0xvYWRNZXRyaWNzOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHJlcXVlc3RTdGFydDsKICAgICBlbmNv
ZGVyIDw8IHJlc3BvbnNlU3RhcnQ7CiAgICAgZW5jb2RlciA8PCByZXNwb25zZUVuZDsKKworICAg
IGVuY29kZXIgPDwgcHJvdG9jb2w7CisKKyAgICBlbmNvZGVyIDw8IHJlZGlyZWN0Q291bnQ7CisK
ICAgICBlbmNvZGVyIDw8IGNvbXBsZXRlOwogICAgIGVuY29kZXIgPDwgY2VsbHVsYXI7CiAgICAg
ZW5jb2RlciA8PCBleHBlbnNpdmU7CkBAIC0yMzMsMjggKzE2OSwyNiBAQCB2b2lkIE5ldHdvcmtM
b2FkTWV0cmljczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8
PCBpc1JldXNlZENvbm5lY3Rpb247CiAgICAgZW5jb2RlciA8PCBmYWlsc1RBT0NoZWNrOwogICAg
IGVuY29kZXIgPDwgaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdDsKLSAgICBlbmNvZGVyIDw8IHByb3Rv
Y29sOwotICAgIGVuY29kZXIgPDwgcmVkaXJlY3RDb3VudDsKLSAgICBlbmNvZGVyIDw8IHJlbW90
ZUFkZHJlc3M7Ci0gICAgZW5jb2RlciA8PCBjb25uZWN0aW9uSWRlbnRpZmllcjsKLSAgICBlbmNv
ZGVyIDw8IHRsc1Byb3RvY29sOwotICAgIGVuY29kZXIgPDwgdGxzQ2lwaGVyOwotICAgIGVuY29k
ZXIgPDwgcHJpb3JpdHk7CisKICAgICBlbmNvZGVyIDw8IHByaXZhY3lTdGFuY2U7Ci0gICAgZW5j
b2RlciA8PCByZXF1ZXN0SGVhZGVyczsKLSAgICBlbmNvZGVyIDw8IHJlcXVlc3RIZWFkZXJCeXRl
c1NlbnQ7Ci0gICAgZW5jb2RlciA8PCByZXF1ZXN0Qm9keUJ5dGVzU2VudDsKLSAgICBlbmNvZGVy
IDw8IHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZDsKKwogICAgIGVuY29kZXIgPDwgcmVzcG9u
c2VCb2R5Qnl0ZXNSZWNlaXZlZDsKICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlQm9keURlY29kZWRT
aXplOworICAgIAorICAgIGlmIChhZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5z
cGVjdG9yKSB7CisgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKKyAgICAgICAgZW5jb2RlciA8PCAq
YWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcjsKKyAgICB9IGVsc2UK
KyAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
LWJvb2wgTmV0d29ya0xvYWRNZXRyaWNzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQorc3RkOjpvcHRpb25hbDxOZXR3b3JrTG9hZE1ldHJpY3M+
IE5ldHdvcmtMb2FkTWV0cmljczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgc3Rh
dGljX2Fzc2VydChEZWNvZGVyOjppc0lQQ0RlY29kZXIsICJOZXR3b3JrTG9hZE1ldHJpY3Mgc2hv
dWxkIG5vdCBiZSBzdG9yZWQgYnkgdGhlIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIiKTsKIAot
ICAgIHJldHVybiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnJlZGlyZWN0U3RhcnQpCisgICAgTmV0
d29ya0xvYWRNZXRyaWNzIG1ldHJpY3M7CisgICAgaWYgKCEoZGVjb2Rlci5kZWNvZGUobWV0cmlj
cy5yZWRpcmVjdFN0YXJ0KQogICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmZldGNo
U3RhcnQpCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuZG9tYWluTG9va3VwU3Rh
cnQpCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuZG9tYWluTG9va3VwRW5kKQpA
QCAtMjY0LDI4ICsxOTgsMTUxIEBAIGJvb2wgTmV0d29ya0xvYWRNZXRyaWNzOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogICAgICAgICAmJiBk
ZWNvZGVyLmRlY29kZShtZXRyaWNzLnJlcXVlc3RTdGFydCkKICAgICAgICAgJiYgZGVjb2Rlci5k
ZWNvZGUobWV0cmljcy5yZXNwb25zZVN0YXJ0KQogICAgICAgICAmJiBkZWNvZGVyLmRlY29kZSht
ZXRyaWNzLnJlc3BvbnNlRW5kKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmNv
bXBsZXRlKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmNlbGx1bGFyKQotICAg
ICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmV4cGVuc2l2ZSkKLSAgICAgICAgJiYgZGVj
b2Rlci5kZWNvZGUobWV0cmljcy5jb25zdHJhaW5lZCkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNv
ZGUobWV0cmljcy5tdWx0aXBhdGgpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3Mu
aXNSZXVzZWRDb25uZWN0aW9uKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmZh
aWxzVEFPQ2hlY2spCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuaGFzQ3Jvc3NP
cmlnaW5SZWRpcmVjdCkKICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5wcm90b2Nv
bCkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZWRpcmVjdENvdW50KQotICAg
ICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnJlbW90ZUFkZHJlc3MpCi0gICAgICAgICYm
IGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuY29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgICAgICYm
IGRlY29kZXIuZGVjb2RlKG1ldHJpY3MudGxzUHJvdG9jb2wpCi0gICAgICAgICYmIGRlY29kZXIu
ZGVjb2RlKG1ldHJpY3MudGxzQ2lwaGVyKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRy
aWNzLnByaW9yaXR5KQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnByaXZhY3lT
dGFuY2UpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVxdWVzdEhlYWRlcnMp
Ci0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVxdWVzdEhlYWRlckJ5dGVzU2Vu
dCkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZXF1ZXN0Qm9keUJ5dGVzU2Vu
dCkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZXNwb25zZUhlYWRlckJ5dGVz
UmVjZWl2ZWQpCisgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVkaXJlY3RDb3Vu
dCkpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gY29tcGxldGU7CisgICAgZGVjb2RlciA+PiBjb21wbGV0ZTsKKyAgICBpZiAoIWNv
bXBsZXRlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIG1ldHJpY3MuY29tcGxl
dGUgPSBXVEZNb3ZlKCpjb21wbGV0ZSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNlbGx1
bGFyOworICAgIGRlY29kZXIgPj4gY2VsbHVsYXI7CisgICAgaWYgKCFjZWxsdWxhcikKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBtZXRyaWNzLmNlbGx1bGFyID0gV1RGTW92ZSgq
Y2VsbHVsYXIpOworCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBleHBlbnNpdmU7CisgICAgZGVj
b2RlciA+PiBleHBlbnNpdmU7CisgICAgaWYgKCFleHBlbnNpdmUpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgbWV0cmljcy5leHBlbnNpdmUgPSBXVEZNb3ZlKCpleHBlbnNpdmUp
OworCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBjb25zdHJhaW5lZDsKKyAgICBkZWNvZGVyID4+
IGNvbnN0cmFpbmVkOworICAgIGlmICghY29uc3RyYWluZWQpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgbWV0cmljcy5jb25zdHJhaW5lZCA9IFdURk1vdmUoKmNvbnN0cmFpbmVk
KTsKKworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbXVsdGlwYXRoOworICAgIGRlY29kZXIgPj4g
bXVsdGlwYXRoOworICAgIGlmICghbXVsdGlwYXRoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIG1ldHJpY3MubXVsdGlwYXRoID0gV1RGTW92ZSgqbXVsdGlwYXRoKTsKKworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNSZXVzZWRDb25uZWN0aW9uOworICAgIGRlY29kZXIgPj4g
aXNSZXVzZWRDb25uZWN0aW9uOworICAgIGlmICghaXNSZXVzZWRDb25uZWN0aW9uKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIG1ldHJpY3MuaXNSZXVzZWRDb25uZWN0aW9uID0g
V1RGTW92ZSgqaXNSZXVzZWRDb25uZWN0aW9uKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
ZmFpbHNUQU9DaGVjazsKKyAgICBkZWNvZGVyID4+IGZhaWxzVEFPQ2hlY2s7CisgICAgaWYgKCFm
YWlsc1RBT0NoZWNrKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIG1ldHJpY3Mu
ZmFpbHNUQU9DaGVjayA9IFdURk1vdmUoKmZhaWxzVEFPQ2hlY2spOworCisgICAgc3RkOjpvcHRp
b25hbDxib29sPiBoYXNDcm9zc09yaWdpblJlZGlyZWN0OworICAgIGRlY29kZXIgPj4gaGFzQ3Jv
c3NPcmlnaW5SZWRpcmVjdDsKKyAgICBpZiAoIWhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgbWV0cmljcy5oYXNDcm9zc09yaWdpblJlZGly
ZWN0ID0gV1RGTW92ZSgqaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCk7CisKKyAgICBpZiAoIShkZWNv
ZGVyLmRlY29kZShtZXRyaWNzLnByaXZhY3lTdGFuY2UpCiAgICAgICAgICYmIGRlY29kZXIuZGVj
b2RlKG1ldHJpY3MucmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZCkKLSAgICAgICAgJiYgZGVjb2Rl
ci5kZWNvZGUobWV0cmljcy5yZXNwb25zZUJvZHlEZWNvZGVkU2l6ZSk7CisgICAgICAgICYmIGRl
Y29kZXIuZGVjb2RlKG1ldHJpY3MucmVzcG9uc2VCb2R5RGVjb2RlZFNpemUpKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzQWRkaXRp
b25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcjsKKyAgICBkZWNvZGVyID4+IGhh
c0FkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I7CisgICAgaWYgKCFo
YXNBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICgqaGFzQWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0
cmljc0ZvcldlYkluc3BlY3RvcikgeworICAgICAgICBtZXRyaWNzLmFkZGl0aW9uYWxOZXR3b3Jr
TG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IgPSBBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNz
Rm9yV2ViSW5zcGVjdG9yOjpkZWNvZGUoZGVjb2Rlcik7CisgICAgICAgIGlmICghbWV0cmljcy5h
ZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisgICAgcmV0dXJuIG1ldHJpY3M7Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NG
b3JXZWJJbnNwZWN0b3I6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVu
Y29kZXIgPDwgcHJpb3JpdHk7CisgICAgZW5jb2RlciA8PCByZW1vdGVBZGRyZXNzOworICAgIGVu
Y29kZXIgPDwgY29ubmVjdGlvbklkZW50aWZpZXI7CisKKyAgICBlbmNvZGVyIDw8IHRsc1Byb3Rv
Y29sOworICAgIGVuY29kZXIgPDwgdGxzQ2lwaGVyOworCisgICAgZW5jb2RlciA8PCByZXF1ZXN0
SGVhZGVyczsKKworICAgIGVuY29kZXIgPDwgcmVxdWVzdEhlYWRlckJ5dGVzU2VudDsKKyAgICBl
bmNvZGVyIDw8IHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZDsKKyAgICBlbmNvZGVyIDw8IHJl
cXVlc3RCb2R5Qnl0ZXNTZW50OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorUmVmUHRy
PEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I+IEFkZGl0aW9uYWxO
ZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya0xvYWRQcmlvcml0eT4gcHJpb3JpdHk7Cisg
ICAgZGVjb2RlciA+PiBwcmlvcml0eTsKKyAgICBpZiAoIXByaW9yaXR5KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcmVtb3RlQWRkcmVz
czsKKyAgICBkZWNvZGVyID4+IHJlbW90ZUFkZHJlc3M7CisgICAgaWYgKCFyZW1vdGVBZGRyZXNz
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBj
b25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IGNvbm5lY3Rpb25JZGVudGlmaWVy
OworICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRsc1Byb3RvY29sOworICAgIGRlY29kZXIg
Pj4gdGxzUHJvdG9jb2w7CisgICAgaWYgKCF0bHNQcm90b2NvbCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGxzQ2lwaGVyOworICAgIGRlY29k
ZXIgPj4gdGxzQ2lwaGVyOworICAgIGlmICghdGxzQ2lwaGVyKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHN0ZDo6b3B0aW9uYWw8SFRUUEhlYWRlck1hcD4gcmVxdWVzdEhlYWRlcnM7
CisgICAgZGVjb2RlciA+PiByZXF1ZXN0SGVhZGVyczsKKyAgICBpZiAoIXJlcXVlc3RIZWFkZXJz
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHJlcXVlc3RIZWFkZXJCeXRlc1NlbnQ7CisgICAgZGVjb2RlciA+PiByZXF1ZXN0SGVhZGVyQnl0
ZXNTZW50OworICAgIGlmICghcmVxdWVzdEhlYWRlckJ5dGVzU2VudCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiByZXNwb25zZUhlYWRlckJ5
dGVzUmVjZWl2ZWQ7CisgICAgZGVjb2RlciA+PiByZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQ7
CisgICAgaWYgKCFyZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcmVxdWVzdEJvZHlCeXRlc1Nl
bnQ7CisgICAgZGVjb2RlciA+PiByZXF1ZXN0Qm9keUJ5dGVzU2VudDsKKyAgICBpZiAoIXJlcXVl
c3RCb2R5Qnl0ZXNTZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gZGVj
b2RlZCA9IGFkb3B0UmVmKCpuZXcgQWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYklu
c3BlY3Rvcik7CisgICAgZGVjb2RlZC0+cHJpb3JpdHkgPSBXVEZNb3ZlKCpwcmlvcml0eSk7Cisg
ICAgZGVjb2RlZC0+cmVtb3RlQWRkcmVzcyA9IFdURk1vdmUoKnJlbW90ZUFkZHJlc3MpOworICAg
IGRlY29kZWQtPmNvbm5lY3Rpb25JZGVudGlmaWVyID0gV1RGTW92ZSgqY29ubmVjdGlvbklkZW50
aWZpZXIpOworICAgIGRlY29kZWQtPnRsc1Byb3RvY29sID0gV1RGTW92ZSgqdGxzUHJvdG9jb2wp
OworICAgIGRlY29kZWQtPnRsc0NpcGhlciA9IFdURk1vdmUoKnRsc0NpcGhlcik7CisgICAgZGVj
b2RlZC0+cmVxdWVzdEhlYWRlcnMgPSBXVEZNb3ZlKCpyZXF1ZXN0SGVhZGVycyk7CisgICAgZGVj
b2RlZC0+cmVxdWVzdEhlYWRlckJ5dGVzU2VudCA9IFdURk1vdmUoKnJlcXVlc3RIZWFkZXJCeXRl
c1NlbnQpOworICAgIGRlY29kZWQtPnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCA9IFdURk1v
dmUoKnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCk7CisgICAgZGVjb2RlZC0+cmVxdWVzdEJv
ZHlCeXRlc1NlbnQgPSBXVEZNb3ZlKCpyZXF1ZXN0Qm9keUJ5dGVzU2VudCk7CisgICAgcmV0dXJu
IGRlY29kZWQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKQEAgLTMwMyw0ICszNjAsMTQg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpQcml2YWN5U3RhbmNlPiB7
CiAgICAgPjsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TmV0
d29ya0xvYWRQcmlvcml0eT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAg
ICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHksCisgICAgICAgIFdlYkNvcmU6Ok5ldHdv
cmtMb2FkUHJpb3JpdHk6OkxvdywKKyAgICAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0
eTo6TWVkaXVtLAorICAgICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5OjpIaWdoLAor
ICAgICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5OjpVbmtub3duCisgICAgPjsKK307
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5jcHAKaW5kZXggNjEzNjAwNTQyMDkwYTJiOTc3MzFhZmZmM2JmZmY5
OTU0NTY0OTRkMy4uOTUwZTgyNjdlMmE1ZTg2YmE3OWQ2NzllN2Q3MzYxMTAxYzBmYmFlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5jcHAKQEAgLTgwMiw3ICs4MDIsNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VC
YXNlOjpsYXp5SW5pdChJbml0TGV2ZWwgaW5pdExldmVsKSBjb25zdAogICAgIGNvbnN0X2Nhc3Q8
UmVzb3VyY2VSZXNwb25zZSo+KHN0YXRpY19jYXN0PGNvbnN0IFJlc291cmNlUmVzcG9uc2UqPih0
aGlzKSktPnBsYXRmb3JtTGF6eUluaXQoaW5pdExldmVsKTsKIH0KIAotYm9vbCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6Y29tcGFyZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiBiKQorYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXF1YWxGb3JXZWJL
aXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIGIpCiB7CiAgICAgaWYgKGEuaXNOdWxsKCkgIT0gYi5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOyAgCkBAIC04MjIsMTYgKzgyMiw2IEBAIGJvb2wg
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwg
Y29uc3QgUmVzb3VyY2VSZXNwCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoYS5odHRw
SGVhZGVyRmllbGRzKCkgIT0gYi5odHRwSGVhZGVyRmllbGRzKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoYS5tX25ldHdvcmtMb2FkTWV0cmljcy5nZXQoKSAhPSBiLm1fbmV0d29y
a0xvYWRNZXRyaWNzLmdldCgpKSB7Ci0gICAgICAgIGlmICghYS5tX25ldHdvcmtMb2FkTWV0cmlj
cykgewotICAgICAgICAgICAgaWYgKE5ldHdvcmtMb2FkTWV0cmljcygpICE9ICpiLm1fbmV0d29y
a0xvYWRNZXRyaWNzLmdldCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfSBlbHNlIGlmICghYi5tX25ldHdvcmtMb2FkTWV0cmljcykgewotICAgICAgICAgICAgaWYg
KE5ldHdvcmtMb2FkTWV0cmljcygpICE9ICphLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlmICgqYS5tX25l
dHdvcmtMb2FkTWV0cmljcy5nZXQoKSAhPSAqYi5tX25ldHdvcmtMb2FkTWV0cmljcy5nZXQoKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAgICAgcmV0dXJuIFJlc291cmNlUmVz
cG9uc2U6OnBsYXRmb3JtQ29tcGFyZShhLCBiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmluZGV4IDE3NmI3
MzdkYTUzYmVjMTA2M2EyOTgxNDVmN2MxMzliMWU2MzE0YWQuLjI2MmU1MzE4MGQ2ZGQ3YzRkMTMz
ZGRjMWRhZjU2NTJiZDZmMzFjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKQEAgLTIwOSw3ICsyMDksNyBAQCBw
dWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVzb3VyY2VSZXNwb25zZSBzeW50
aGV0aWNSZWRpcmVjdFJlc3BvbnNlKGNvbnN0IFVSTCYgZnJvbVVSTCwgY29uc3QgVVJMJiB0b1VS
TCk7CiAKLSAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIGJvb2wgZXF1YWxGb3JXZWJLaXRM
ZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgUmVzb3VyY2VSZXNwb25z
ZUJhc2UmKTsKQEAgLTI4NSw5ICsyODUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgc2hvcnQgbV9odHRw
U3RhdHVzQ29kZSB7IDAgfTsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gUmVz
b3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUoYSwgYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikg
eyByZXR1cm4gIShhID09IGIpOyB9Ci0KIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFJl
c291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDdjNDJlODgzNWY1MDE3MjIzYzJhNTQ0ODk1MDA0MTdmZTBj
OWU0ZjQuLjQ5OWM2ODMyOGJhNzc4OTBlNDliNGM5ZGRmYTU3MzI4ODAwZDc4NGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5l
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGTmV0LmNwcApAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJl
Y2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdl
CiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIHJlY2VpdmVkQ3JlZGVudGlhbCgpIik7CiAgICAg
QVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwogICAgIEFTU0VSVChjaGFsbGVuZ2UuY2ZVUkxB
dXRoQ2hhbGxlbmdlUmVmKCkpOwotICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2Vi
Q2hhbGxlbmdlKQorICAgIGlmICghQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjplcXVhbEZv
cldlYktpdExlZ2FjeUNoYWxsZW5nZUNvbXBhcmlzb24oY2hhbGxlbmdlLCBkLT5tX2N1cnJlbnRX
ZWJDaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCBl
bXB0eSBjcmVkZW50aWFscy4gQ3VycmVudGx5LCBhbiBlbXB0eSBjcmVkZW50aWFsIGNhbm5vdCBi
ZSBzdG9yZWQgaW4gV2ViQ29yZSBjcmVkZW50aWFsIHN0b3JhZ2UsIGFzIHRoYXQncyBlbXB0eSB2
YWx1ZSBmb3IgaXRzIG1hcC4KQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxl
OjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVu
dGljYQogICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVl
V2l0aG91dENyZWRlbnRpYWwoKSIpOwogICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsK
ICAgICBBU1NFUlQoY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSAgICBpZiAo
Y2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKKyAgICBpZiAoIUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJp
c29uKGNoYWxsZW5nZSwgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGQtPm1fY29ubmVjdGlvbikKQEAgLTQ2Miw3ICs0NjIsNyBAQCB2b2lkIFJl
c291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwo
Y29uc3QgQXV0aGVudGljYQogdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRp
b24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKICAgICBMT0co
TmV0d29yaywgIkNGTmV0IC0gcmVjZWl2ZWRDYW5jZWxsYXRpb24oKSIpOwotICAgIGlmIChjaGFs
bGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKQorICAgIGlmICghQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VCYXNlOjplcXVhbEZvcldlYktpdExlZ2FjeUNoYWxsZW5nZUNvbXBhcmlzb24o
Y2hhbGxlbmdlLCBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoY2xpZW50KCkpCkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRp
Y2F0aW8KICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3Jt
RGVmYXVsdEhhbmRsaW5nKCkiKTsKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5pc051bGwoKSk7CiAg
ICAgQVNTRVJUKGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0gICAgaWYgKGNo
YWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCisgICAgaWYgKCFBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFsRm9yV2ViS2l0TGVnYWN5Q2hhbGxlbmdlQ29tcGFyaXNv
bihjaGFsbGVuZ2UsIGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChkLT5tX2Nvbm5lY3Rpb24pCkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGMKICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gcmVjZWl2ZWRDaGFsbGVu
Z2VSZWplY3Rpb24oKSIpOwogICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKICAgICBB
U1NFUlQoY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSAgICBpZiAoY2hhbGxl
bmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKKyAgICBpZiAoIUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNo
YWxsZW5nZSwgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKGQtPm1fY29ubmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCmluZGV4IDYwODQwNmI4M2U1MzkyZjIzYWU5
OWNjOWNmMjA2MzJkMjUzNmNkNmEuLjE2ZTg0NjAxYjI0YzU4MmM5ZmRhOWEyOWQ1OTM0ZjE4OGZi
OGYyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDb250ZXh0LmNwcApAQCAtODYyLDE2ICs4NjIsMjAgQEAgdm9pZCBDdXJsSGFuZGxlOjph
ZGRFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2Fk
TWV0cmkKICAgICBpZiAoZXJyb3JDb2RlICE9IENVUkxFX09LKQogICAgICAgICByZXR1cm47CiAK
LSAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRlckJ5dGVzU2VudCA9IHJlcXVlc3RI
ZWFkZXJTaXplOwotICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0Qm9keUJ5dGVzU2VudCA9
IHJlcXVlc3RCb2R5U2l6ZTsKLSAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VIZWFkZXJC
eXRlc1JlY2VpdmVkID0gcmVzcG9uc2VIZWFkZXJTaXplOwogICAgIG5ldHdvcmtMb2FkTWV0cmlj
cy5yZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkID0gcmVzcG9uc2VCb2R5U2l6ZTsKIAorICAgIGF1
dG8gYWRkaXRpb25hbE1ldHJpY3MgPSBhZG9wdFJlZigqbmV3IEFkZGl0aW9uYWxOZXR3b3JrTG9h
ZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IpOworICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0
SGVhZGVyQnl0ZXNTZW50ID0gcmVxdWVzdEhlYWRlclNpemU7CisgICAgYWRkaXRpb25hbE1ldHJp
Y3MtPnJlcXVlc3RCb2R5Qnl0ZXNTZW50ID0gcmVxdWVzdEJvZHlTaXplOworICAgIGFkZGl0aW9u
YWxNZXRyaWNzLT5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQgPSByZXNwb25zZUhlYWRlclNp
emU7CisKICAgICBpZiAoaXApIHsKLSAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlbW90ZUFk
ZHJlc3MgPSBTdHJpbmcoaXApOworICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVtb3RlQWRk
cmVzcyA9IFN0cmluZyhpcCk7CiAgICAgICAgIGlmIChwb3J0KQotICAgICAgICAgICAgbmV0d29y
a0xvYWRNZXRyaWNzLnJlbW90ZUFkZHJlc3MuYXBwZW5kKCI6IiArIFN0cmluZzo6bnVtYmVyKHBv
cnQpKTsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZW1vdGVBZGRyZXNzLmFwcGVu
ZCgiOiIgKyBTdHJpbmc6Om51bWJlcihwb3J0KSk7CiAgICAgfQorCisgICAgbmV0d29ya0xvYWRN
ZXRyaWNzLmFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IgPSBXVEZN
b3ZlKGFkZGl0aW9uYWxNZXRyaWNzKTsKIH0KIAogc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUlu
Zm8+IEN1cmxIYW5kbGU6OmNlcnRpZmljYXRlSW5mbygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCAyOTg3
MzU1ODViYmMyNWQxMjc3Zjk2NWI1OTllNDNjYTY2ZTZmY2JlLi4xNmE4YzQyZDE0MTRkNDVlYTRh
Nzc3YjU1MTA3ZDIwZTI5OWFiNzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTc1Nyw3ICs3NTcsOCBAQCBOZXR3
b3JrTG9hZE1ldHJpY3MgQ3VybFJlcXVlc3Q6Om5ldHdvcmtMb2FkTWV0cmljcygpCiAKICAgICBp
ZiAobV9jYXB0dXJlRXh0cmFNZXRyaWNzKSB7CiAgICAgICAgIG1fY3VybEhhbmRsZS0+YWRkRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3MoKm5ldHdvcmtMb2FkTWV0cmljcyk7Ci0gICAgICAgIG5ldHdv
cmtMb2FkTWV0cmljcy0+cmVxdWVzdEhlYWRlcnMgPSBtX3JlcXVlc3RIZWFkZXJzOworICAgICAg
ICBpZiAoYXV0byogYWRkaXRpb25hbE1ldHJpY3MgPSBuZXR3b3JrTG9hZE1ldHJpY3MtPmFkZGl0
aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IuZ2V0KCkpCisgICAgICAgICAg
ICBhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEhlYWRlcnMgPSBtX3JlcXVlc3RIZWFkZXJzOwog
ICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MtPnJlc3BvbnNlQm9keURlY29kZWRTaXplID0gbV90
b3RhbFJlY2VpdmVkU2l6ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggZjhi
NzA4YWRiNmRmZjVlMDIxNGJkZmIxMjgzNmViZjhiNmVlY2YyMS4uZGU5NDc0Mjg2M2JmOTc5MzQw
MzlhZjM2MTJiMDQ2YTIxM2ZkOWRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKQEAgLTI2NCw3
ICsyNjQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKLSAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxsZW5n
ZSkKKyAgICBpZiAoIUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6ZXF1YWxGb3JXZWJLaXRM
ZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNoYWxsZW5nZSwgZC0+bV9jdXJyZW50V2ViQ2hhbGxl
bmdlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGNyZWRlbnRpYWwuaXNFbXB0eSgpKSB7
CkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0
VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2EKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKGNoYWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRX
ZWJDaGFsbGVuZ2UpCisgICAgaWYgKCFBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFs
Rm9yV2ViS2l0TGVnYWN5Q2hhbGxlbmdlQ29tcGFyaXNvbihjaGFsbGVuZ2UsIGQtPm1fY3VycmVu
dFdlYkNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNsZWFyQXV0aGVudGljYXRp
b24oKTsKQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENh
bmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbgogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3Vy
cmVudFdlYkNoYWxsZW5nZSkKKyAgICBpZiAoIUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6
ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNoYWxsZW5nZSwgZC0+bV9j
dXJyZW50V2ViQ2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGNsaWVudCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNv
dXJjZUhhbmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlSGFuZGxlTWFjLm1tCmluZGV4IGJjNDRjYmI0Y2ExNDZmMTQwNWUxYWRiZmJhNzM0ODkw
MmY4YTgwZDguLjkwOWQ5MmZkZDA2YWFiMmFjNGU5MzBiYzAzN2JlNjAwYzc1OTcxYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
SGFuZGxlTWFjLm1tCkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVj
ZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UK
ICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCByZWNlaXZlZENyZWRlbnRpYWwiLCB0aGlzKTsK
IAogICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKLSAgICBpZiAoY2hhbGxlbmdlICE9
IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKKyAgICBpZiAoIUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNoYWxsZW5n
ZSwgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
RklYTUU6IFN1cHBvcnQgZW1wdHkgY3JlZGVudGlhbHMuIEN1cnJlbnRseSwgYW4gZW1wdHkgY3Jl
ZGVudGlhbCBjYW5ub3QgYmUgc3RvcmVkIGluIFdlYkNvcmUgY3JlZGVudGlhbCBzdG9yYWdlLCBh
cyB0aGF0J3MgZW1wdHkgdmFsdWUgZm9yIGl0cyBtYXAuCkBAIC02MDcsNyArNjA3LDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50
aWFsKGNvbnN0IEF1dGhlbnRpY2EKICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCByZWNlaXZl
ZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwiLCB0aGlzKTsKIAogICAgIEFTU0VS
VCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKLSAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVu
dFdlYkNoYWxsZW5nZSkKKyAgICBpZiAoIUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6ZXF1
YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNoYWxsZW5nZSwgZC0+bV9jdXJy
ZW50V2ViQ2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgW1tkLT5tX2N1cnJlbnRN
YWNDaGFsbGVuZ2Ugc2VuZGVyXSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6ZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlXTsKQEAgLTYxOSw3ICs2MTks
NyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbgogewogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxl
ICVwIHJlY2VpdmVkQ2FuY2VsbGF0aW9uIiwgdGhpcyk7CiAKLSAgICBpZiAoY2hhbGxlbmdlICE9
IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKKyAgICBpZiAoIUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNoYWxsZW5n
ZSwgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KGNsaWVudCgpKQpAQCAtNjMxLDcgKzYzMSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2Vp
dmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25zdCBBdXRoZW50aWNhdGlvCiAg
ICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVs
dEhhbmRsaW5nIiwgdGhpcyk7CiAKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5pc051bGwoKSk7Ci0g
ICAgaWYgKGNoYWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCisgICAgaWYgKCFB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFsRm9yV2ViS2l0TGVnYWN5Q2hhbGxlbmdl
Q29tcGFyaXNvbihjaGFsbGVuZ2UsIGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFtbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHNlbmRlcl0gcGVyZm9y
bURlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmQtPm1fY3VycmVudE1h
Y0NoYWxsZW5nZV07CkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVj
ZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGMK
ICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCByZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbiIs
IHRoaXMpOwogCiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwotICAgIGlmIChjaGFs
bGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKQorICAgIGlmICghQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VCYXNlOjplcXVhbEZvcldlYktpdExlZ2FjeUNoYWxsZW5nZUNvbXBhcmlzb24o
Y2hhbGxlbmdlLCBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBbW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBzZW5kZXJdIHJlamVjdFByb3RlY3Rpb25T
cGFjZUFuZENvbnRpbnVlV2l0aENoYWxsZW5nZTpkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2VdOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDIyOGQzOWQ5ZTQ2ZmU2MzA2NDNjMDJhMWZkYTJkYWZmNWRhYzI0ZGUu
LmJlZGQyYjZmODQ1NTQyZGNmMDYxZTA1NDg4NTM3ZDFhMGViOGRkMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTEyMzgsOSArMTIzOCwxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZFJl
c3VsdEZvckNhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZQogCiAgICAgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljczsKICAgICBuZXR3b3Jr
TG9hZE1ldHJpY3MubWFya0NvbXBsZXRlKCk7Ci0gICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlcXVl
c3RIZWFkZXJCeXRlc1NlbnQgPSAwOwotICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0Qm9k
eUJ5dGVzU2VudCA9IDA7Ci0gICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlSGVhZGVyQnl0
ZXNSZWNlaXZlZCA9IDA7CisgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcygpKSB7CisgICAgICAgIGF1dG8gYWRkaXRpb25hbE1ldHJpY3MgPSBhZG9wdFJlZigqbmV3
IFdlYkNvcmU6OkFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IpOwor
ICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEhlYWRlckJ5dGVzU2VudCA9IDA7Cisg
ICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0Qm9keUJ5dGVzU2VudCA9IDA7CisgICAg
ICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQgPSAwOwor
ICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MuYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0Zv
cldlYkluc3BlY3RvciA9IFdURk1vdmUoYWRkaXRpb25hbE1ldHJpY3MpOworICAgIH0KICAgICBu
ZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZCA9IDA7CiAgICAgbmV0
d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlQm9keURlY29kZWRTaXplID0gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCmluZGV4IDEzOGM0ZTkyOTFkNTMzZTg3ZWJmNDJiY2Q1YjM2ZWYwNTg2ZDIyOTguLjZl
MWM2NWJkMzAyMzQ5YWRiMTg0OTE2ZmJhOGExMmQ4NmRmOGUwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0KQEAgLTg3OCwyOCArODc4LDI5IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogI2VuZGlmCiAKICAgICAgICAgaWYgKG5ldHdvcmtEYXRhVGFzay0+c2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkpIHsKLSAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmlj
cy5wcmlvcml0eSA9IHRvTmV0d29ya0xvYWRQcmlvcml0eSh0YXNrLnByaW9yaXR5KTsKKyAgICAg
ICAgICAgIGF1dG8gYWRkaXRpb25hbE1ldHJpY3MgPSBhZG9wdFJlZigqbmV3IFdlYkNvcmU6OkFk
ZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IpOworICAgICAgICAgICAg
YWRkaXRpb25hbE1ldHJpY3MtPnByaW9yaXR5ID0gdG9OZXR3b3JrTG9hZFByaW9yaXR5KHRhc2su
cHJpb3JpdHkpOwogCiAjaWYgSEFWRShDRk5FVFdPUktfTUVUUklDU19BUElTX1Y0KQogICAgICAg
ICAgICAgaWYgKGF1dG8gcG9ydCA9IFttLnJlbW90ZVBvcnQgdW5zaWduZWRJbnRWYWx1ZV0pCi0g
ICAgICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlbW90ZUFkZHJlc3MgPSBtYWtlU3Ry
aW5nKFN0cmluZyhtLnJlbW90ZUFkZHJlc3MpLCAnOicsIHBvcnQpOworICAgICAgICAgICAgICAg
IGFkZGl0aW9uYWxNZXRyaWNzLT5yZW1vdGVBZGRyZXNzID0gbWFrZVN0cmluZyhTdHJpbmcobS5y
ZW1vdGVBZGRyZXNzKSwgJzonLCBwb3J0KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVtb3RlQWRkcmVzcyA9IG0ucmVtb3RlQWRkcmVzczsK
KyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVtb3RlQWRkcmVzcyA9IG0ucmVt
b3RlQWRkcmVzczsKICNlbHNlCiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgotICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlbW90ZUFkZHJlc3Mg
PSBTdHJpbmcobS5fcmVtb3RlQWRkcmVzc0FuZFBvcnQpOworICAgICAgICAgICAgYWRkaXRpb25h
bE1ldHJpY3MtPnJlbW90ZUFkZHJlc3MgPSBTdHJpbmcobS5fcmVtb3RlQWRkcmVzc0FuZFBvcnQp
OwogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYK
LSAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0aW9uSWRlbnRpZmllciA9IFN0
cmluZyhbbS5fY29ubmVjdGlvbklkZW50aWZpZXIgVVVJRFN0cmluZ10pOworICAgICAgICAgICAg
YWRkaXRpb25hbE1ldHJpY3MtPmNvbm5lY3Rpb25JZGVudGlmaWVyID0gU3RyaW5nKFttLl9jb25u
ZWN0aW9uSWRlbnRpZmllciBVVUlEU3RyaW5nXSk7CiAKICNpZiBIQVZFKENGTkVUV09SS19ORUdP
VElBVEVEX1NTTF9QUk9UT0NPTF9DSVBIRVIpCiAjaWYgSEFWRShDRk5FVFdPUktfTUVUUklDU19B
UElTX1Y0KQotICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnRsc1Byb3RvY29sID0gc3Ry
aW5nRm9yVExTUHJvdG9jb2xWZXJzaW9uKCh0bHNfcHJvdG9jb2xfdmVyc2lvbl90KVttLm5lZ290
aWF0ZWRUTFNQcm90b2NvbFZlcnNpb24gdW5zaWduZWRTaG9ydFZhbHVlXSk7Ci0gICAgICAgICAg
ICBuZXR3b3JrTG9hZE1ldHJpY3MudGxzQ2lwaGVyID0gc3RyaW5nRm9yVExTQ2lwaGVyU3VpdGUo
KHRsc19jaXBoZXJzdWl0ZV90KVttLm5lZ290aWF0ZWRUTFNDaXBoZXJTdWl0ZSB1bnNpZ25lZFNo
b3J0VmFsdWVdKTsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT50bHNQcm90b2NvbCA9
IHN0cmluZ0ZvclRMU1Byb3RvY29sVmVyc2lvbigodGxzX3Byb3RvY29sX3ZlcnNpb25fdClbbS5u
ZWdvdGlhdGVkVExTUHJvdG9jb2xWZXJzaW9uIHVuc2lnbmVkU2hvcnRWYWx1ZV0pOworICAgICAg
ICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnRsc0NpcGhlciA9IHN0cmluZ0ZvclRMU0NpcGhlclN1
aXRlKCh0bHNfY2lwaGVyc3VpdGVfdClbbS5uZWdvdGlhdGVkVExTQ2lwaGVyU3VpdGUgdW5zaWdu
ZWRTaG9ydFZhbHVlXSk7CiAjZWxzZQogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy50bHNQcm90b2Nv
bCA9IHN0cmluZ0ZvclNTTFByb3RvY29sKG0uX25lZ290aWF0ZWRUTFNQcm90b2NvbCk7Ci0gICAg
ICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MudGxzQ2lwaGVyID0gc3RyaW5nRm9yU1NMQ2lwaGVy
KG0uX25lZ290aWF0ZWRUTFNDaXBoZXIpOworICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3Mt
PnRsc1Byb3RvY29sID0gc3RyaW5nRm9yU1NMUHJvdG9jb2wobS5fbmVnb3RpYXRlZFRMU1Byb3Rv
Y29sKTsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT50bHNDaXBoZXIgPSBzdHJpbmdG
b3JTU0xDaXBoZXIobS5fbmVnb3RpYXRlZFRMU0NpcGhlcik7CiAgICAgICAgICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgogI2VuZGlmCkBAIC05MDgsNyArOTA5
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBbbS5y
ZXF1ZXN0LmFsbEhUVFBIZWFkZXJGaWVsZHMgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Js
b2NrOl4oTlNTdHJpbmcgKm5hbWUsIE5TU3RyaW5nICp2YWx1ZSwgQk9PTCAqKSB7CiAgICAgICAg
ICAgICAgICAgcmVxdWVzdEhlYWRlcnMuc2V0KFN0cmluZyhuYW1lKSwgU3RyaW5nKHZhbHVlKSk7
CiAgICAgICAgICAgICB9XTsKLSAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0
SGVhZGVycyA9IFdURk1vdmUocmVxdWVzdEhlYWRlcnMpOworICAgICAgICAgICAgYWRkaXRpb25h
bE1ldHJpY3MtPnJlcXVlc3RIZWFkZXJzID0gV1RGTW92ZShyZXF1ZXN0SGVhZGVycyk7CiAKICAg
ICAgICAgICAgIHVpbnQ2NF90IHJlcXVlc3RIZWFkZXJCeXRlc1NlbnQgPSAwOwogICAgICAgICAg
ICAgdWludDY0X3QgcmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkID0gMDsKQEAgLTkyNSw5ICs5
MjYsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RIZWFkZXJC
eXRlc1NlbnQgPSByZXF1ZXN0SGVhZGVyQnl0ZXNTZW50OwotICAgICAgICAgICAgbmV0d29ya0xv
YWRNZXRyaWNzLnJlcXVlc3RCb2R5Qnl0ZXNTZW50ID0gdGFzay5jb3VudE9mQnl0ZXNTZW50Owot
ICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZl
ZCA9IHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZDsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxN
ZXRyaWNzLT5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50ID0gcmVxdWVzdEhlYWRlckJ5dGVzU2VudDsK
KyAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0Qm9keUJ5dGVzU2VudCA9IHRh
c2suY291bnRPZkJ5dGVzU2VudDsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZXNw
b25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQgPSByZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQ7Cisg
ICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MuYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmlj
c0ZvcldlYkluc3BlY3RvciA9IFdURk1vdmUoYWRkaXRpb25hbE1ldHJpY3MpOwogICAgICAgICB9
CiAjaWYgSEFWRShDRk5FVFdPUktfTUVUUklDU19BUElTX1Y0KQogICAgICAgICBuZXR3b3JrTG9h
ZE1ldHJpY3MucmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZCA9IG0uY291bnRPZlJlc3BvbnNlQm9k
eUJ5dGVzUmVjZWl2ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggMWEyOGNkYjc5MzdmMmM3YmVh
NDI3OWJmMjAwMWQzMmVhNmQ2N2M0NC4uMzdkZTg2NjI2NGI1MjdlMDBjOTYyM2M4NDIwZWRlNDk0
ZTAwM2U2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMTIxMCw2ICsxMjEwLDEzIEBAIHN0YXRp
YyBTdHJpbmcgdGxzUHJvdG9jb2xWZXJzaW9uVG9TdHJpbmcoR1Rsc1Byb3RvY29sVmVyc2lvbiB2
ZXJzaW9uKQogfQogI2VuZGlmCiAKK1dlYkNvcmU6OkFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJp
Y3NGb3JXZWJJbnNwZWN0b3ImIE5ldHdvcmtEYXRhVGFza1NvdXA6OmFkZGl0aW9uYWxOZXR3b3Jr
TG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IoKQoreworICAgIGlmICghbV9uZXR3b3JrTG9hZE1l
dHJpY3MuYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcikKKyAgICAg
ICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MuYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0Zvcldl
Ykluc3BlY3RvciA9IGFkb3B0UmVmKCpuZXcgV2ViQ29yZTo6QWRkaXRpb25hbE5ldHdvcmtMb2Fk
TWV0cmljc0ZvcldlYkluc3BlY3Rvcik7CisgICAgcmV0dXJuICptX25ldHdvcmtMb2FkTWV0cmlj
cy5hZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yOworfQorCiB2b2lk
IE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZEdldEhlYWRlcnMoKQogewogICAgIC8vIFdlIGFyZSBh
IGJpdCBtb3JlIGNvbnNlcnZhdGl2ZSB3aXRoIHRoZSBwZXJzaXN0ZW50IGNyZWRlbnRpYWwgc3Rv
cmFnZSB0aGFuIHRoZSBzZXNzaW9uIHN0b3JlLApAQCAtMTIzMyw2ICsxMjQwLDggQEAgdm9pZCBO
ZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRHZXRIZWFkZXJzKCkKICAgICAvLyBpcyB0aGUgZmlyc3Qg
b25lIHdlIHJlY2VpdmUgYWZ0ZXIgc3RhcnRpbmcsIHNvIHdlIHVzZSBpdCBhbHNvIHRvIGdldCBp
bmZvcm1hdGlvbiBhYm91dCB0aGUKICAgICAvLyByZXF1ZXN0IGhlYWRlcnMuCiAgICAgaWYgKHNo
b3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpKSB7CisgICAgICAgIGF1dG8mIGFk
ZGl0aW9uYWxNZXRyaWNzID0gYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3Bl
Y3RvcigpOworCiAgICAgICAgIEhUVFBIZWFkZXJNYXAgcmVxdWVzdEhlYWRlcnM7CiAgICAgICAg
IFNvdXBNZXNzYWdlSGVhZGVyc0l0ZXIgaGVhZGVyc0l0ZXI7CiAgICAgICAgIHNvdXBfbWVzc2Fn
ZV9oZWFkZXJzX2l0ZXJfaW5pdCgmaGVhZGVyc0l0ZXIsIHNvdXBfbWVzc2FnZV9nZXRfcmVxdWVz
dF9oZWFkZXJzKG1fc291cE1lc3NhZ2UuZ2V0KCkpKTsKQEAgLTEyNDAsMTkgKzEyNDksMTkgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRHZXRIZWFkZXJzKCkKICAgICAgICAgY29uc3Qg
Y2hhciogaGVhZGVyVmFsdWU7CiAgICAgICAgIHdoaWxlIChzb3VwX21lc3NhZ2VfaGVhZGVyc19p
dGVyX25leHQoJmhlYWRlcnNJdGVyLCAmaGVhZGVyTmFtZSwgJmhlYWRlclZhbHVlKSkKICAgICAg
ICAgICAgIHJlcXVlc3RIZWFkZXJzLnNldChTdHJpbmcoaGVhZGVyTmFtZSksIFN0cmluZyhoZWFk
ZXJWYWx1ZSkpOwotICAgICAgICBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0SGVhZGVycyA9
IFdURk1vdmUocmVxdWVzdEhlYWRlcnMpOworICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy5yZXF1
ZXN0SGVhZGVycyA9IFdURk1vdmUocmVxdWVzdEhlYWRlcnMpOwogCi0gICAgICAgIG1fbmV0d29y
a0xvYWRNZXRyaWNzLnByaW9yaXR5ID0gdG9OZXR3b3JrTG9hZFByaW9yaXR5KHNvdXBfbWVzc2Fn
ZV9nZXRfcHJpb3JpdHkobV9zb3VwTWVzc2FnZS5nZXQoKSkpOworICAgICAgICBhZGRpdGlvbmFs
TWV0cmljcy5wcmlvcml0eSA9IHRvTmV0d29ya0xvYWRQcmlvcml0eShzb3VwX21lc3NhZ2VfZ2V0
X3ByaW9yaXR5KG1fc291cE1lc3NhZ2UuZ2V0KCkpKTsKICNpZiAhVVNFKFNPVVAyKQotICAgICAg
ICBtX25ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0aW9uSWRlbnRpZmllciA9IFN0cmluZzo6bnVt
YmVyKHNvdXBfbWVzc2FnZV9nZXRfY29ubmVjdGlvbl9pZChtX3NvdXBNZXNzYWdlLmdldCgpKSk7
CisgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0gU3RyaW5n
OjpudW1iZXIoc291cF9tZXNzYWdlX2dldF9jb25uZWN0aW9uX2lkKG1fc291cE1lc3NhZ2UuZ2V0
KCkpKTsKICAgICAgICAgYXV0byogYWRkcmVzcyA9IHNvdXBfbWVzc2FnZV9nZXRfcmVtb3RlX2Fk
ZHJlc3MobV9zb3VwTWVzc2FnZS5nZXQoKSk7CiAgICAgICAgIGlmIChHX0lTX0lORVRfU09DS0VU
X0FERFJFU1MoYWRkcmVzcykpIHsKICAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gaXBBZGRy
ZXNzKGdfaW5ldF9hZGRyZXNzX3RvX3N0cmluZyhnX2luZXRfc29ja2V0X2FkZHJlc3NfZ2V0X2Fk
ZHJlc3MoR19JTkVUX1NPQ0tFVF9BRERSRVNTKGFkZHJlc3MpKSkpOwotICAgICAgICAgICAgbV9u
ZXR3b3JrTG9hZE1ldHJpY3MucmVtb3RlQWRkcmVzcyA9IG1ha2VTdHJpbmcoaXBBZGRyZXNzLmdl
dCgpLCAnOicsIGdfaW5ldF9zb2NrZXRfYWRkcmVzc19nZXRfcG9ydChHX0lORVRfU09DS0VUX0FE
RFJFU1MoYWRkcmVzcykpKTsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLnJlbW90ZUFk
ZHJlc3MgPSBtYWtlU3RyaW5nKGlwQWRkcmVzcy5nZXQoKSwgJzonLCBnX2luZXRfc29ja2V0X2Fk
ZHJlc3NfZ2V0X3BvcnQoR19JTkVUX1NPQ0tFVF9BRERSRVNTKGFkZHJlc3MpKSk7CiAgICAgICAg
IH0KLSAgICAgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MudGxzUHJvdG9jb2wgPSB0bHNQcm90b2Nv
bFZlcnNpb25Ub1N0cmluZyhzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wcm90b2NvbF92ZXJzaW9uKG1f
c291cE1lc3NhZ2UuZ2V0KCkpKTsKLSAgICAgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MudGxzQ2lw
aGVyID0gU3RyaW5nOjpmcm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3Rsc19jaXBoZXJzdWl0ZV9u
YW1lKG1fc291cE1lc3NhZ2UuZ2V0KCkpKTsKLSAgICAgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3Mu
cmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkID0gc291cF9tZXNzYWdlX21ldHJpY3NfZ2V0X3Jl
c3BvbnNlX2hlYWRlcl9ieXRlc19yZWNlaXZlZChtZXRyaWNzKTsKKyAgICAgICAgYWRkaXRpb25h
bE1ldHJpY3MudGxzUHJvdG9jb2wgPSB0bHNQcm90b2NvbFZlcnNpb25Ub1N0cmluZyhzb3VwX21l
c3NhZ2VfZ2V0X3Rsc19wcm90b2NvbF92ZXJzaW9uKG1fc291cE1lc3NhZ2UuZ2V0KCkpKTsKKyAg
ICAgICAgYWRkaXRpb25hbE1ldHJpY3MudGxzQ2lwaGVyID0gU3RyaW5nOjpmcm9tVVRGOChzb3Vw
X21lc3NhZ2VfZ2V0X3Rsc19jaXBoZXJzdWl0ZV9uYW1lKG1fc291cE1lc3NhZ2UuZ2V0KCkpKTsK
KyAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MucmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkID0g
c291cF9tZXNzYWdlX21ldHJpY3NfZ2V0X3Jlc3BvbnNlX2hlYWRlcl9ieXRlc19yZWNlaXZlZCht
ZXRyaWNzKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTI2OCw3ICsxMjc3LDcgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2tTb3VwOjp3cm90ZUhlYWRlcnNDYWxsYmFjayhTb3VwTWVzc2FnZSogc291cE1l
c3NhZ2UsIE5ldHdvcmsKICAgICB9CiAgICAgQVNTRVJUKHRhc2stPm1fc291cE1lc3NhZ2UuZ2V0
KCkgPT0gc291cE1lc3NhZ2UpOwogICAgIGF1dG8qIG1ldHJpY3MgPSBzb3VwX21lc3NhZ2VfZ2V0
X21ldHJpY3Moc291cE1lc3NhZ2UpOwotICAgIHRhc2stPm1fbmV0d29ya0xvYWRNZXRyaWNzLnJl
cXVlc3RIZWFkZXJCeXRlc1NlbnQgPSBzb3VwX21lc3NhZ2VfbWV0cmljc19nZXRfcmVxdWVzdF9o
ZWFkZXJfYnl0ZXNfc2VudChtZXRyaWNzKTsKKyAgICB0YXNrLT5hZGRpdGlvbmFsTmV0d29ya0xv
YWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yKCkucmVxdWVzdEhlYWRlckJ5dGVzU2VudCA9IHNvdXBf
bWVzc2FnZV9tZXRyaWNzX2dldF9yZXF1ZXN0X2hlYWRlcl9ieXRlc19zZW50KG1ldHJpY3MpOwog
fQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Ondyb3RlQm9keUNhbGxiYWNrKFNvdXBNZXNz
YWdlKiBzb3VwTWVzc2FnZSwgTmV0d29ya0RhdGFUYXNrU291cCogdGFzaykKQEAgLTEyNzksNyAr
MTI4OCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6d3JvdGVCb2R5Q2FsbGJhY2soU291
cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBOZXR3b3JrRGF0CiAgICAgfQogICAgIEFTU0VSVCh0YXNr
LT5tX3NvdXBNZXNzYWdlLmdldCgpID09IHNvdXBNZXNzYWdlKTsKICAgICBhdXRvKiBtZXRyaWNz
ID0gc291cF9tZXNzYWdlX2dldF9tZXRyaWNzKHNvdXBNZXNzYWdlKTsKLSAgICB0YXNrLT5tX25l
dHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0Qm9keUJ5dGVzU2VudCA9IHNvdXBfbWVzc2FnZV9tZXRy
aWNzX2dldF9yZXF1ZXN0X2JvZHlfYnl0ZXNfc2VudChtZXRyaWNzKTsKKyAgICB0YXNrLT5hZGRp
dGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yKCkucmVxdWVzdEJvZHlCeXRl
c1NlbnQgPSBzb3VwX21lc3NhZ2VfbWV0cmljc19nZXRfcmVxdWVzdF9ib2R5X2J5dGVzX3NlbnQo
bWV0cmljcyk7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6Z290Qm9keUNhbGxiYWNr
KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgTmV0d29ya0RhdGFUYXNrU291cCogdGFzaykKQEAg
LTE1MTUsNyArMTUyNCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6bmV0d29ya0V2ZW50
KEdTb2NrZXRDbGllbnRFdmVudCBldmVudCwgR0lPU3RyZWFtKiBzdHJlCiAgICAgICAgICAgICBH
UmVmUHRyPEdTb2NrZXRBZGRyZXNzPiBhZGRyZXNzID0gYWRvcHRHUmVmKGdfc29ja2V0X2Nvbm5l
Y3Rpb25fZ2V0X3JlbW90ZV9hZGRyZXNzKEdfU09DS0VUX0NPTk5FQ1RJT04oc3RyZWFtKSwgbnVs
bHB0cikpOwogICAgICAgICAgICAgaWYgKEdfSVNfSU5FVF9TT0NLRVRfQUREUkVTUyhhZGRyZXNz
LmdldCgpKSkgewogICAgICAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gaXBBZGRyZXNzKGdf
aW5ldF9hZGRyZXNzX3RvX3N0cmluZyhnX2luZXRfc29ja2V0X2FkZHJlc3NfZ2V0X2FkZHJlc3Mo
R19JTkVUX1NPQ0tFVF9BRERSRVNTKGFkZHJlc3MuZ2V0KCkpKSkpOwotICAgICAgICAgICAgICAg
IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlbW90ZUFkZHJlc3MgPSBtYWtlU3RyaW5nKGlwQWRkcmVz
cy5nZXQoKSwgJzonLCBnX2luZXRfc29ja2V0X2FkZHJlc3NfZ2V0X3BvcnQoR19JTkVUX1NPQ0tF
VF9BRERSRVNTKGFkZHJlc3MuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgYWRkaXRpb25hbE5l
dHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcigpLnJlbW90ZUFkZHJlc3MgPSBtYWtlU3Ry
aW5nKGlwQWRkcmVzcy5nZXQoKSwgJzonLCBnX2luZXRfc29ja2V0X2FkZHJlc3NfZ2V0X3BvcnQo
R19JTkVUX1NPQ0tFVF9BRERSRVNTKGFkZHJlc3MuZ2V0KCkpKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgLy8gV2ViIFRpbWluZyBjb25zaWRlcnMgdGhhdCBjb25uZWN0aW9u
IHRpbWUgaW52b2x2ZXMgZG5zLCBwcm94eSAmIFRMUyBuZWdvdGlhdGlvbi4uLgpAQCAtMTYzNCw3
ICsxNjQzLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpyZXN0YXJ0ZWRDYWxsYmFjayhT
b3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIE5ldHdvcmtEYXQKIAogdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpkaWRSZXN0YXJ0KCkKIHsKLSAgICBtX25ldHdvcmtMb2FkTWV0cmljcyA9IHsgfTsK
KyAgICBtX25ldHdvcmtMb2FkTWV0cmljcyA9IE5ldHdvcmtMb2FkTWV0cmljczo6ZW1wdHlNZXRy
aWNzKCk7CiAjaWYgVVNFKFNPVVAyKQogICAgIG1fbmV0d29ya0xvYWRNZXRyaWNzLmZldGNoU3Rh
cnQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaAppbmRleCBjMzMz
MDY1MWQ2NjI0ZGFkZDQ5NmM2ODlmYjA4YzE0NDNhMWE1ZTcxLi5jZmVkNmIzODI2MzE5ZTg1ODI2
ZjhmNDFmYjEwMDEwYjBjYTA5MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgKQEAgLTE4MSw2ICsxODEsOCBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRSZWFkRGF0YVVSTChzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkRhdGFVUkxEZWNvZGVyOjpSZXN1bHQ+JiYpOwogCisgICAgV2ViQ29yZTo6QWRkaXRpb25h
bE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvciYgYWRkaXRpb25hbE5ldHdvcmtMb2Fk
TWV0cmljc0ZvcldlYkluc3BlY3RvcigpOworCiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IG1fZnJhbWVJRDsKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICBT
dGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlN1c3BlbmRlZCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBlNzA0ZWNiODgxNGNjZGQwNjEwYTdiMjI4
MWM3NGM3Mjk1YTBjNTc1Li41NjI4YTdjN2MwYzlhZDhjYTY1ZmMwZWFjYmFlNWZiODU3OGY3ZjY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAt
OTAzLDE2ICs5MDMsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Oklu
cHV0TW9kZT4gewogICAgID47CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHk+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAotICAgICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5LAotICAgICAgICBXZWJD
b3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5OjpMb3csCi0gICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtM
b2FkUHJpb3JpdHk6Ok1lZGl1bSwKLSAgICAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0
eTo6SGlnaCwKLSAgICAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eTo6VW5rbm93bgot
ICAgID47Ci19OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkRpcmVjdGlvbj4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAg
ICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRpcmVjdGlvbiwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438882</attachid>
            <date>2021-09-21 16:22:26 -0700</date>
            <delta_ts>2021-09-21 17:27:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226982-20210921162225.patch</filename>
            <type>text/plain</type>
            <size>65884</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY4ODkxNjIxMGZhZDhl
NmExZGI5YjdmYjE1ZGRkZjRiNWZjYjEzMS4uMzViZmU3NWVlNTgzNWM2YTdlODZlMjI3N2Q2YTgz
MWQ4YzMyMmFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIxLTA5LTIxICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNl
IHNpemVvZihOZXR3b3JrTG9hZE1ldHJpY3MpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBE
dW1lei4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuICBKdXN0IGdyZWF0bHkgcmVk
dWNpbmcgdGhlIHNpemUgb2YgYSBjb21tb24gc3RydWN0dXJlLgorCisgICAgICAgIFdlIHRha2Ug
YWxsIHRoZSBtZW1iZXJzIHRoYXQgYXJlbid0IHVzZWQgd2l0aG91dCB0aGUgaW5zcGVjdG9yIGFu
ZCBtb3ZlIHRoZW0gdG8gYSBuZXcgc3RydWN0LAorICAgICAgICBBZGRpdGlvbmFsTmV0d29ya0xv
YWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yLiAgV2UgYWxzbyByZW1vdmUgc29tZSBlcXVhbGl0eSBj
b21wYXJpc29uIHRoYXQKKyAgICAgICAgd2FzIHVubmVjZXNzYXJ5IGJlY2F1c2UgaXQgd2FzIG9u
bHkgdXNlZCBmb3IgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgZXF1YWxpdHkgY29tcGFyaXNvbnMg
aW4KKyAgICAgICAgUmVzb3VyY2VIYW5kbGVNYWMuICBXZSBhbHNvIHVzZSBlbXB0eU1ldHJpY3Mo
KSB0byByZW1vdmUgYSBmZXcgdW5uZWNlc3NhcnkgYW5kIGhhcmQgdG8gc2VlCisgICAgICAgIGNv
cHkgY29uc3RydWN0b3IgY2FsbHMuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvck1ldHJpY3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9u
c2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6Cisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFsRm9yV2ViS2l0TGVnYWN5Q2hhbGxl
bmdlQ29tcGFyaXNvbik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUJhc2U6OmNvbXBhcmUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6Ok5ldHdvcmtMb2FkTWV0cmljcyk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVj
dG9yOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29y
a0xvYWRNZXRyaWNzLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6OmRlY29k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2Vi
SW5zcGVjdG9yOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWRkaXRpb25hbE5l
dHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljc1dpdGhvdXROb25UaW1pbmdEYXRhOjppc0NvbXBsZXRlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljc1dpdGhv
dXROb25UaW1pbmdEYXRhOjptYXJrQ29tcGxldGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzOjpOZXR3b3JrTG9hZE1ldHJpY3MpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjppc29sYXRlZENvcHkgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjpvcGVyYXRvcj09
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljczo6
b3BlcmF0b3IhPSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yIT0pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsSGFuZGxlOjphZGRFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpuZXR3b3JrTG9hZE1ldHJpY3Mp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250
aW51ZVdpdGhvdXRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpyZWNlaXZlZENhbmNlbGxhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFu
ZGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxl
bmdlUmVqZWN0aW9uKToKKwogMjAyMS0wOS0yMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbmFtZSB7Y2hlY2tlZCxkeW5hbWljfV9uc19jYXN0PD4gdG8g
e2NoZWNrZWQsZHluYW1pY31fb2JqY19jYXN0PD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTkwODlkY2ViNGViZWFk
MzVkNDU0YzIwNGU0YjExYmYxMmEyNjBiMi4uNDNhMDcxMzAwNmViYjlmNjE2ZjY5ZDIyZjU2OTFl
NDFiMDg4YWQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wOS0yMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBz
aXplb2YoTmV0d29ya0xvYWRNZXRyaWNzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVt
ZXouCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRGb3JD
YWNoZUVudHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lv
bjp0YXNrOmRpZEZpbmlzaENvbGxlY3RpbmdNZXRyaWNzOl0pOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza1NvdXA6OmFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNw
ZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRHZXRIZWFk
ZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6d3JvdGVIZWFkZXJz
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjp3cm90ZUJv
ZHlDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6Om5ldHdv
cmtFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlc3Rh
cnQpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKwogMjAyMS0w
OS0yMSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSB1bnVzZWQgc2VsZWN0aW9uIHBhcmFtZXRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZjBl
YjI0NzU3ODE0OTczMWM3NzMxOTgzZGYzYmJkZTdhMWZjOTE0Ni4uNGM2NzRkMjYxZDJiZTc0YjU4
MDVhYTcwNWNkYzQ1NWRlNWYzM2UxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIxMjksNiArMjEyOSw3
IEBAIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKIHBsYXRmb3JtL25ldHdvcmsv
SFRUUEhlYWRlclZhbHVlcy5jcHAKIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCiBw
bGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCitwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtM
b2FkTWV0cmljcy5jcHAKIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3Bw
CiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI5NTAwOThlMDZkNzgwYTBkYzdjNjM1
NTExNGZjYjdlZGY3YWE4ZDcuLjBiNmEzYjFiYzIwMWFiODlkMjI1MWYxNjIyMmU3MWVlY2ZjMGQ3
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTk4NzEsNiArOTg3MSw3IEBACiAJCTVDOUVGMkYyMjFGMDYxNzEwMDNCREM1NiAv
KiBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUNBMURFQzIxRjcxRTY4NjAwRTcxQkQzIC8qIEhUVFBIZWFkZXJGaWVsZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVFRQSGVhZGVyRmllbGQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0ExREVDNDFGNzFFNjg3MDBFNzFCRDMgLyogSFRU
UEhlYWRlckZpZWxkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUVFBIZWFk
ZXJGaWVsZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0FGN0FBRjI2RkE5OTY4
MDAwM0YxOUUgLyogTmV0d29ya0xvYWRNZXRyaWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtMb2FkTWV0cmljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDQjM3RkZDMUM2MkQyNzgwMEYyMDE4OCAvKiBTY3JvbGxiYXJzQ29udHJv
bGxlck1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xs
YmFyc0NvbnRyb2xsZXJNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNC
MzdGRkQxQzYyRDI3ODAwRjIwMTg4IC8qIFNjcm9sbGJhcnNDb250cm9sbGVyTW9jay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxiYXJzQ29udHJvbGxlck1vY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzhEQUExQUFBMzAyMjAwRTFDODAzIC8q
IE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMDcxLDYgKzIyMDcyLDcgQEAKIAkJCQk1MTRDNzY1RTBDRTky
M0ExMDA3RUYzQ0QgLyogSFRUUFBhcnNlcnMuaCAqLywKIAkJCQk2MjhEMjE0QjEyMTMxRUQxMDA1
NURDRkMgLyogTmV0d29ya2luZ0NvbnRleHQuaCAqLywKIAkJCQk0MTZENzU5RjIwQzY0NDEzMDBE
MDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oICovLAorCQkJCTVDQUY3QUFGMjZGQTk5
NjgwMDAzRjE5RSAvKiBOZXR3b3JrTG9hZE1ldHJpY3MuY3BwICovLAogCQkJCThBODFCRjg0MTFE
Q0ZEOTAwMERBMkI5OCAvKiBOZXR3b3JrTG9hZE1ldHJpY3MuaCAqLywKIAkJCQkxQTdGQTYxQTBE
REEzQkJFMDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwICovLAogCQkJCTFBN0ZB
NjE4MEREQTNCM0EwMDI4RjhBNSAvKiBOZXR3b3JrU3RhdGVOb3RpZmllci5oICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwCmluZGV4IGFlZWFhMGE2Njk1MGExNTgxYzg0NmM3MzA3MDYyNzI4NjQxMWJiODIu
LjM3NDY4NDMyNTc3ZjY0ZTNkMThiYzM2NjdjYTI5OGY0M2EzYmY1MDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKQEAgLTI2MywyMSArMjYzLDIyIEBAIFJlZjxQcm90b2NvbDo6TmV0d29yazo6TWV0cmlj
cz4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvck1ldHJpY3MoY29uCiAKICAg
ICBpZiAoIW5ldHdvcmtMb2FkTWV0cmljcy5wcm90b2NvbC5pc051bGwoKSkKICAgICAgICAgbWV0
cmljcy0+c2V0UHJvdG9jb2wobmV0d29ya0xvYWRNZXRyaWNzLnByb3RvY29sKTsKLSAgICBpZiAo
bmV0d29ya0xvYWRNZXRyaWNzLnByaW9yaXR5ICE9IE5ldHdvcmtMb2FkUHJpb3JpdHk6OlVua25v
d24pCi0gICAgICAgIG1ldHJpY3MtPnNldFByaW9yaXR5KHRvUHJvdG9jb2wobmV0d29ya0xvYWRN
ZXRyaWNzLnByaW9yaXR5KSk7Ci0gICAgaWYgKCFuZXR3b3JrTG9hZE1ldHJpY3MucmVtb3RlQWRk
cmVzcy5pc051bGwoKSkKLSAgICAgICAgbWV0cmljcy0+c2V0UmVtb3RlQWRkcmVzcyhuZXR3b3Jr
TG9hZE1ldHJpY3MucmVtb3RlQWRkcmVzcyk7Ci0gICAgaWYgKCFuZXR3b3JrTG9hZE1ldHJpY3Mu
Y29ubmVjdGlvbklkZW50aWZpZXIuaXNOdWxsKCkpCi0gICAgICAgIG1ldHJpY3MtPnNldENvbm5l
Y3Rpb25JZGVudGlmaWVyKG5ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0aW9uSWRlbnRpZmllcik7
Ci0gICAgaWYgKCFuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRlcnMuaXNFbXB0eSgpKQot
ICAgICAgICBtZXRyaWNzLT5zZXRSZXF1ZXN0SGVhZGVycyhidWlsZE9iamVjdEZvckhlYWRlcnMo
bmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RIZWFkZXJzKSk7Ci0KLSAgICBpZiAobmV0d29ya0xv
YWRNZXRyaWNzLnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1
aW50NjRfdD46Om1heCgpKQotICAgICAgICBtZXRyaWNzLT5zZXRSZXF1ZXN0SGVhZGVyQnl0ZXNT
ZW50KG5ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50KTsKLSAgICBpZiAo
bmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RCb2R5Qnl0ZXNTZW50ICE9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDY0X3Q+OjptYXgoKSkKLSAgICAgICAgbWV0cmljcy0+c2V0UmVxdWVzdEJvZHlC
eXRlc1NlbnQobmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RCb2R5Qnl0ZXNTZW50KTsKLSAgICBp
ZiAobmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCAhPSBzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCi0gICAgICAgIG1ldHJpY3MtPnNldFJl
c3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZChuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VIZWFk
ZXJCeXRlc1JlY2VpdmVkKTsKKyAgICBpZiAoYXV0byogYWRkaXRpb25hbE1ldHJpY3MgPSBuZXR3
b3JrTG9hZE1ldHJpY3MuYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rv
ci5nZXQoKSkgeworICAgICAgICBpZiAoYWRkaXRpb25hbE1ldHJpY3MtPnByaW9yaXR5ICE9IE5l
dHdvcmtMb2FkUHJpb3JpdHk6OlVua25vd24pCisgICAgICAgICAgICBtZXRyaWNzLT5zZXRQcmlv
cml0eSh0b1Byb3RvY29sKGFkZGl0aW9uYWxNZXRyaWNzLT5wcmlvcml0eSkpOworICAgICAgICBp
ZiAoIWFkZGl0aW9uYWxNZXRyaWNzLT5yZW1vdGVBZGRyZXNzLmlzTnVsbCgpKQorICAgICAgICAg
ICAgbWV0cmljcy0+c2V0UmVtb3RlQWRkcmVzcyhhZGRpdGlvbmFsTWV0cmljcy0+cmVtb3RlQWRk
cmVzcyk7CisgICAgICAgIGlmICghYWRkaXRpb25hbE1ldHJpY3MtPmNvbm5lY3Rpb25JZGVudGlm
aWVyLmlzTnVsbCgpKQorICAgICAgICAgICAgbWV0cmljcy0+c2V0Q29ubmVjdGlvbklkZW50aWZp
ZXIoYWRkaXRpb25hbE1ldHJpY3MtPmNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICAgICAgaWYg
KCFhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEhlYWRlcnMuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgbWV0cmljcy0+c2V0UmVxdWVzdEhlYWRlcnMoYnVpbGRPYmplY3RGb3JIZWFkZXJzKGFkZGl0
aW9uYWxNZXRyaWNzLT5yZXF1ZXN0SGVhZGVycykpOworICAgICAgICBpZiAoYWRkaXRpb25hbE1l
dHJpY3MtPnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50
NjRfdD46Om1heCgpKQorICAgICAgICAgICAgbWV0cmljcy0+c2V0UmVxdWVzdEhlYWRlckJ5dGVz
U2VudChhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEhlYWRlckJ5dGVzU2VudCk7CisgICAgICAg
IGlmIChhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEJvZHlCeXRlc1NlbnQgIT0gc3RkOjpudW1l
cmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKQorICAgICAgICAgICAgbWV0cmljcy0+c2V0UmVx
dWVzdEJvZHlCeXRlc1NlbnQoYWRkaXRpb25hbE1ldHJpY3MtPnJlcXVlc3RCb2R5Qnl0ZXNTZW50
KTsKKyAgICAgICAgaWYgKGFkZGl0aW9uYWxNZXRyaWNzLT5yZXNwb25zZUhlYWRlckJ5dGVzUmVj
ZWl2ZWQgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKQorICAgICAgICAg
ICAgbWV0cmljcy0+c2V0UmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkKGFkZGl0aW9uYWxNZXRy
aWNzLT5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQpOworICAgIH0KICAgICBpZiAobmV0d29y
a0xvYWRNZXRyaWNzLnJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQgIT0gc3RkOjpudW1lcmljX2xp
bWl0czx1aW50NjRfdD46Om1heCgpKQogICAgICAgICBtZXRyaWNzLT5zZXRSZXNwb25zZUJvZHlC
eXRlc1JlY2VpdmVkKG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVk
KTsKICAgICBpZiAobmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlQm9keURlY29kZWRTaXplICE9
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSkKQEAgLTI4NiwxMSArMjg3LDEy
IEBAIFJlZjxQcm90b2NvbDo6TmV0d29yazo6TWV0cmljcz4gSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpidWlsZE9iamVjdEZvck1ldHJpY3MoY29uCiAgICAgYXV0byBjb25uZWN0aW9uUGF5bG9hZCA9
IFByb3RvY29sOjpTZWN1cml0eTo6Q29ubmVjdGlvbjo6Y3JlYXRlKCkKICAgICAgICAgLnJlbGVh
c2UoKTsKIAotICAgIGlmICghbmV0d29ya0xvYWRNZXRyaWNzLnRsc1Byb3RvY29sLmlzRW1wdHko
KSkKLSAgICAgICAgY29ubmVjdGlvblBheWxvYWQtPnNldFByb3RvY29sKG5ldHdvcmtMb2FkTWV0
cmljcy50bHNQcm90b2NvbCk7Ci0KLSAgICBpZiAoIW5ldHdvcmtMb2FkTWV0cmljcy50bHNDaXBo
ZXIuaXNFbXB0eSgpKQotICAgICAgICBjb25uZWN0aW9uUGF5bG9hZC0+c2V0Q2lwaGVyKG5ldHdv
cmtMb2FkTWV0cmljcy50bHNDaXBoZXIpOworICAgIGlmIChhdXRvKiBhZGRpdGlvbmFsTWV0cmlj
cyA9IG5ldHdvcmtMb2FkTWV0cmljcy5hZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2Vi
SW5zcGVjdG9yLmdldCgpKSB7CisgICAgICAgIGlmICghYWRkaXRpb25hbE1ldHJpY3MtPnRsc1By
b3RvY29sLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbm5lY3Rpb25QYXlsb2FkLT5zZXRQcm90
b2NvbChhZGRpdGlvbmFsTWV0cmljcy0+dGxzUHJvdG9jb2wpOworICAgICAgICBpZiAoIWFkZGl0
aW9uYWxNZXRyaWNzLT50bHNDaXBoZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29ubmVjdGlv
blBheWxvYWQtPnNldENpcGhlcihhZGRpdGlvbmFsTWV0cmljcy0+dGxzQ2lwaGVyKTsKKyAgICB9
CiAKICAgICBtZXRyaWNzLT5zZXRTZWN1cml0eUNvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9u
UGF5bG9hZCkpOwogCkBAIC0zNTMsNyArMzU1LDcgQEAgUmVmUHRyPFByb3RvY29sOjpOZXR3b3Jr
OjpSZXNwb25zZT4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvclJlc291cmMK
IAogICAgIGlmIChyZXNvdXJjZUxvYWRlcikgewogICAgICAgICBhdXRvKiBtZXRyaWNzID0gcmVz
cG9uc2UuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOwotICAgICAgICByZXNw
b25zZU9iamVjdC0+c2V0VGltaW5nKGJ1aWxkT2JqZWN0Rm9yVGltaW5nKG1ldHJpY3MgPyAqbWV0
cmljcyA6IE5ldHdvcmtMb2FkTWV0cmljcyB7IH0sICpyZXNvdXJjZUxvYWRlcikpOworICAgICAg
ICByZXNwb25zZU9iamVjdC0+c2V0VGltaW5nKGJ1aWxkT2JqZWN0Rm9yVGltaW5nKG1ldHJpY3Mg
PyAqbWV0cmljcyA6IE5ldHdvcmtMb2FkTWV0cmljczo6ZW1wdHlNZXRyaWNzKCksICpyZXNvdXJj
ZUxvYWRlcikpOwogICAgIH0KIAogICAgIGlmIChhdXRvJiBjZXJ0aWZpY2F0ZUluZm8gPSByZXNw
b25zZS5jZXJ0aWZpY2F0ZUluZm8oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKaW5kZXggNTk2ODEzZmEyZDgwZGU2YjMxODhiNzgwZDFiYzAyZTU0ODMxNDc5Ny4u
ZGQ2MWZkNWNlZTA3NDM4ZWE3YTUxZDA5NTFjYmU0ODNlOGRjNmVjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xMzkzLDcgKzEzOTMsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVu
Z3RoKQogCiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuc2V0dGluZ3MoKS5wZXJmb3JtYW5jZU5h
dmlnYXRpb25UaW1pbmdBUElFbmFibGVkKCkgJiYgbV9tYWluUmVzb3VyY2UpIHsKICAgICAgICAg
ICAgICAgICBhdXRvKiBtZXRyaWNzID0gbV9yZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzT3JOdWxsKCk7Ci0gICAgICAgICAgICAgICAgd2luZG93LT5wZXJmb3JtYW5jZSgpLmFk
ZE5hdmlnYXRpb25UaW1pbmcoKnRoaXMsIGRvY3VtZW50LCAqbV9tYWluUmVzb3VyY2UsIHRpbWlu
ZygpLCBtZXRyaWNzID8gKm1ldHJpY3MgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9KTsKKyAgICAg
ICAgICAgICAgICB3aW5kb3ctPnBlcmZvcm1hbmNlKCkuYWRkTmF2aWdhdGlvblRpbWluZygqdGhp
cywgZG9jdW1lbnQsICptX21haW5SZXNvdXJjZSwgdGltaW5nKCksIG1ldHJpY3MgPyAqbWV0cmlj
cyA6IE5ldHdvcmtMb2FkTWV0cmljczo6ZW1wdHlNZXRyaWNzKCkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKaW5kZXggMDhhNDM5YzkwZWE1NjJkZTZlOTg4NWMwNzgxMzRmM2RhYTQ4
YTBhNi4uODEwMjc3NzE2MjI3YTRmOWE2NWQwYTNiNGJjYWFjYzM0NjdmYzk1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAg
LTY2NCw3ICs2NjQsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIH0KIAogICAgIGNv
bnN0IGF1dG8qIHRpbWluZyA9IHJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NP
ck51bGwoKTsKLSAgICBhdXRvIHJlc291cmNlVGltaW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21T
eW5jaHJvbm91c0xvYWQocmVxdWVzdFVSTCwgbV9vcHRpb25zLmluaXRpYXRvciwgbG9hZFRpbWlu
ZywgdGltaW5nID8gKnRpbWluZyA6IE5ldHdvcmtMb2FkTWV0cmljcyB7IH0sIHJlc3BvbnNlLCBz
ZWN1cml0eU9yaWdpbigpKTsKKyAgICBhdXRvIHJlc291cmNlVGltaW5nID0gUmVzb3VyY2VUaW1p
bmc6OmZyb21TeW5jaHJvbm91c0xvYWQocmVxdWVzdFVSTCwgbV9vcHRpb25zLmluaXRpYXRvciwg
bG9hZFRpbWluZywgdGltaW5nID8gKnRpbWluZyA6IE5ldHdvcmtMb2FkTWV0cmljczo6ZW1wdHlN
ZXRyaWNzKCksIHJlc3BvbnNlLCBzZWN1cml0eU9yaWdpbigpKTsKICAgICBpZiAob3B0aW9ucygp
LmluaXRpYXRvckNvbnRleHQgPT0gSW5pdGlhdG9yQ29udGV4dDo6V29ya2VyKQogICAgICAgICBm
aW5pc2hlZFRpbWluZ0ZvcldvcmtlckxvYWQocmVzb3VyY2VUaW1pbmcpOwogICAgIGVsc2Ugewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMDhmYjkz
ZDIzYTk2NjEyMzViMmUwZjVlN2U3OWQzYTkwYjZhZDZiZS4uN2Q3ODIyZTI0OTI4MTZjNmU4NjZi
N2U1Yjc4ODMxMTA2MzdiMWRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb20K
ICAgICAgICAgaWYgKHJlc3BvbnNlSGFzSFRUUFN0YXR1c0NvZGVFcnJvcigpKSB7CiAgICAgICAg
ICAgICBtX2xvYWRUaW1pbmcubWFya0VuZFRpbWUoKTsKICAgICAgICAgICAgIGF1dG8qIG1ldHJp
Y3MgPSB0aGlzLT5yZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwo
KTsKLSAgICAgICAgICAgIHJlcG9ydFJlc291cmNlVGltaW5nKG1ldHJpY3MgPyAqbWV0cmljcyA6
IE5ldHdvcmtMb2FkTWV0cmljcyB7IH0pOworICAgICAgICAgICAgcmVwb3J0UmVzb3VyY2VUaW1p
bmcobWV0cmljcyA/ICptZXRyaWNzIDogTmV0d29ya0xvYWRNZXRyaWNzOjplbXB0eU1ldHJpY3Mo
KSk7CiAKICAgICAgICAgICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7CiAgICAgICAgICAgICBtX3Jl
c291cmNlLT5lcnJvcihDYWNoZWRSZXNvdXJjZTo6TG9hZEVycm9yKTsKQEAgLTc0MSw3ICs3NDEs
NyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZQogICAgICAgICAvLyBjb21wbGV0ZSBsb2FkIG1l
dHJpY3MgaW4gZGlkRmluaXNoTG9hZC4gSW4gdGhvc2UgY2FzZXMsIGZhbGwgYmFjayB0byB0aGUg
cG9zc2liaWxpdHkKICAgICAgICAgLy8gdGhhdCB0aGV5IHBvcHVsYXRlZCBwYXJ0aWFsIGxvYWQg
dGltaW5nIGluZm9ybWF0aW9uIG9uIHRoZSBSZXNvdXJjZVJlc3BvbnNlLgogICAgICAgICBjb25z
dCBhdXRvKiB0aW1pbmcgPSBtX3Jlc291cmNlLT5yZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3Jr
TG9hZE1ldHJpY3NPck51bGwoKTsKLSAgICAgICAgcmVwb3J0UmVzb3VyY2VUaW1pbmcodGltaW5n
ID8gKnRpbWluZyA6IE5ldHdvcmtMb2FkTWV0cmljcyB7IH0pOworICAgICAgICByZXBvcnRSZXNv
dXJjZVRpbWluZyh0aW1pbmcgPyAqdGltaW5nIDogTmV0d29ya0xvYWRNZXRyaWNzOjplbXB0eU1l
dHJpY3MoKSk7CiAgICAgfQogCiAgICAgaWYgKG1fcmVzb3VyY2UtPnR5cGUoKSAhPSBDYWNoZWRS
ZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZmM1NGFjNDZhNTJkMDYw
ZjcyZTdiYjE4ZDY1NDgxMWRlZDQ5MGIzMy4uOTlhYzdkNTJiMWQ0Nzg2ZTg2MzEwMTNjY2IwZTdl
MmE2NjNhZDc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDQxLDcgKzEwNDEsNyBAQCBSZXNvdXJjZUVycm9y
T3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVxdQogICAgICAgICAgICAgICAgIC8vIGZvciB0aGlzIGRvY3VtZW50IGJlY2F1c2Ug
aXQgbWF5IGhhdmUgYmVlbiBzcGVjdWxhdGl2ZWx5IHByZWxvYWRlZC4KICAgICAgICAgICAgICAg
ICBpZiAoYXV0byBtZXRyaWNzRnJvbVJlc291cmNlID0gcmVzb3VyY2UtPnRha2VOZXR3b3JrTG9h
ZE1ldHJpY3MoKTsgbWV0cmljc0Zyb21SZXNvdXJjZSAmJiBkb2N1bWVudExvYWRlciAmJiBtZXRy
aWNzRnJvbVJlc291cmNlLT5yZWRpcmVjdFN0YXJ0ID49IGRvY3VtZW50TG9hZGVyLT50aW1pbmco
KS50aW1lT3JpZ2luKCkpCiAgICAgICAgICAgICAgICAgICAgIG1ldHJpY3MgPSBXVEZNb3ZlKG1l
dHJpY3NGcm9tUmVzb3VyY2UpOwotICAgICAgICAgICAgICAgIGF1dG8gcmVzb3VyY2VUaW1pbmcg
PSBSZXNvdXJjZVRpbWluZzo6ZnJvbU1lbW9yeUNhY2hlKHVybCwgcmVxdWVzdC5pbml0aWF0b3JO
YW1lKCksIGxvYWRUaW1pbmcsIHJlc291cmNlLT5yZXNwb25zZSgpLCBtZXRyaWNzID8gKm1ldHJp
Y3MgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9LCAqcmVxdWVzdC5vcmlnaW4oKSk7CisgICAgICAg
ICAgICAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9tTWVtb3J5
Q2FjaGUodXJsLCByZXF1ZXN0LmluaXRpYXRvck5hbWUoKSwgbG9hZFRpbWluZywgcmVzb3VyY2Ut
PnJlc3BvbnNlKCksIG1ldHJpY3MgPyAqbWV0cmljcyA6IE5ldHdvcmtMb2FkTWV0cmljczo6ZW1w
dHlNZXRyaWNzKCksICpyZXF1ZXN0Lm9yaWdpbigpKTsKICAgICAgICAgICAgICAgICBpZiAoaW5p
dGlhdG9yQ29udGV4dCA9PSBJbml0aWF0b3JDb250ZXh0OjpXb3JrZXIpIHsKICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGlzPENhY2hlZFJhd1Jlc291cmNlPihyZXNvdXJjZS5nZXQoKSkpOwog
ICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxDYWNoZWRSYXdSZXNvdXJjZT4ocmVzb3VyY2Uu
Z2V0KCkpLT5maW5pc2hlZFRpbWluZ0ZvcldvcmtlckxvYWQoV1RGTW92ZShyZXNvdXJjZVRpbWlu
ZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwCmluZGV4IDdjMTllMWY1MjE2NDkyNTc5
OTRmNzUzZmFlMDMzNzY3NzM5ZTMzOGEuLjFhZWNkMmU0ZjlhNDliZTE1OGVkOGUzNjYyNDlkOGNh
MTljZDM2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAKQEAgLTgyLDcgKzgyLDcg
QEAgdm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6Om51bGxpZnkoKQogICAgIG1faXNO
dWxsID0gdHJ1ZTsKIH0KIAotYm9vbCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmNvbXBh
cmUoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBiKQorYm9vbCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFsRm9y
V2ViS2l0TGVnYWN5Q2hhbGxlbmdlQ29tcGFyaXNvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGIpCiB7CiAgICAgaWYgKGEu
aXNOdWxsKCkgJiYgYi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05OSw5ICs5
OSw5IEBAIGJvb2wgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjpjb21wYXJlKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zCiAgICAgaWYgKGEucHJldmlvdXNGYWlsdXJl
Q291bnQoKSAhPSBiLnByZXZpb3VzRmFpbHVyZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgCi0gICAgaWYgKGEuZmFpbHVyZVJlc3BvbnNlKCkgIT0gYi5mYWlsdXJlUmVz
cG9uc2UoKSkKKyAgICBpZiAoIVJlc291cmNlUmVzcG9uc2VCYXNlOjplcXVhbEZvcldlYktpdExl
Z2FjeUNoYWxsZW5nZUNvbXBhcmlzb24oYS5mYWlsdXJlUmVzcG9uc2UoKSwgYi5mYWlsdXJlUmVz
cG9uc2UoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisKICAgICBpZiAoYS5l
cnJvcigpICE9IGIuZXJyb3IoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQmFzZS5oCmluZGV4IGE0ZjdiNjJlZGExMDJlY2Y1OTk4NzFkMzc1Nzg5
MmQ3Nzk5ZDAyMDcuLjU4NjA3MGZlYTk2OWY0YmMyODg1NTU2M2RiMzA2ZTZmOTUwY2JlN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc051bGwoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIG51bGxpZnkoKTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBjb21w
YXJlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgYik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZXF1YWxGb3JX
ZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKIAogcHJvdGVjdGVkOgogICAg
IC8vIFRoZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBzdWJjbGFzcyBtYXkgInNoYWRvdyIgdGhp
cyBtZXRob2QgdG8gY29tcGFyZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWVsZHMKQEAgLTYyLDkgKzYy
LDYgQEAgcHJvdGVjdGVkOgogICAgIFJlc291cmNlRXJyb3IgbV9lcnJvcjsKIH07CiAKLWlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKSB7IHJldHVybiBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUJhc2U6OmNvbXBhcmUoYSwgYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KLQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZjI1NGYwMjA2ZDU3MmNiYjA5ZjRkZjc3NTEwYjAyZGIzYWM4ZTllCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1l
dHJpY3MuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtM
b2FkTWV0cmljcy5oIgorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworTmV0d29ya0xvYWRNZXRyaWNzOjpOZXR3b3JrTG9hZE1ldHJpY3Mo
KQorICAgIDogY29tcGxldGUoZmFsc2UpCisgICAgLCBjZWxsdWxhcihmYWxzZSkKKyAgICAsIGV4
cGVuc2l2ZShmYWxzZSkKKyAgICAsIGNvbnN0cmFpbmVkKGZhbHNlKQorICAgICwgbXVsdGlwYXRo
KGZhbHNlKQorICAgICwgaXNSZXVzZWRDb25uZWN0aW9uKGZhbHNlKQorICAgICwgZmFpbHNUQU9D
aGVjayhmYWxzZSkKKyAgICAsIGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QoZmFsc2UpIHsgfQorCitj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIE5ldHdvcmtMb2FkTWV0cmljczo6ZW1wdHlNZXRyaWNz
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TmV0d29ya0xvYWRNZXRyaWNzPiBtZXRy
aWNzOworICAgIHJldHVybiBtZXRyaWNzLmdldCgpOworfQorCitSZWY8QWRkaXRpb25hbE5ldHdv
cmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcj4gQWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmlj
c0ZvcldlYkluc3BlY3Rvcjo6aXNvbGF0ZWRDb3B5KCkKK3sKKyAgICBhdXRvIGNvcHkgPSBBZGRp
dGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yOjpjcmVhdGUoKTsKKyAgICBj
b3B5LT5wcmlvcml0eSA9IHByaW9yaXR5OworICAgIGNvcHktPnJlbW90ZUFkZHJlc3MgPSByZW1v
dGVBZGRyZXNzLmlzb2xhdGVkQ29weSgpOworICAgIGNvcHktPmNvbm5lY3Rpb25JZGVudGlmaWVy
ID0gY29ubmVjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS0+dGxzUHJv
dG9jb2wgPSB0bHNQcm90b2NvbC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LT50bHNDaXBoZXIg
PSB0bHNDaXBoZXIuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS0+cmVxdWVzdEhlYWRlcnMgPSBy
ZXF1ZXN0SGVhZGVycy5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LT5yZXF1ZXN0SGVhZGVyQnl0
ZXNTZW50ID0gcmVxdWVzdEhlYWRlckJ5dGVzU2VudDsKKyAgICBjb3B5LT5yZXNwb25zZUhlYWRl
ckJ5dGVzUmVjZWl2ZWQgPSByZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQ7CisgICAgY29weS0+
cmVxdWVzdEJvZHlCeXRlc1NlbnQgPSByZXF1ZXN0Qm9keUJ5dGVzU2VudDsKKyAgICByZXR1cm4g
Y29weTsKK30KKworTmV0d29ya0xvYWRNZXRyaWNzIE5ldHdvcmtMb2FkTWV0cmljczo6aXNvbGF0
ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBOZXR3b3JrTG9hZE1ldHJpY3MgY29weTsKKworICAgIGNv
cHkucmVkaXJlY3RTdGFydCA9IHJlZGlyZWN0U3RhcnQuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29w
eS5mZXRjaFN0YXJ0ID0gZmV0Y2hTdGFydC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LmRvbWFp
bkxvb2t1cFN0YXJ0ID0gZG9tYWluTG9va3VwU3RhcnQuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29w
eS5kb21haW5Mb29rdXBFbmQgPSBkb21haW5Mb29rdXBFbmQuaXNvbGF0ZWRDb3B5KCk7CisgICAg
Y29weS5jb25uZWN0U3RhcnQgPSBjb25uZWN0U3RhcnQuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29w
eS5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBzZWN1cmVDb25uZWN0aW9uU3RhcnQuaXNvbGF0ZWRD
b3B5KCk7CisgICAgY29weS5jb25uZWN0RW5kID0gY29ubmVjdEVuZC5pc29sYXRlZENvcHkoKTsK
KyAgICBjb3B5LnJlcXVlc3RTdGFydCA9IHJlcXVlc3RTdGFydC5pc29sYXRlZENvcHkoKTsKKyAg
ICBjb3B5LnJlc3BvbnNlU3RhcnQgPSByZXNwb25zZVN0YXJ0Lmlzb2xhdGVkQ29weSgpOworICAg
IGNvcHkucmVzcG9uc2VFbmQgPSByZXNwb25zZUVuZC5pc29sYXRlZENvcHkoKTsKKworICAgIGNv
cHkucHJvdG9jb2wgPSBwcm90b2NvbC5pc29sYXRlZENvcHkoKTsKKworICAgIGNvcHkucmVkaXJl
Y3RDb3VudCA9IHJlZGlyZWN0Q291bnQ7CisKKyAgICBjb3B5LmNvbXBsZXRlID0gY29tcGxldGU7
CisgICAgY29weS5jZWxsdWxhciA9IGNlbGx1bGFyOworICAgIGNvcHkuZXhwZW5zaXZlID0gZXhw
ZW5zaXZlOworICAgIGNvcHkuY29uc3RyYWluZWQgPSBjb25zdHJhaW5lZDsKKyAgICBjb3B5Lm11
bHRpcGF0aCA9IG11bHRpcGF0aDsKKyAgICBjb3B5LmlzUmV1c2VkQ29ubmVjdGlvbiA9IGlzUmV1
c2VkQ29ubmVjdGlvbjsKKyAgICBjb3B5LmZhaWxzVEFPQ2hlY2sgPSBmYWlsc1RBT0NoZWNrOwor
ICAgIGNvcHkuaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCA9IGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3Q7
CisKKyAgICBjb3B5LnByaXZhY3lTdGFuY2UgPSBwcml2YWN5U3RhbmNlOworCisgICAgY29weS5y
ZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkID0gcmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZDsKKyAg
ICBjb3B5LnJlc3BvbnNlQm9keURlY29kZWRTaXplID0gcmVzcG9uc2VCb2R5RGVjb2RlZFNpemU7
CisKKyAgICBpZiAoYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcikK
KyAgICAgICAgY29weS5hZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9y
ID0gYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvci0+aXNvbGF0ZWRD
b3B5KCk7CisKKyAgICByZXR1cm4gY29weTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1l
dHJpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRy
aWNzLmgKaW5kZXggZjFlYTc2ZTFkYjExM2RjNjQ2OTA4ODY3OWJhOTdjNzhhOTIxMzc3NS4uY2Iw
ZDhiM2FhYzRkNmIxZmVlOWI5ZWEyMjQ1MzRjYTIzMjA0ODgxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0cmljcy5oCkBAIC0zNCw3
ICszNCw2IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNVUkxDb25uZWN0
aW9uOwotT0JKQ19DTEFTUyBOU1VSTFJlc3BvbnNlOwogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25U
YXNrTWV0cmljczsKICNlbmRpZgogCkBAIC01OSw5ICs1OCwyMCBAQCBlbnVtIGNsYXNzIFByaXZh
Y3lTdGFuY2UgOiB1aW50OF90IHsKIAogY29uc3RleHByIE1vbm90b25pY1RpbWUgcmV1c2VkVExT
Q29ubmVjdGlvblNlbnRpbmVsIHsgTW9ub3RvbmljVGltZTo6ZnJvbVJhd1NlY29uZHMoLTEpIH07
CiAKLWNsYXNzIE5ldHdvcmtMb2FkTWV0cmljc1dpdGhvdXROb25UaW1pbmdEYXRhIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRChOZXR3b3JrTG9hZE1ldHJpY3NXaXRob3V0Tm9uVGltaW5n
RGF0YSk7CitzdHJ1Y3QgQWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rv
cjsKKworY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRChOZXR3b3JrTG9hZE1ldHJpY3MpOwogcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIE5l
dHdvcmtMb2FkTWV0cmljcygpOworCisgICAgc3RhdGljIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgZW1wdHlNZXRyaWNzKCk7CisKKyAgICBOZXR3b3JrTG9hZE1ldHJpY3MgaXNvbGF0ZWRDb3B5
KCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8TmV0d29ya0xvYWRNZXRyaWNzPiBkZWNvZGUoRGVjb2RlciYpOworCiAgICAgYm9vbCBp
c0NvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gY29tcGxldGU7IH0KICAgICB2b2lkIG1hcmtDb21w
bGV0ZSgpIHsgY29tcGxldGUgPSB0cnVlOyB9CiAKQEAgLTgyLDExMCArOTIsMzMgQEAgcHVibGlj
OgogCiAgICAgdWludDE2X3QgcmVkaXJlY3RDb3VudCB7IDAgfTsKIAotICAgIC8vIEZJWE1FOiBU
aGVzZSBjb3VsZCBhbGwgYmUgbWFkZSBiaXQgZmllbGRzLgotICAgIGJvb2wgY29tcGxldGUgeyBm
YWxzZSB9OwotICAgIGJvb2wgY2VsbHVsYXIgeyBmYWxzZSB9OwotICAgIGJvb2wgZXhwZW5zaXZl
IHsgZmFsc2UgfTsKLSAgICBib29sIGNvbnN0cmFpbmVkIHsgZmFsc2UgfTsKLSAgICBib29sIG11
bHRpcGF0aCB7IGZhbHNlIH07Ci0gICAgYm9vbCBpc1JldXNlZENvbm5lY3Rpb24geyBmYWxzZSB9
OwotICAgIGJvb2wgZmFpbHNUQU9DaGVjayB7IGZhbHNlIH07Ci0gICAgYm9vbCBoYXNDcm9zc09y
aWdpblJlZGlyZWN0IHsgZmFsc2UgfTsKLX07CisgICAgYm9vbCBjb21wbGV0ZSA6IDE7CisgICAg
Ym9vbCBjZWxsdWxhciA6IDE7CisgICAgYm9vbCBleHBlbnNpdmUgOiAxOworICAgIGJvb2wgY29u
c3RyYWluZWQgOiAxOworICAgIGJvb2wgbXVsdGlwYXRoIDogMTsKKyAgICBib29sIGlzUmV1c2Vk
Q29ubmVjdGlvbiA6IDE7CisgICAgYm9vbCBmYWlsc1RBT0NoZWNrIDogMTsKKyAgICBib29sIGhh
c0Nyb3NzT3JpZ2luUmVkaXJlY3QgOiAxOwogCi1jbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3MgOiBw
dWJsaWMgTmV0d29ya0xvYWRNZXRyaWNzV2l0aG91dE5vblRpbWluZ0RhdGEgewotcHVibGljOgot
ICAgIE5ldHdvcmtMb2FkTWV0cmljcygpCi0gICAgICAgIDogTmV0d29ya0xvYWRNZXRyaWNzV2l0
aG91dE5vblRpbWluZ0RhdGEoKQotICAgIHsKLSAgICB9CisgICAgUHJpdmFjeVN0YW5jZSBwcml2
YWN5U3RhbmNlIHsgUHJpdmFjeVN0YW5jZTo6VW5rbm93biB9OwogCi0gICAgTmV0d29ya0xvYWRN
ZXRyaWNzIGlzb2xhdGVkQ29weSgpIGNvbnN0Ci0gICAgewotICAgICAgICBOZXR3b3JrTG9hZE1l
dHJpY3MgY29weTsKLQotICAgICAgICBjb3B5LnJlZGlyZWN0U3RhcnQgPSByZWRpcmVjdFN0YXJ0
OwotICAgICAgICBjb3B5LmZldGNoU3RhcnQgPSBmZXRjaFN0YXJ0OwotCi0gICAgICAgIGNvcHku
ZG9tYWluTG9va3VwU3RhcnQgPSBkb21haW5Mb29rdXBTdGFydDsKLSAgICAgICAgY29weS5kb21h
aW5Mb29rdXBFbmQgPSBkb21haW5Mb29rdXBFbmQ7Ci0gICAgICAgIGNvcHkuY29ubmVjdFN0YXJ0
ID0gY29ubmVjdFN0YXJ0OwotICAgICAgICBjb3B5LnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IHNl
Y3VyZUNvbm5lY3Rpb25TdGFydDsKLSAgICAgICAgY29weS5jb25uZWN0RW5kID0gY29ubmVjdEVu
ZDsKLSAgICAgICAgY29weS5yZXF1ZXN0U3RhcnQgPSByZXF1ZXN0U3RhcnQ7Ci0gICAgICAgIGNv
cHkucmVzcG9uc2VTdGFydCA9IHJlc3BvbnNlU3RhcnQ7Ci0gICAgICAgIGNvcHkucmVzcG9uc2VF
bmQgPSByZXNwb25zZUVuZDsKLSAgICAgICAgY29weS5jb21wbGV0ZSA9IGNvbXBsZXRlOwotICAg
ICAgICBjb3B5LnByb3RvY29sID0gcHJvdG9jb2wuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgICAgIGNv
cHkucmVkaXJlY3RDb3VudCA9IHJlZGlyZWN0Q291bnQ7Ci0gICAgICAgIGNvcHkuY2VsbHVsYXIg
PSBjZWxsdWxhcjsKLSAgICAgICAgY29weS5leHBlbnNpdmUgPSBleHBlbnNpdmU7Ci0gICAgICAg
IGNvcHkuY29uc3RyYWluZWQgPSBjb25zdHJhaW5lZDsKLSAgICAgICAgY29weS5tdWx0aXBhdGgg
PSBtdWx0aXBhdGg7Ci0gICAgICAgIGNvcHkuaXNSZXVzZWRDb25uZWN0aW9uID0gaXNSZXVzZWRD
b25uZWN0aW9uOwotICAgICAgICBjb3B5LmZhaWxzVEFPQ2hlY2sgPSBmYWlsc1RBT0NoZWNrOwot
ICAgICAgICBjb3B5Lmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QgPSBoYXNDcm9zc09yaWdpblJlZGly
ZWN0OwotCi0gICAgICAgIGNvcHkucmVtb3RlQWRkcmVzcyA9IHJlbW90ZUFkZHJlc3MuaXNvbGF0
ZWRDb3B5KCk7Ci0gICAgICAgIGNvcHkuY29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9u
SWRlbnRpZmllci5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgY29weS50bHNQcm90b2NvbCA9IHRs
c1Byb3RvY29sLmlzb2xhdGVkQ29weSgpOwotICAgICAgICBjb3B5LnRsc0NpcGhlciA9IHRsc0Np
cGhlci5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgY29weS5wcmlvcml0eSA9IHByaW9yaXR5Owot
ICAgICAgICBjb3B5LnByaXZhY3lTdGFuY2UgPSBwcml2YWN5U3RhbmNlOwotICAgICAgICBjb3B5
LnJlcXVlc3RIZWFkZXJzID0gcmVxdWVzdEhlYWRlcnMuaXNvbGF0ZWRDb3B5KCk7Ci0KLSAgICAg
ICAgY29weS5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50ID0gcmVxdWVzdEhlYWRlckJ5dGVzU2VudDsK
LSAgICAgICAgY29weS5yZXF1ZXN0Qm9keUJ5dGVzU2VudCA9IHJlcXVlc3RCb2R5Qnl0ZXNTZW50
OwotICAgICAgICBjb3B5LnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCA9IHJlc3BvbnNlSGVh
ZGVyQnl0ZXNSZWNlaXZlZDsKLSAgICAgICAgY29weS5yZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVk
ID0gcmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZDsKLSAgICAgICAgY29weS5yZXNwb25zZUJvZHlE
ZWNvZGVkU2l6ZSA9IHJlc3BvbnNlQm9keURlY29kZWRTaXplOwotCi0gICAgICAgIHJldHVybiBj
b3B5OwotICAgIH0KKyAgICB1aW50NjRfdCByZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkIHsgc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIH07CisgICAgdWludDY0X3QgcmVzcG9u
c2VCb2R5RGVjb2RlZFNpemUgeyBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkg
fTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlZGlyZWN0U3RhcnQgPT0gb3RoZXIucmVk
aXJlY3RTdGFydAotICAgICAgICAgICAgJiYgZmV0Y2hTdGFydCA9PSBvdGhlci5mZXRjaFN0YXJ0
Ci0gICAgICAgICAgICAmJiBkb21haW5Mb29rdXBTdGFydCA9PSBvdGhlci5kb21haW5Mb29rdXBT
dGFydAotICAgICAgICAgICAgJiYgZG9tYWluTG9va3VwRW5kID09IG90aGVyLmRvbWFpbkxvb2t1
cEVuZAotICAgICAgICAgICAgJiYgY29ubmVjdFN0YXJ0ID09IG90aGVyLmNvbm5lY3RTdGFydAot
ICAgICAgICAgICAgJiYgc2VjdXJlQ29ubmVjdGlvblN0YXJ0ID09IG90aGVyLnNlY3VyZUNvbm5l
Y3Rpb25TdGFydAotICAgICAgICAgICAgJiYgY29ubmVjdEVuZCA9PSBvdGhlci5jb25uZWN0RW5k
Ci0gICAgICAgICAgICAmJiByZXF1ZXN0U3RhcnQgPT0gb3RoZXIucmVxdWVzdFN0YXJ0Ci0gICAg
ICAgICAgICAmJiByZXNwb25zZVN0YXJ0ID09IG90aGVyLnJlc3BvbnNlU3RhcnQKLSAgICAgICAg
ICAgICYmIHJlc3BvbnNlRW5kID09IG90aGVyLnJlc3BvbnNlRW5kCi0gICAgICAgICAgICAmJiBj
b21wbGV0ZSA9PSBvdGhlci5jb21wbGV0ZQotICAgICAgICAgICAgJiYgY2VsbHVsYXIgPT0gb3Ro
ZXIuY2VsbHVsYXIKLSAgICAgICAgICAgICYmIGV4cGVuc2l2ZSA9PSBvdGhlci5leHBlbnNpdmUK
LSAgICAgICAgICAgICYmIGNvbnN0cmFpbmVkID09IG90aGVyLmNvbnN0cmFpbmVkCi0gICAgICAg
ICAgICAmJiBtdWx0aXBhdGggPT0gb3RoZXIubXVsdGlwYXRoCi0gICAgICAgICAgICAmJiBpc1Jl
dXNlZENvbm5lY3Rpb24gPT0gb3RoZXIuaXNSZXVzZWRDb25uZWN0aW9uCi0gICAgICAgICAgICAm
JiBmYWlsc1RBT0NoZWNrID09IG90aGVyLmZhaWxzVEFPQ2hlY2sKLSAgICAgICAgICAgICYmIGhh
c0Nyb3NzT3JpZ2luUmVkaXJlY3QgPT0gb3RoZXIuaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdAotICAg
ICAgICAgICAgJiYgcHJvdG9jb2wgPT0gb3RoZXIucHJvdG9jb2wKLSAgICAgICAgICAgICYmIHJl
ZGlyZWN0Q291bnQgPT0gb3RoZXIucmVkaXJlY3RDb3VudAotICAgICAgICAgICAgJiYgcmVtb3Rl
QWRkcmVzcyA9PSBvdGhlci5yZW1vdGVBZGRyZXNzCi0gICAgICAgICAgICAmJiBjb25uZWN0aW9u
SWRlbnRpZmllciA9PSBvdGhlci5jb25uZWN0aW9uSWRlbnRpZmllcgotICAgICAgICAgICAgJiYg
dGxzUHJvdG9jb2wgPT0gb3RoZXIudGxzUHJvdG9jb2wKLSAgICAgICAgICAgICYmIHRsc0NpcGhl
ciA9PSBvdGhlci50bHNDaXBoZXIKLSAgICAgICAgICAgICYmIHByaW9yaXR5ID09IG90aGVyLnBy
aW9yaXR5Ci0gICAgICAgICAgICAmJiBwcml2YWN5U3RhbmNlID09IG90aGVyLnByaXZhY3lTdGFu
Y2UKLSAgICAgICAgICAgICYmIHJlcXVlc3RIZWFkZXJzID09IG90aGVyLnJlcXVlc3RIZWFkZXJz
Ci0gICAgICAgICAgICAmJiByZXF1ZXN0SGVhZGVyQnl0ZXNTZW50ID09IG90aGVyLnJlcXVlc3RI
ZWFkZXJCeXRlc1NlbnQKLSAgICAgICAgICAgICYmIHJlcXVlc3RCb2R5Qnl0ZXNTZW50ID09IG90
aGVyLnJlcXVlc3RCb2R5Qnl0ZXNTZW50Ci0gICAgICAgICAgICAmJiByZXNwb25zZUhlYWRlckJ5
dGVzUmVjZWl2ZWQgPT0gb3RoZXIucmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkCi0gICAgICAg
ICAgICAmJiByZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkID09IG90aGVyLnJlc3BvbnNlQm9keUJ5
dGVzUmVjZWl2ZWQKLSAgICAgICAgICAgICYmIHJlc3BvbnNlQm9keURlY29kZWRTaXplID09IG90
aGVyLnJlc3BvbnNlQm9keURlY29kZWRTaXplOwotICAgIH0KKyAgICBSZWZQdHI8QWRkaXRpb25h
bE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcj4gYWRkaXRpb25hbE5ldHdvcmtMb2Fk
TWV0cmljc0ZvcldlYkluc3BlY3RvcjsKK307CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKLSAgICB9CitzdHJ1Y3QgQWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0
cmljc0ZvcldlYkluc3BlY3RvciA6IHB1YmxpYyBSZWZDb3VudGVkPEFkZGl0aW9uYWxOZXR3b3Jr
TG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I+IHsKKworICAgIHN0YXRpYyBSZWY8QWRkaXRpb25h
bE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yKCkp
OyB9CisgICAgUmVmPEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I+
IGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIE5ldHdvcmtMb2Fk
TWV0cmljcyYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8QWRk
aXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcj4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICBSZWY8QWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcj4g
aXNvbGF0ZWRDb3B5KCk7CisKKyAgICBOZXR3b3JrTG9hZFByaW9yaXR5IHByaW9yaXR5IHsgTmV0
d29ya0xvYWRQcmlvcml0eTo6VW5rbm93biB9OwogCiAgICAgU3RyaW5nIHJlbW90ZUFkZHJlc3M7
CiAgICAgU3RyaW5nIGNvbm5lY3Rpb25JZGVudGlmaWVyOwpAQCAtMTkzLDE2ICsxMjYsMTMgQEAg
cHVibGljOgogICAgIFN0cmluZyB0bHNQcm90b2NvbDsKICAgICBTdHJpbmcgdGxzQ2lwaGVyOwog
Ci0gICAgTmV0d29ya0xvYWRQcmlvcml0eSBwcmlvcml0eSB7IE5ldHdvcmtMb2FkUHJpb3JpdHk6
OlVua25vd24gfTsKLSAgICBQcml2YWN5U3RhbmNlIHByaXZhY3lTdGFuY2UgeyBQcml2YWN5U3Rh
bmNlOjpVbmtub3duIH07Ci0KICAgICBIVFRQSGVhZGVyTWFwIHJlcXVlc3RIZWFkZXJzOwogCiAg
ICAgdWludDY0X3QgcmVxdWVzdEhlYWRlckJ5dGVzU2VudCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDY0X3Q+OjptYXgoKSB9OwogICAgIHVpbnQ2NF90IHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNl
aXZlZCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSB9OwogICAgIHVpbnQ2
NF90IHJlcXVlc3RCb2R5Qnl0ZXNTZW50IHsgc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46
Om1heCgpIH07Ci0gICAgdWludDY0X3QgcmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZCB7IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSB9OwotICAgIHVpbnQ2NF90IHJlc3BvbnNl
Qm9keURlY29kZWRTaXplIHsgc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIH07
Citwcml2YXRlOgorICAgIEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0
b3IoKSB7IH0KIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTIyNSw2ICsxNTUsMTEgQEAg
dm9pZCBOZXR3b3JrTG9hZE1ldHJpY3M6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgIGVuY29kZXIgPDwgcmVxdWVzdFN0YXJ0OwogICAgIGVuY29kZXIgPDwgcmVzcG9uc2VTdGFy
dDsKICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlRW5kOworCisgICAgZW5jb2RlciA8PCBwcm90b2Nv
bDsKKworICAgIGVuY29kZXIgPDwgcmVkaXJlY3RDb3VudDsKKwogICAgIGVuY29kZXIgPDwgY29t
cGxldGU7CiAgICAgZW5jb2RlciA8PCBjZWxsdWxhcjsKICAgICBlbmNvZGVyIDw8IGV4cGVuc2l2
ZTsKQEAgLTIzMywyOCArMTY4LDI2IEBAIHZvaWQgTmV0d29ya0xvYWRNZXRyaWNzOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGlzUmV1c2VkQ29ubmVjdGlv
bjsKICAgICBlbmNvZGVyIDw8IGZhaWxzVEFPQ2hlY2s7CiAgICAgZW5jb2RlciA8PCBoYXNDcm9z
c09yaWdpblJlZGlyZWN0OwotICAgIGVuY29kZXIgPDwgcHJvdG9jb2w7Ci0gICAgZW5jb2RlciA8
PCByZWRpcmVjdENvdW50OwotICAgIGVuY29kZXIgPDwgcmVtb3RlQWRkcmVzczsKLSAgICBlbmNv
ZGVyIDw8IGNvbm5lY3Rpb25JZGVudGlmaWVyOwotICAgIGVuY29kZXIgPDwgdGxzUHJvdG9jb2w7
Ci0gICAgZW5jb2RlciA8PCB0bHNDaXBoZXI7Ci0gICAgZW5jb2RlciA8PCBwcmlvcml0eTsKKwog
ICAgIGVuY29kZXIgPDwgcHJpdmFjeVN0YW5jZTsKLSAgICBlbmNvZGVyIDw8IHJlcXVlc3RIZWFk
ZXJzOwotICAgIGVuY29kZXIgPDwgcmVxdWVzdEhlYWRlckJ5dGVzU2VudDsKLSAgICBlbmNvZGVy
IDw8IHJlcXVlc3RCb2R5Qnl0ZXNTZW50OwotICAgIGVuY29kZXIgPDwgcmVzcG9uc2VIZWFkZXJC
eXRlc1JlY2VpdmVkOworCiAgICAgZW5jb2RlciA8PCByZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVk
OwogICAgIGVuY29kZXIgPDwgcmVzcG9uc2VCb2R5RGVjb2RlZFNpemU7CisgICAgCisgICAgaWYg
KGFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IpIHsKKyAgICAgICAg
ZW5jb2RlciA8PCB0cnVlOworICAgICAgICBlbmNvZGVyIDw8ICphZGRpdGlvbmFsTmV0d29ya0xv
YWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yOworICAgIH0gZWxzZQorICAgICAgICBlbmNvZGVyIDw8
IGZhbHNlOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotYm9vbCBOZXR3b3JrTG9hZE1l
dHJpY3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCitzdGQ6Om9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gTmV0d29ya0xvYWRNZXRyaWNz
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBzdGF0aWNfYXNzZXJ0KERlY29kZXI6
OmlzSVBDRGVjb2RlciwgIk5ldHdvcmtMb2FkTWV0cmljcyBzaG91bGQgbm90IGJlIHN0b3JlZCBi
eSB0aGUgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciIpOwogCi0gICAgcmV0dXJuIGRlY29kZXIu
ZGVjb2RlKG1ldHJpY3MucmVkaXJlY3RTdGFydCkKKyAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbWV0
cmljczsKKyAgICBpZiAoIShkZWNvZGVyLmRlY29kZShtZXRyaWNzLnJlZGlyZWN0U3RhcnQpCiAg
ICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuZmV0Y2hTdGFydCkKICAgICAgICAgJiYg
ZGVjb2Rlci5kZWNvZGUobWV0cmljcy5kb21haW5Mb29rdXBTdGFydCkKICAgICAgICAgJiYgZGVj
b2Rlci5kZWNvZGUobWV0cmljcy5kb21haW5Mb29rdXBFbmQpCkBAIC0yNjQsMjggKzE5NywxNTEg
QEAgYm9vbCBOZXR3b3JrTG9hZE1ldHJpY3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJp
Y3MucmVxdWVzdFN0YXJ0KQogICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnJlc3Bv
bnNlU3RhcnQpCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucmVzcG9uc2VFbmQp
Ci0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuY29tcGxldGUpCi0gICAgICAgICYm
IGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuY2VsbHVsYXIpCi0gICAgICAgICYmIGRlY29kZXIuZGVj
b2RlKG1ldHJpY3MuZXhwZW5zaXZlKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNz
LmNvbnN0cmFpbmVkKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLm11bHRpcGF0
aCkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5pc1JldXNlZENvbm5lY3Rpb24p
Ci0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuZmFpbHNUQU9DaGVjaykKLSAgICAg
ICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5oYXNDcm9zc09yaWdpblJlZGlyZWN0KQogICAg
ICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnByb3RvY29sKQotICAgICAgICAmJiBkZWNv
ZGVyLmRlY29kZShtZXRyaWNzLnJlZGlyZWN0Q291bnQpCi0gICAgICAgICYmIGRlY29kZXIuZGVj
b2RlKG1ldHJpY3MucmVtb3RlQWRkcmVzcykKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0
cmljcy5jb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0
cmljcy50bHNQcm90b2NvbCkKLSAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy50bHND
aXBoZXIpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucHJpb3JpdHkpCi0gICAg
ICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MucHJpdmFjeVN0YW5jZSkKLSAgICAgICAgJiYg
ZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZXF1ZXN0SGVhZGVycykKLSAgICAgICAgJiYgZGVjb2Rl
ci5kZWNvZGUobWV0cmljcy5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50KQotICAgICAgICAmJiBkZWNv
ZGVyLmRlY29kZShtZXRyaWNzLnJlcXVlc3RCb2R5Qnl0ZXNTZW50KQotICAgICAgICAmJiBkZWNv
ZGVyLmRlY29kZShtZXRyaWNzLnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCkKKyAgICAgICAg
JiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZWRpcmVjdENvdW50KSkpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBjb21wbGV0ZTsK
KyAgICBkZWNvZGVyID4+IGNvbXBsZXRlOworICAgIGlmICghY29tcGxldGUpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgbWV0cmljcy5jb21wbGV0ZSA9IFdURk1vdmUoKmNvbXBs
ZXRlKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY2VsbHVsYXI7CisgICAgZGVjb2RlciA+
PiBjZWxsdWxhcjsKKyAgICBpZiAoIWNlbGx1bGFyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIG1ldHJpY3MuY2VsbHVsYXIgPSBXVEZNb3ZlKCpjZWxsdWxhcik7CisKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGV4cGVuc2l2ZTsKKyAgICBkZWNvZGVyID4+IGV4cGVuc2l2ZTsK
KyAgICBpZiAoIWV4cGVuc2l2ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBt
ZXRyaWNzLmV4cGVuc2l2ZSA9IFdURk1vdmUoKmV4cGVuc2l2ZSk7CisKKyAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IGNvbnN0cmFpbmVkOworICAgIGRlY29kZXIgPj4gY29uc3RyYWluZWQ7CisgICAg
aWYgKCFjb25zdHJhaW5lZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBtZXRy
aWNzLmNvbnN0cmFpbmVkID0gV1RGTW92ZSgqY29uc3RyYWluZWQpOworCisgICAgc3RkOjpvcHRp
b25hbDxib29sPiBtdWx0aXBhdGg7CisgICAgZGVjb2RlciA+PiBtdWx0aXBhdGg7CisgICAgaWYg
KCFtdWx0aXBhdGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgbWV0cmljcy5t
dWx0aXBhdGggPSBXVEZNb3ZlKCptdWx0aXBhdGgpOworCisgICAgc3RkOjpvcHRpb25hbDxib29s
PiBpc1JldXNlZENvbm5lY3Rpb247CisgICAgZGVjb2RlciA+PiBpc1JldXNlZENvbm5lY3Rpb247
CisgICAgaWYgKCFpc1JldXNlZENvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgbWV0cmljcy5pc1JldXNlZENvbm5lY3Rpb24gPSBXVEZNb3ZlKCppc1JldXNlZENv
bm5lY3Rpb24pOworCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBmYWlsc1RBT0NoZWNrOworICAg
IGRlY29kZXIgPj4gZmFpbHNUQU9DaGVjazsKKyAgICBpZiAoIWZhaWxzVEFPQ2hlY2spCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgbWV0cmljcy5mYWlsc1RBT0NoZWNrID0gV1RG
TW92ZSgqZmFpbHNUQU9DaGVjayk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0Nyb3Nz
T3JpZ2luUmVkaXJlY3Q7CisgICAgZGVjb2RlciA+PiBoYXNDcm9zc09yaWdpblJlZGlyZWN0Owor
ICAgIGlmICghaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICBtZXRyaWNzLmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QgPSBXVEZNb3ZlKCpoYXND
cm9zc09yaWdpblJlZGlyZWN0KTsKKworICAgIGlmICghKGRlY29kZXIuZGVjb2RlKG1ldHJpY3Mu
cHJpdmFjeVN0YW5jZSkKICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5yZXNwb25z
ZUJvZHlCeXRlc1JlY2VpdmVkKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLnJl
c3BvbnNlQm9keURlY29kZWRTaXplKTsKKyAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmlj
cy5yZXNwb25zZUJvZHlEZWNvZGVkU2l6ZSkpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRy
aWNzRm9yV2ViSW5zcGVjdG9yOworICAgIGRlY29kZXIgPj4gaGFzQWRkaXRpb25hbE5ldHdvcmtM
b2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcjsKKyAgICBpZiAoIWhhc0FkZGl0aW9uYWxOZXR3b3Jr
TG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgaWYgKCpoYXNBZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9y
KSB7CisgICAgICAgIG1ldHJpY3MuYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYklu
c3BlY3RvciA9IEFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I6OmRl
Y29kZShkZWNvZGVyKTsKKyAgICAgICAgaWYgKCFtZXRyaWNzLmFkZGl0aW9uYWxOZXR3b3JrTG9h
ZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIH0KKyAgICByZXR1cm4gbWV0cmljczsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KK3ZvaWQgQWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBwcmlvcml0eTsK
KyAgICBlbmNvZGVyIDw8IHJlbW90ZUFkZHJlc3M7CisgICAgZW5jb2RlciA8PCBjb25uZWN0aW9u
SWRlbnRpZmllcjsKKworICAgIGVuY29kZXIgPDwgdGxzUHJvdG9jb2w7CisgICAgZW5jb2RlciA8
PCB0bHNDaXBoZXI7CisKKyAgICBlbmNvZGVyIDw8IHJlcXVlc3RIZWFkZXJzOworCisgICAgZW5j
b2RlciA8PCByZXF1ZXN0SGVhZGVyQnl0ZXNTZW50OworICAgIGVuY29kZXIgPDwgcmVzcG9uc2VI
ZWFkZXJCeXRlc1JlY2VpdmVkOworICAgIGVuY29kZXIgPDwgcmVxdWVzdEJvZHlCeXRlc1NlbnQ7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitSZWZQdHI8QWRkaXRpb25hbE5ldHdvcmtM
b2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcj4gQWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0Zv
cldlYkluc3BlY3Rvcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRp
b25hbDxOZXR3b3JrTG9hZFByaW9yaXR5PiBwcmlvcml0eTsKKyAgICBkZWNvZGVyID4+IHByaW9y
aXR5OworICAgIGlmICghcHJpb3JpdHkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAor
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiByZW1vdGVBZGRyZXNzOworICAgIGRlY29kZXIgPj4g
cmVtb3RlQWRkcmVzczsKKyAgICBpZiAoIXJlbW90ZUFkZHJlc3MpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbm5lY3Rpb25JZGVudGlmaWVy
OworICAgIGRlY29kZXIgPj4gY29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgaWYgKCFjb25uZWN0
aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gdGxzUHJvdG9jb2w7CisgICAgZGVjb2RlciA+PiB0bHNQcm90b2NvbDsKKyAg
ICBpZiAoIXRsc1Byb3RvY29sKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiB0bHNDaXBoZXI7CisgICAgZGVjb2RlciA+PiB0bHNDaXBoZXI7Cisg
ICAgaWYgKCF0bHNDaXBoZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3RkOjpv
cHRpb25hbDxIVFRQSGVhZGVyTWFwPiByZXF1ZXN0SGVhZGVyczsKKyAgICBkZWNvZGVyID4+IHJl
cXVlc3RIZWFkZXJzOworICAgIGlmICghcmVxdWVzdEhlYWRlcnMpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcmVxdWVzdEhlYWRlckJ5dGVz
U2VudDsKKyAgICBkZWNvZGVyID4+IHJlcXVlc3RIZWFkZXJCeXRlc1NlbnQ7CisgICAgaWYgKCFy
ZXF1ZXN0SGVhZGVyQnl0ZXNTZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZDsKKyAgICBk
ZWNvZGVyID4+IHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZDsKKyAgICBpZiAoIXJlc3BvbnNl
SGVhZGVyQnl0ZXNSZWNlaXZlZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiByZXF1ZXN0Qm9keUJ5dGVzU2VudDsKKyAgICBkZWNvZGVyID4+
IHJlcXVlc3RCb2R5Qnl0ZXNTZW50OworICAgIGlmICghcmVxdWVzdEJvZHlCeXRlc1NlbnQpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBkZWNvZGVkID0gQWRkaXRpb25hbE5l
dHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rvcjo6Y3JlYXRlKCk7CisgICAgZGVjb2RlZC0+
cHJpb3JpdHkgPSBXVEZNb3ZlKCpwcmlvcml0eSk7CisgICAgZGVjb2RlZC0+cmVtb3RlQWRkcmVz
cyA9IFdURk1vdmUoKnJlbW90ZUFkZHJlc3MpOworICAgIGRlY29kZWQtPmNvbm5lY3Rpb25JZGVu
dGlmaWVyID0gV1RGTW92ZSgqY29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIGRlY29kZWQtPnRs
c1Byb3RvY29sID0gV1RGTW92ZSgqdGxzUHJvdG9jb2wpOworICAgIGRlY29kZWQtPnRsc0NpcGhl
ciA9IFdURk1vdmUoKnRsc0NpcGhlcik7CisgICAgZGVjb2RlZC0+cmVxdWVzdEhlYWRlcnMgPSBX
VEZNb3ZlKCpyZXF1ZXN0SGVhZGVycyk7CisgICAgZGVjb2RlZC0+cmVxdWVzdEhlYWRlckJ5dGVz
U2VudCA9IFdURk1vdmUoKnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQpOworICAgIGRlY29kZWQtPnJl
c3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCA9IFdURk1vdmUoKnJlc3BvbnNlSGVhZGVyQnl0ZXNS
ZWNlaXZlZCk7CisgICAgZGVjb2RlZC0+cmVxdWVzdEJvZHlCeXRlc1NlbnQgPSBXVEZNb3ZlKCpy
ZXF1ZXN0Qm9keUJ5dGVzU2VudCk7CisgICAgcmV0dXJuIGRlY29kZWQ7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKQEAgLTMwMyw0ICszNTksMTQgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJDb3JlOjpQcml2YWN5U3RhbmNlPiB7CiAgICAgPjsKIH07CiAKK3RlbXBsYXRl
PD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eT4geworICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
UHJpb3JpdHksCisgICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHk6OkxvdywKKyAg
ICAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eTo6TWVkaXVtLAorICAgICAgICBXZWJD
b3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5OjpIaWdoLAorICAgICAgICBXZWJDb3JlOjpOZXR3b3Jr
TG9hZFByaW9yaXR5OjpVbmtub3duCisgICAgPjsKK307CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKaW5k
ZXggNjEzNjAwNTQyMDkwYTJiOTc3MzFhZmZmM2JmZmY5OTU0NTY0OTRkMy4uOTUwZTgyNjdlMmE1
ZTg2YmE3OWQ2NzllN2Q3MzYxMTAxYzBmYmFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTgwMiw3
ICs4MDIsNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXp5SW5pdChJbml0TGV2ZWwg
aW5pdExldmVsKSBjb25zdAogICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VSZXNwb25zZSo+KHN0YXRp
Y19jYXN0PGNvbnN0IFJlc291cmNlUmVzcG9uc2UqPih0aGlzKSktPnBsYXRmb3JtTGF6eUluaXQo
aW5pdExldmVsKTsKIH0KIAotYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKQorYm9vbCBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJp
c29uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIp
CiB7CiAgICAgaWYgKGEuaXNOdWxsKCkgIT0gYi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOyAgCkBAIC04MjIsMTYgKzgyMiw2IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNv
bXBhcmUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoYS5odHRwSGVhZGVyRmllbGRzKCkgIT0gYi5odHRw
SGVhZGVyRmllbGRzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5tX25ldHdv
cmtMb2FkTWV0cmljcy5nZXQoKSAhPSBiLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpKSB7Ci0g
ICAgICAgIGlmICghYS5tX25ldHdvcmtMb2FkTWV0cmljcykgewotICAgICAgICAgICAgaWYgKE5l
dHdvcmtMb2FkTWV0cmljcygpICE9ICpiLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlmICghYi5tX25ldHdv
cmtMb2FkTWV0cmljcykgewotICAgICAgICAgICAgaWYgKE5ldHdvcmtMb2FkTWV0cmljcygpICE9
ICphLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfSBlbHNlIGlmICgqYS5tX25ldHdvcmtMb2FkTWV0cmljcy5nZXQoKSAh
PSAqYi5tX25ldHdvcmtMb2FkTWV0cmljcy5nZXQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9CiAgICAgcmV0dXJuIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShh
LCBiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmluZGV4IDE3NmI3MzdkYTUzYmVjMTA2M2EyOTgxNDVmN2Mx
MzliMWU2MzE0YWQuLjI2MmU1MzE4MGQ2ZGQ3YzRkMTMzZGRjMWRhZjU2NTJiZDZmMzFjNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmgKQEAgLTIwOSw3ICsyMDksNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVzb3VyY2VSZXNwb25zZSBzeW50aGV0aWNSZWRpcmVjdFJlc3BvbnNlKGNv
bnN0IFVSTCYgZnJvbVVSTCwgY29uc3QgVVJMJiB0b1VSTCk7CiAKLSAgICBzdGF0aWMgYm9vbCBj
b21wYXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CisgICAgc3RhdGljIGJvb2wgZXF1YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29u
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZShEZWNvZGVyJiwgUmVzb3VyY2VSZXNwb25zZUJhc2UmKTsKQEAgLTI4NSw5ICsyODUs
NiBAQCBwcm90ZWN0ZWQ6CiAgICAgc2hvcnQgbV9odHRwU3RhdHVzQ29kZSB7IDAgfTsKIH07CiAK
LWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbXBh
cmUoYSwgYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gIShhID09IGIpOyB9Ci0K
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IGVh
NDY5NWYxZTA0NGY2OTE4MjM3YWVjZTA0ZTI5NzYzN2YwZjkwMzMuLjc5MTVmNjIxOWI3ZGIxOGU0
MTFkZGMxZTQ0NWM2MzcxNjhiZDkzM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtNDEzLDcg
KzQxMyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlCiAgICAgTE9HKE5ldHdvcmssICJDRk5l
dCAtIHJlY2VpdmVkQ3JlZGVudGlhbCgpIik7CiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxs
KCkpOwogICAgIEFTU0VSVChjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotICAg
IGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKQorICAgIGlmICghQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjplcXVhbEZvcldlYktpdExlZ2FjeUNoYWxsZW5nZUNv
bXBhcmlzb24oY2hhbGxlbmdlLCBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCBlbXB0eSBjcmVkZW50aWFscy4gQ3VycmVu
dGx5LCBhbiBlbXB0eSBjcmVkZW50aWFsIGNhbm5vdCBiZSBzdG9yZWQgaW4gV2ViQ29yZSBjcmVk
ZW50aWFsIHN0b3JhZ2UsIGFzIHRoYXQncyBlbXB0eSB2YWx1ZSBmb3IgaXRzIG1hcC4KQEAgLTQ1
MCw3ICs0NTAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRp
bnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYQogICAgIExPRyhOZXR3b3JrLCAi
Q0ZOZXQgLSByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoKSIpOwog
ICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoY2hhbGxlbmdlLmNm
VVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVu
dFdlYkNoYWxsZW5nZSkKKyAgICBpZiAoIUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6ZXF1
YWxGb3JXZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNoYWxsZW5nZSwgZC0+bV9jdXJy
ZW50V2ViQ2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGQtPm1fY29ubmVj
dGlvbikKQEAgLTQ2Miw3ICs0NjIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJl
cXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYQogdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gcmVjZWl2
ZWRDYW5jZWxsYXRpb24oKSIpOwotICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2Vi
Q2hhbGxlbmdlKQorICAgIGlmICghQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjplcXVhbEZv
cldlYktpdExlZ2FjeUNoYWxsZW5nZUNvbXBhcmlzb24oY2hhbGxlbmdlLCBkLT5tX2N1cnJlbnRX
ZWJDaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY2xpZW50KCkpCkBAIC00
NzQsNyArNDc0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJm
b3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW8KICAgICBMT0coTmV0d29yaywg
IkNGTmV0IC0gcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKCkiKTsKICAg
ICBBU1NFUlQoIWNoYWxsZW5nZS5pc051bGwoKSk7CiAgICAgQVNTRVJUKGNoYWxsZW5nZS5jZlVS
TEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0gICAgaWYgKGNoYWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRX
ZWJDaGFsbGVuZ2UpCisgICAgaWYgKCFBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFs
Rm9yV2ViS2l0TGVnYWN5Q2hhbGxlbmdlQ29tcGFyaXNvbihjaGFsbGVuZ2UsIGQtPm1fY3VycmVu
dFdlYkNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChkLT5tX2Nvbm5lY3Rp
b24pCkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDaGFs
bGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGMKICAgICBMT0co
TmV0d29yaywgIkNGTmV0IC0gcmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oKSIpOwogICAgIEFT
U0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoY2hhbGxlbmdlLmNmVVJMQXV0
aENoYWxsZW5nZVJlZigpKTsKLSAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNo
YWxsZW5nZSkKKyAgICBpZiAoIUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6ZXF1YWxGb3JX
ZWJLaXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNoYWxsZW5nZSwgZC0+bV9jdXJyZW50V2Vi
Q2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGQtPm1fY29ubmVjdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRl
eHQuY3BwCmluZGV4IDYwODQwNmI4M2U1MzkyZjIzYWU5OWNjOWNmMjA2MzJkMjUzNmNkNmEuLmQ2
OGU1OWFhYzQ0OTRhNzNjMDlmMGFkNjFkMzk0YmM5YmYxYzlkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApAQCAtODYy
LDE2ICs4NjIsMjAgQEAgdm9pZCBDdXJsSGFuZGxlOjphZGRFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
cyhOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmkKICAgICBpZiAoZXJyb3JDb2Rl
ICE9IENVUkxFX09LKQogICAgICAgICByZXR1cm47CiAKLSAgICBuZXR3b3JrTG9hZE1ldHJpY3Mu
cmVxdWVzdEhlYWRlckJ5dGVzU2VudCA9IHJlcXVlc3RIZWFkZXJTaXplOwotICAgIG5ldHdvcmtM
b2FkTWV0cmljcy5yZXF1ZXN0Qm9keUJ5dGVzU2VudCA9IHJlcXVlc3RCb2R5U2l6ZTsKLSAgICBu
ZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVkID0gcmVzcG9uc2VI
ZWFkZXJTaXplOwogICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUJvZHlCeXRlc1JlY2Vp
dmVkID0gcmVzcG9uc2VCb2R5U2l6ZTsKIAorICAgIGF1dG8gYWRkaXRpb25hbE1ldHJpY3MgPSBB
ZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yOjpjcmVhdGUoKTsKKyAg
ICBhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEhlYWRlckJ5dGVzU2VudCA9IHJlcXVlc3RIZWFk
ZXJTaXplOworICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0Qm9keUJ5dGVzU2VudCA9IHJl
cXVlc3RCb2R5U2l6ZTsKKyAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVzcG9uc2VIZWFkZXJCeXRl
c1JlY2VpdmVkID0gcmVzcG9uc2VIZWFkZXJTaXplOworCiAgICAgaWYgKGlwKSB7Ci0gICAgICAg
IG5ldHdvcmtMb2FkTWV0cmljcy5yZW1vdGVBZGRyZXNzID0gU3RyaW5nKGlwKTsKKyAgICAgICAg
YWRkaXRpb25hbE1ldHJpY3MtPnJlbW90ZUFkZHJlc3MgPSBTdHJpbmcoaXApOwogICAgICAgICBp
ZiAocG9ydCkKLSAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZW1vdGVBZGRyZXNzLmFw
cGVuZCgiOiIgKyBTdHJpbmc6Om51bWJlcihwb3J0KSk7CisgICAgICAgICAgICBhZGRpdGlvbmFs
TWV0cmljcy0+cmVtb3RlQWRkcmVzcy5hcHBlbmQoIjoiICsgU3RyaW5nOjpudW1iZXIocG9ydCkp
OwogICAgIH0KKworICAgIG5ldHdvcmtMb2FkTWV0cmljcy5hZGRpdGlvbmFsTmV0d29ya0xvYWRN
ZXRyaWNzRm9yV2ViSW5zcGVjdG9yID0gV1RGTW92ZShhZGRpdGlvbmFsTWV0cmljcyk7CiB9CiAK
IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBDdXJsSGFuZGxlOjpjZXJ0aWZpY2F0ZUlu
Zm8oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggNGJkMjUwNDIzMmYxMmU5MDJmMWNkZjRlOTNkM2YzODJi
YTgzODJiNC4uOGYxYjQyMDQ3YThiOGJjYmM1ODIzNjJlYzFkOGE0MjIxMTRjYzI3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwCkBAIC03NTcsNyArNzU3LDggQEAgTmV0d29ya0xvYWRNZXRyaWNzIEN1cmxSZXF1ZXN0Ojpu
ZXR3b3JrTG9hZE1ldHJpY3MoKQogCiAgICAgaWYgKG1fY2FwdHVyZUV4dHJhTWV0cmljcykgewog
ICAgICAgICBtX2N1cmxIYW5kbGUtPmFkZEV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCpuZXR3b3Jr
TG9hZE1ldHJpY3MpOwotICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MtPnJlcXVlc3RIZWFkZXJz
ID0gbV9yZXF1ZXN0SGVhZGVyczsKKyAgICAgICAgaWYgKGF1dG8qIGFkZGl0aW9uYWxNZXRyaWNz
ID0gbmV0d29ya0xvYWRNZXRyaWNzLT5hZGRpdGlvbmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2Vi
SW5zcGVjdG9yLmdldCgpKQorICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlcXVlc3RI
ZWFkZXJzID0gbV9yZXF1ZXN0SGVhZGVyczsKICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLT5y
ZXNwb25zZUJvZHlEZWNvZGVkU2l6ZSA9IG1fdG90YWxSZWNlaXZlZFNpemU7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IGZkMGJhNjMwMDA2ZWFiOGMwOWZjZjJhMmI5ODU1MTkz
NmZhOTExNmEuLjBkODYyNjAxMjk0OTYwN2VhNTkyNDhhZWZhN2JjMWI1NjEyZWU0NjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRs
ZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFs
bGVuZ2UKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKGNoYWxsZW5n
ZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCisgICAgaWYgKCFBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUJhc2U6OmVxdWFsRm9yV2ViS2l0TGVnYWN5Q2hhbGxlbmdlQ29tcGFyaXNvbihjaGFs
bGVuZ2UsIGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChjcmVkZW50aWFsLmlzRW1wdHkoKSkgewpAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChj
b25zdCBBdXRoZW50aWNhCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlm
IChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKQorICAgIGlmICghQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VCYXNlOjplcXVhbEZvcldlYktpdExlZ2FjeUNoYWxsZW5nZUNvbXBh
cmlzb24oY2hhbGxlbmdlLCBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpKQogICAgICAgICByZXR1
cm47CiAKICAgICBjbGVhckF1dGhlbnRpY2F0aW9uKCk7CkBAIC0zMDQsNyArMzA0LDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGNoYWxsZW4KIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0g
ICAgaWYgKGNoYWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCisgICAgaWYgKCFB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFsRm9yV2ViS2l0TGVnYWN5Q2hhbGxlbmdl
Q29tcGFyaXNvbihjaGFsbGVuZ2UsIGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChjbGllbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRleCAxMTBi
ZjQ5NzdiNTM2YzRkZjc1MmM3NzI2ZWM2YWM1ZGIxY2Q0ZTE0Li42ZWExNjUyZjA0M2Q0Y2MyY2Fm
NmE3ZWY1MGZmZjI1ZjUzMzI0MzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtNTc3LDcgKzU3Nyw3
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlCiAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAg
cmVjZWl2ZWRDcmVkZW50aWFsIiwgdGhpcyk7CiAKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5pc051
bGwoKSk7Ci0gICAgaWYgKGNoYWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCisg
ICAgaWYgKCFBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFsRm9yV2ViS2l0TGVnYWN5
Q2hhbGxlbmdlQ29tcGFyaXNvbihjaGFsbGVuZ2UsIGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBTdXBwb3J0IGVtcHR5IGNyZWRlbnRp
YWxzLiBDdXJyZW50bHksIGFuIGVtcHR5IGNyZWRlbnRpYWwgY2Fubm90IGJlIHN0b3JlZCBpbiBX
ZWJDb3JlIGNyZWRlbnRpYWwgc3RvcmFnZSwgYXMgdGhhdCdzIGVtcHR5IHZhbHVlIGZvciBpdHMg
bWFwLgpAQCAtNjA3LDcgKzYwNyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVx
dWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhCiAgICAgTE9H
KE5ldHdvcmssICJIYW5kbGUgJXAgcmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVk
ZW50aWFsIiwgdGhpcyk7CiAKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5pc051bGwoKSk7Ci0gICAg
aWYgKGNoYWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCisgICAgaWYgKCFBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFsRm9yV2ViS2l0TGVnYWN5Q2hhbGxlbmdlQ29t
cGFyaXNvbihjaGFsbGVuZ2UsIGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFtbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHNlbmRlcl0gY29udGludWVX
aXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmQtPm1fY3VycmVudE1h
Y0NoYWxsZW5nZV07CkBAIC02MTksNyArNjE5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVj
ZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW4K
IHsKICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCByZWNlaXZlZENhbmNlbGxhdGlvbiIsIHRo
aXMpOwogCi0gICAgaWYgKGNoYWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCisg
ICAgaWYgKCFBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVxdWFsRm9yV2ViS2l0TGVnYWN5
Q2hhbGxlbmdlQ29tcGFyaXNvbihjaGFsbGVuZ2UsIGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjbGllbnQoKSkKQEAgLTYzMSw3ICs2MzEsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFu
ZGxpbmcoY29uc3QgQXV0aGVudGljYXRpbwogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIHJl
Y2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyIsIHRoaXMpOwogCiAgICAgQVNT
RVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwotICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJy
ZW50V2ViQ2hhbGxlbmdlKQorICAgIGlmICghQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjpl
cXVhbEZvcldlYktpdExlZ2FjeUNoYWxsZW5nZUNvbXBhcmlzb24oY2hhbGxlbmdlLCBkLT5tX2N1
cnJlbnRXZWJDaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm47CiAKICAgICBbW2QtPm1fY3VycmVu
dE1hY0NoYWxsZW5nZSBzZW5kZXJdIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTpkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2VdOwpAQCAtNjQ0LDcgKzY0NCw3
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjCiAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAg
cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24iLCB0aGlzKTsKIAogICAgIEFTU0VSVCghY2hhbGxl
bmdlLmlzTnVsbCgpKTsKLSAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxs
ZW5nZSkKKyAgICBpZiAoIUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6ZXF1YWxGb3JXZWJL
aXRMZWdhY3lDaGFsbGVuZ2VDb21wYXJpc29uKGNoYWxsZW5nZSwgZC0+bV9jdXJyZW50V2ViQ2hh
bGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgW1tkLT5tX2N1cnJlbnRNYWNDaGFsbGVu
Z2Ugc2VuZGVyXSByZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6
ZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAyMDUyYWFjNmIzZGU2
ZTg2Y2M3OWU3OWZiOTc0MGNkZDBjMzZlMjgzLi5lOTY0NGYwNzVkYzZiYjdjODUzNzZlYmVlNTU1
OWJjM2I4ZmUzNmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMjg2LDkgKzEyODYsMTMgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrQ2FjaGUKIAogICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBuZXR3
b3JrTG9hZE1ldHJpY3M7CiAgICAgbmV0d29ya0xvYWRNZXRyaWNzLm1hcmtDb21wbGV0ZSgpOwot
ICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50ID0gMDsKLSAgICBu
ZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEJvZHlCeXRlc1NlbnQgPSAwOwotICAgIG5ldHdvcmtM
b2FkTWV0cmljcy5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQgPSAwOworICAgIGlmIChzaG91
bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkgeworICAgICAgICBhdXRvIGFkZGl0
aW9uYWxNZXRyaWNzID0gV2ViQ29yZTo6QWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0Zvcldl
Ykluc3BlY3Rvcjo6Y3JlYXRlKCk7CisgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0
SGVhZGVyQnl0ZXNTZW50ID0gMDsKKyAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlcXVlc3RC
b2R5Qnl0ZXNTZW50ID0gMDsKKyAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlc3BvbnNlSGVh
ZGVyQnl0ZXNSZWNlaXZlZCA9IDA7CisgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5hZGRpdGlv
bmFsTmV0d29ya0xvYWRNZXRyaWNzRm9yV2ViSW5zcGVjdG9yID0gV1RGTW92ZShhZGRpdGlvbmFs
TWV0cmljcyk7CisgICAgfQogICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZUJvZHlCeXRl
c1JlY2VpdmVkID0gMDsKICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5RGVjb2Rl
ZFNpemUgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggYjJiZGY1OWEwNTc4NGQxNTgzZmI3
MDI3NjVlY2I0MzhlZmMwN2VhYy4uMTk5NTYxNDY2Y2EyMjVjYTNiYjk2NTVmODcyYjZjYTUxMWNm
MjA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtODc4LDI4ICs4NzgsMjkgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKIAogICAgICAgICBpZiAobmV0d29ya0Rh
dGFUYXNrLT5zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkgewotICAgICAg
ICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnByaW9yaXR5ID0gdG9OZXR3b3JrTG9hZFByaW9yaXR5
KHRhc2sucHJpb3JpdHkpOworICAgICAgICAgICAgYXV0byBhZGRpdGlvbmFsTWV0cmljcyA9IFdl
YkNvcmU6OkFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I6OmNyZWF0
ZSgpOworICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnByaW9yaXR5ID0gdG9OZXR3b3Jr
TG9hZFByaW9yaXR5KHRhc2sucHJpb3JpdHkpOwogCiAjaWYgSEFWRShDRk5FVFdPUktfTUVUUklD
U19BUElTX1Y0KQogICAgICAgICAgICAgaWYgKGF1dG8gcG9ydCA9IFttLnJlbW90ZVBvcnQgdW5z
aWduZWRJbnRWYWx1ZV0pCi0gICAgICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlbW90
ZUFkZHJlc3MgPSBtYWtlU3RyaW5nKFN0cmluZyhtLnJlbW90ZUFkZHJlc3MpLCAnOicsIHBvcnQp
OworICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZW1vdGVBZGRyZXNzID0gbWFr
ZVN0cmluZyhTdHJpbmcobS5yZW1vdGVBZGRyZXNzKSwgJzonLCBwb3J0KTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVtb3RlQWRkcmVzcyA9
IG0ucmVtb3RlQWRkcmVzczsKKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVt
b3RlQWRkcmVzcyA9IG0ucmVtb3RlQWRkcmVzczsKICNlbHNlCiAgICAgICAgICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRy
aWNzLnJlbW90ZUFkZHJlc3MgPSBTdHJpbmcobS5fcmVtb3RlQWRkcmVzc0FuZFBvcnQpOworICAg
ICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlbW90ZUFkZHJlc3MgPSBTdHJpbmcobS5fcmVt
b3RlQWRkcmVzc0FuZFBvcnQpOwogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAjZW5kaWYKLSAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0
aW9uSWRlbnRpZmllciA9IFN0cmluZyhbbS5fY29ubmVjdGlvbklkZW50aWZpZXIgVVVJRFN0cmlu
Z10pOworICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPmNvbm5lY3Rpb25JZGVudGlmaWVy
ID0gU3RyaW5nKFttLl9jb25uZWN0aW9uSWRlbnRpZmllciBVVUlEU3RyaW5nXSk7CiAKICNpZiBI
QVZFKENGTkVUV09SS19ORUdPVElBVEVEX1NTTF9QUk9UT0NPTF9DSVBIRVIpCiAjaWYgSEFWRShD
Rk5FVFdPUktfTUVUUklDU19BUElTX1Y0KQotICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNz
LnRsc1Byb3RvY29sID0gc3RyaW5nRm9yVExTUHJvdG9jb2xWZXJzaW9uKCh0bHNfcHJvdG9jb2xf
dmVyc2lvbl90KVttLm5lZ290aWF0ZWRUTFNQcm90b2NvbFZlcnNpb24gdW5zaWduZWRTaG9ydFZh
bHVlXSk7Ci0gICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MudGxzQ2lwaGVyID0gc3RyaW5n
Rm9yVExTQ2lwaGVyU3VpdGUoKHRsc19jaXBoZXJzdWl0ZV90KVttLm5lZ290aWF0ZWRUTFNDaXBo
ZXJTdWl0ZSB1bnNpZ25lZFNob3J0VmFsdWVdKTsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRy
aWNzLT50bHNQcm90b2NvbCA9IHN0cmluZ0ZvclRMU1Byb3RvY29sVmVyc2lvbigodGxzX3Byb3Rv
Y29sX3ZlcnNpb25fdClbbS5uZWdvdGlhdGVkVExTUHJvdG9jb2xWZXJzaW9uIHVuc2lnbmVkU2hv
cnRWYWx1ZV0pOworICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnRsc0NpcGhlciA9IHN0
cmluZ0ZvclRMU0NpcGhlclN1aXRlKCh0bHNfY2lwaGVyc3VpdGVfdClbbS5uZWdvdGlhdGVkVExT
Q2lwaGVyU3VpdGUgdW5zaWduZWRTaG9ydFZhbHVlXSk7CiAjZWxzZQogICAgICAgICAgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAgIG5ldHdvcmtMb2Fk
TWV0cmljcy50bHNQcm90b2NvbCA9IHN0cmluZ0ZvclNTTFByb3RvY29sKG0uX25lZ290aWF0ZWRU
TFNQcm90b2NvbCk7Ci0gICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MudGxzQ2lwaGVyID0g
c3RyaW5nRm9yU1NMQ2lwaGVyKG0uX25lZ290aWF0ZWRUTFNDaXBoZXIpOworICAgICAgICAgICAg
YWRkaXRpb25hbE1ldHJpY3MtPnRsc1Byb3RvY29sID0gc3RyaW5nRm9yU1NMUHJvdG9jb2wobS5f
bmVnb3RpYXRlZFRMU1Byb3RvY29sKTsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT50
bHNDaXBoZXIgPSBzdHJpbmdGb3JTU0xDaXBoZXIobS5fbmVnb3RpYXRlZFRMU0NpcGhlcik7CiAg
ICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgogI2Vu
ZGlmCkBAIC05MDgsNyArOTA5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAgICAgICAgICAgICBbbS5yZXF1ZXN0LmFsbEhUVFBIZWFkZXJGaWVsZHMgZW51bWVyYXRlS2V5
c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKm5hbWUsIE5TU3RyaW5nICp2YWx1ZSwg
Qk9PTCAqKSB7CiAgICAgICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMuc2V0KFN0cmluZyhuYW1l
KSwgU3RyaW5nKHZhbHVlKSk7CiAgICAgICAgICAgICB9XTsKLSAgICAgICAgICAgIG5ldHdvcmtM
b2FkTWV0cmljcy5yZXF1ZXN0SGVhZGVycyA9IFdURk1vdmUocmVxdWVzdEhlYWRlcnMpOworICAg
ICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlcXVlc3RIZWFkZXJzID0gV1RGTW92ZShyZXF1
ZXN0SGVhZGVycyk7CiAKICAgICAgICAgICAgIHVpbnQ2NF90IHJlcXVlc3RIZWFkZXJCeXRlc1Nl
bnQgPSAwOwogICAgICAgICAgICAgdWludDY0X3QgcmVzcG9uc2VIZWFkZXJCeXRlc1JlY2VpdmVk
ID0gMDsKQEAgLTkyNSw5ICs5MjYsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAjZW5kaWYKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRy
aWNzLnJlcXVlc3RIZWFkZXJCeXRlc1NlbnQgPSByZXF1ZXN0SGVhZGVyQnl0ZXNTZW50OwotICAg
ICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RCb2R5Qnl0ZXNTZW50ID0gdGFzay5j
b3VudE9mQnl0ZXNTZW50OwotICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNl
SGVhZGVyQnl0ZXNSZWNlaXZlZCA9IHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZDsKKyAgICAg
ICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50ID0gcmVxdWVz
dEhlYWRlckJ5dGVzU2VudDsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZXF1ZXN0
Qm9keUJ5dGVzU2VudCA9IHRhc2suY291bnRPZkJ5dGVzU2VudDsKKyAgICAgICAgICAgIGFkZGl0
aW9uYWxNZXRyaWNzLT5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQgPSByZXNwb25zZUhlYWRl
ckJ5dGVzUmVjZWl2ZWQ7CisgICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MuYWRkaXRpb25h
bE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvciA9IFdURk1vdmUoYWRkaXRpb25hbE1l
dHJpY3MpOwogICAgICAgICB9CiAjaWYgSEFWRShDRk5FVFdPUktfTUVUUklDU19BUElTX1Y0KQog
ICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZCA9IG0u
Y291bnRPZlJlc3BvbnNlQm9keUJ5dGVzUmVjZWl2ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXgg
ZDMxOWViMTk1MjA4OGM5YjIyMjgzM2VjNjU3ZjExYjA0NjYwMjExMS4uMDU1ZTE1MDRjMzg1MGZm
MjkzZmQ4NTIwMTk3NDZkODQ5MGRlZTIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMTIxMCw2
ICsxMjEwLDEzIEBAIHN0YXRpYyBTdHJpbmcgdGxzUHJvdG9jb2xWZXJzaW9uVG9TdHJpbmcoR1Rs
c1Byb3RvY29sVmVyc2lvbiB2ZXJzaW9uKQogfQogI2VuZGlmCiAKK1dlYkNvcmU6OkFkZGl0aW9u
YWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3ImIE5ldHdvcmtEYXRhVGFza1NvdXA6
OmFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IoKQoreworICAgIGlm
ICghbV9uZXR3b3JrTG9hZE1ldHJpY3MuYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0Zvcldl
Ykluc3BlY3RvcikKKyAgICAgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MuYWRkaXRpb25hbE5ldHdv
cmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvciA9IFdlYkNvcmU6OkFkZGl0aW9uYWxOZXR3b3Jr
TG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3I6OmNyZWF0ZSgpOworICAgIHJldHVybiAqbV9uZXR3
b3JrTG9hZE1ldHJpY3MuYWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3Rv
cjsKK30KKwogdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRHZXRIZWFkZXJzKCkKIHsKICAg
ICAvLyBXZSBhcmUgYSBiaXQgbW9yZSBjb25zZXJ2YXRpdmUgd2l0aCB0aGUgcGVyc2lzdGVudCBj
cmVkZW50aWFsIHN0b3JhZ2UgdGhhbiB0aGUgc2Vzc2lvbiBzdG9yZSwKQEAgLTEyMzMsNiArMTI0
MCw4IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0SGVhZGVycygpCiAgICAgLy8g
aXMgdGhlIGZpcnN0IG9uZSB3ZSByZWNlaXZlIGFmdGVyIHN0YXJ0aW5nLCBzbyB3ZSB1c2UgaXQg
YWxzbyB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlCiAgICAgLy8gcmVxdWVzdCBoZWFkZXJz
LgogICAgIGlmIChzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkgeworICAg
ICAgICBhdXRvJiBhZGRpdGlvbmFsTWV0cmljcyA9IGFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJp
Y3NGb3JXZWJJbnNwZWN0b3IoKTsKKwogICAgICAgICBIVFRQSGVhZGVyTWFwIHJlcXVlc3RIZWFk
ZXJzOwogICAgICAgICBTb3VwTWVzc2FnZUhlYWRlcnNJdGVyIGhlYWRlcnNJdGVyOwogICAgICAg
ICBzb3VwX21lc3NhZ2VfaGVhZGVyc19pdGVyX2luaXQoJmhlYWRlcnNJdGVyLCBzb3VwX21lc3Nh
Z2VfZ2V0X3JlcXVlc3RfaGVhZGVycyhtX3NvdXBNZXNzYWdlLmdldCgpKSk7CkBAIC0xMjQwLDE5
ICsxMjQ5LDE5IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0SGVhZGVycygpCiAg
ICAgICAgIGNvbnN0IGNoYXIqIGhlYWRlclZhbHVlOwogICAgICAgICB3aGlsZSAoc291cF9tZXNz
YWdlX2hlYWRlcnNfaXRlcl9uZXh0KCZoZWFkZXJzSXRlciwgJmhlYWRlck5hbWUsICZoZWFkZXJW
YWx1ZSkpCiAgICAgICAgICAgICByZXF1ZXN0SGVhZGVycy5zZXQoU3RyaW5nKGhlYWRlck5hbWUp
LCBTdHJpbmcoaGVhZGVyVmFsdWUpKTsKLSAgICAgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVx
dWVzdEhlYWRlcnMgPSBXVEZNb3ZlKHJlcXVlc3RIZWFkZXJzKTsKKyAgICAgICAgYWRkaXRpb25h
bE1ldHJpY3MucmVxdWVzdEhlYWRlcnMgPSBXVEZNb3ZlKHJlcXVlc3RIZWFkZXJzKTsKIAotICAg
ICAgICBtX25ldHdvcmtMb2FkTWV0cmljcy5wcmlvcml0eSA9IHRvTmV0d29ya0xvYWRQcmlvcml0
eShzb3VwX21lc3NhZ2VfZ2V0X3ByaW9yaXR5KG1fc291cE1lc3NhZ2UuZ2V0KCkpKTsKKyAgICAg
ICAgYWRkaXRpb25hbE1ldHJpY3MucHJpb3JpdHkgPSB0b05ldHdvcmtMb2FkUHJpb3JpdHkoc291
cF9tZXNzYWdlX2dldF9wcmlvcml0eShtX3NvdXBNZXNzYWdlLmdldCgpKSk7CiAjaWYgIVVTRShT
T1VQMikKLSAgICAgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MuY29ubmVjdGlvbklkZW50aWZpZXIg
PSBTdHJpbmc6Om51bWJlcihzb3VwX21lc3NhZ2VfZ2V0X2Nvbm5lY3Rpb25faWQobV9zb3VwTWVz
c2FnZS5nZXQoKSkpOworICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy5jb25uZWN0aW9uSWRlbnRp
ZmllciA9IFN0cmluZzo6bnVtYmVyKHNvdXBfbWVzc2FnZV9nZXRfY29ubmVjdGlvbl9pZChtX3Nv
dXBNZXNzYWdlLmdldCgpKSk7CiAgICAgICAgIGF1dG8qIGFkZHJlc3MgPSBzb3VwX21lc3NhZ2Vf
Z2V0X3JlbW90ZV9hZGRyZXNzKG1fc291cE1lc3NhZ2UuZ2V0KCkpOwogICAgICAgICBpZiAoR19J
U19JTkVUX1NPQ0tFVF9BRERSRVNTKGFkZHJlc3MpKSB7CiAgICAgICAgICAgICBHVW5pcXVlUHRy
PGNoYXI+IGlwQWRkcmVzcyhnX2luZXRfYWRkcmVzc190b19zdHJpbmcoZ19pbmV0X3NvY2tldF9h
ZGRyZXNzX2dldF9hZGRyZXNzKEdfSU5FVF9TT0NLRVRfQUREUkVTUyhhZGRyZXNzKSkpKTsKLSAg
ICAgICAgICAgIG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlbW90ZUFkZHJlc3MgPSBtYWtlU3RyaW5n
KGlwQWRkcmVzcy5nZXQoKSwgJzonLCBnX2luZXRfc29ja2V0X2FkZHJlc3NfZ2V0X3BvcnQoR19J
TkVUX1NPQ0tFVF9BRERSRVNTKGFkZHJlc3MpKSk7CisgICAgICAgICAgICBhZGRpdGlvbmFsTWV0
cmljcy5yZW1vdGVBZGRyZXNzID0gbWFrZVN0cmluZyhpcEFkZHJlc3MuZ2V0KCksICc6JywgZ19p
bmV0X3NvY2tldF9hZGRyZXNzX2dldF9wb3J0KEdfSU5FVF9TT0NLRVRfQUREUkVTUyhhZGRyZXNz
KSkpOwogICAgICAgICB9Ci0gICAgICAgIG1fbmV0d29ya0xvYWRNZXRyaWNzLnRsc1Byb3RvY29s
ID0gdGxzUHJvdG9jb2xWZXJzaW9uVG9TdHJpbmcoc291cF9tZXNzYWdlX2dldF90bHNfcHJvdG9j
b2xfdmVyc2lvbihtX3NvdXBNZXNzYWdlLmdldCgpKSk7Ci0gICAgICAgIG1fbmV0d29ya0xvYWRN
ZXRyaWNzLnRsc0NpcGhlciA9IFN0cmluZzo6ZnJvbVVURjgoc291cF9tZXNzYWdlX2dldF90bHNf
Y2lwaGVyc3VpdGVfbmFtZShtX3NvdXBNZXNzYWdlLmdldCgpKSk7Ci0gICAgICAgIG1fbmV0d29y
a0xvYWRNZXRyaWNzLnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCA9IHNvdXBfbWVzc2FnZV9t
ZXRyaWNzX2dldF9yZXNwb25zZV9oZWFkZXJfYnl0ZXNfcmVjZWl2ZWQobWV0cmljcyk7CisgICAg
ICAgIGFkZGl0aW9uYWxNZXRyaWNzLnRsc1Byb3RvY29sID0gdGxzUHJvdG9jb2xWZXJzaW9uVG9T
dHJpbmcoc291cF9tZXNzYWdlX2dldF90bHNfcHJvdG9jb2xfdmVyc2lvbihtX3NvdXBNZXNzYWdl
LmdldCgpKSk7CisgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLnRsc0NpcGhlciA9IFN0cmluZzo6
ZnJvbVVURjgoc291cF9tZXNzYWdlX2dldF90bHNfY2lwaGVyc3VpdGVfbmFtZShtX3NvdXBNZXNz
YWdlLmdldCgpKSk7CisgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLnJlc3BvbnNlSGVhZGVyQnl0
ZXNSZWNlaXZlZCA9IHNvdXBfbWVzc2FnZV9tZXRyaWNzX2dldF9yZXNwb25zZV9oZWFkZXJfYnl0
ZXNfcmVjZWl2ZWQobWV0cmljcyk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTEyNjgsNyArMTI3Nyw3
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6d3JvdGVIZWFkZXJzQ2FsbGJhY2soU291cE1l
c3NhZ2UqIHNvdXBNZXNzYWdlLCBOZXR3b3JrCiAgICAgfQogICAgIEFTU0VSVCh0YXNrLT5tX3Nv
dXBNZXNzYWdlLmdldCgpID09IHNvdXBNZXNzYWdlKTsKICAgICBhdXRvKiBtZXRyaWNzID0gc291
cF9tZXNzYWdlX2dldF9tZXRyaWNzKHNvdXBNZXNzYWdlKTsKLSAgICB0YXNrLT5tX25ldHdvcmtM
b2FkTWV0cmljcy5yZXF1ZXN0SGVhZGVyQnl0ZXNTZW50ID0gc291cF9tZXNzYWdlX21ldHJpY3Nf
Z2V0X3JlcXVlc3RfaGVhZGVyX2J5dGVzX3NlbnQobWV0cmljcyk7CisgICAgdGFzay0+YWRkaXRp
b25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcigpLnJlcXVlc3RIZWFkZXJCeXRl
c1NlbnQgPSBzb3VwX21lc3NhZ2VfbWV0cmljc19nZXRfcmVxdWVzdF9oZWFkZXJfYnl0ZXNfc2Vu
dChtZXRyaWNzKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjp3cm90ZUJvZHlDYWxs
YmFjayhTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIE5ldHdvcmtEYXRhVGFza1NvdXAqIHRhc2sp
CkBAIC0xMjc5LDcgKzEyODgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Ondyb3RlQm9k
eUNhbGxiYWNrKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgTmV0d29ya0RhdAogICAgIH0KICAg
ICBBU1NFUlQodGFzay0+bV9zb3VwTWVzc2FnZS5nZXQoKSA9PSBzb3VwTWVzc2FnZSk7CiAgICAg
YXV0byogbWV0cmljcyA9IHNvdXBfbWVzc2FnZV9nZXRfbWV0cmljcyhzb3VwTWVzc2FnZSk7Ci0g
ICAgdGFzay0+bV9uZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEJvZHlCeXRlc1NlbnQgPSBzb3Vw
X21lc3NhZ2VfbWV0cmljc19nZXRfcmVxdWVzdF9ib2R5X2J5dGVzX3NlbnQobWV0cmljcyk7Cisg
ICAgdGFzay0+YWRkaXRpb25hbE5ldHdvcmtMb2FkTWV0cmljc0ZvcldlYkluc3BlY3RvcigpLnJl
cXVlc3RCb2R5Qnl0ZXNTZW50ID0gc291cF9tZXNzYWdlX21ldHJpY3NfZ2V0X3JlcXVlc3RfYm9k
eV9ieXRlc19zZW50KG1ldHJpY3MpOwogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Omdv
dEJvZHlDYWxsYmFjayhTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIE5ldHdvcmtEYXRhVGFza1Nv
dXAqIHRhc2spCkBAIC0xNTE1LDcgKzE1MjQsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6
Om5ldHdvcmtFdmVudChHU29ja2V0Q2xpZW50RXZlbnQgZXZlbnQsIEdJT1N0cmVhbSogc3RyZQog
ICAgICAgICAgICAgR1JlZlB0cjxHU29ja2V0QWRkcmVzcz4gYWRkcmVzcyA9IGFkb3B0R1JlZihn
X3NvY2tldF9jb25uZWN0aW9uX2dldF9yZW1vdGVfYWRkcmVzcyhHX1NPQ0tFVF9DT05ORUNUSU9O
KHN0cmVhbSksIG51bGxwdHIpKTsKICAgICAgICAgICAgIGlmIChHX0lTX0lORVRfU09DS0VUX0FE
RFJFU1MoYWRkcmVzcy5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBHVW5pcXVlUHRyPGNoYXI+
IGlwQWRkcmVzcyhnX2luZXRfYWRkcmVzc190b19zdHJpbmcoZ19pbmV0X3NvY2tldF9hZGRyZXNz
X2dldF9hZGRyZXNzKEdfSU5FVF9TT0NLRVRfQUREUkVTUyhhZGRyZXNzLmdldCgpKSkpKTsKLSAg
ICAgICAgICAgICAgICBtX25ldHdvcmtMb2FkTWV0cmljcy5yZW1vdGVBZGRyZXNzID0gbWFrZVN0
cmluZyhpcEFkZHJlc3MuZ2V0KCksICc6JywgZ19pbmV0X3NvY2tldF9hZGRyZXNzX2dldF9wb3J0
KEdfSU5FVF9TT0NLRVRfQUREUkVTUyhhZGRyZXNzLmdldCgpKSkpOworICAgICAgICAgICAgICAg
IGFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IoKS5yZW1vdGVBZGRy
ZXNzID0gbWFrZVN0cmluZyhpcEFkZHJlc3MuZ2V0KCksICc6JywgZ19pbmV0X3NvY2tldF9hZGRy
ZXNzX2dldF9wb3J0KEdfSU5FVF9TT0NLRVRfQUREUkVTUyhhZGRyZXNzLmdldCgpKSkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIC8vIFdlYiBUaW1pbmcgY29uc2lkZXJzIHRo
YXQgY29ubmVjdGlvbiB0aW1lIGludm9sdmVzIGRucywgcHJveHkgJiBUTFMgbmVnb3RpYXRpb24u
Li4KQEAgLTE2MzQsNyArMTY0Myw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6cmVzdGFy
dGVkQ2FsbGJhY2soU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBOZXR3b3JrRGF0CiAKIHZvaWQg
TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVzdGFydCgpCiB7Ci0gICAgbV9uZXR3b3JrTG9hZE1l
dHJpY3MgPSB7IH07CisgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MgPSBOZXR3b3JrTG9hZE1ldHJp
Y3M6OmVtcHR5TWV0cmljcygpOwogI2lmIFVTRShTT1VQMikKICAgICBtX25ldHdvcmtMb2FkTWV0
cmljcy5mZXRjaFN0YXJ0ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3Vw
LmgKaW5kZXggYzMzMzA2NTFkNjYyNGRhZGQ0OTZjNjg5ZmIwOGMxNDQzYTFhNWU3MS4uY2ZlZDZi
MzgyNjMxOWU4NTgyNmY4ZjQxZmIxMDAxMGIwY2EwOTEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCkBAIC0x
ODEsNiArMTgxLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVhZERhdGFVUkwoc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmKTsKIAorICAgIFdlYkNv
cmU6OkFkZGl0aW9uYWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3ImIGFkZGl0aW9u
YWxOZXR3b3JrTG9hZE1ldHJpY3NGb3JXZWJJbnNwZWN0b3IoKTsKKwogICAgIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBtX2ZyYW1lSUQ7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9w
YWdlSUQ7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdXNwZW5kZWQgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZTFlNTlhOTM5YjYx
YWIzZTU4N2FiODNmYjI4ZThmOWVkMjRlM2MzZC4uNTQ1OTc1YTBkZjE1MDFiZTg4MTM1NDlhOTAx
YWRkMDcxYmUwMWY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKQEAgLTkwNSwxNiArOTA1LDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpJbnB1dE1vZGU+IHsKICAgICA+OwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5PiB7Ci0gICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eSwK
LSAgICAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eTo6TG93LAotICAgICAgICBXZWJD
b3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5OjpNZWRpdW0sCi0gICAgICAgIFdlYkNvcmU6Ok5ldHdv
cmtMb2FkUHJpb3JpdHk6OkhpZ2gsCi0gICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3Jp
dHk6OlVua25vd24KLSAgICA+OwotfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAogICAgICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>