<?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>220843</bug_id>
          
          <creation_ts>2021-01-21 23:59:38 -0800</creation_ts>
          <short_desc>WebGL power preference and discrete/internal gpu selection implemented incorrectly with ANGLE</short_desc>
          <delta_ts>2021-08-02 01:02:42 -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>WebGL</component>
          <version>Other</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=227408</see_also>
          <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>
          <dependson>220845</dependson>
    
    <dependson>220852</dependson>
    
    <dependson>220989</dependson>
          <blocked>220844</blocked>
    
    <blocked>220846</blocked>
    
    <blocked>228298</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kbr</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>kpiddington</cc>
    
    <cc>marcin.ignac</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1721497</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-21 23:59:38 -0800</bug_when>
    <thetext>GraphicsContextGLOpenGLCocoa is changing the GPU behind ANGLE&apos;s back. This invalidates ANGLE assumptions.
The context gpu is changed based on which window the context is being used on. This cannot work with ANGLE, as all the contexts share one underlying implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721502</commentid>
    <comment_count>1</comment_count>
      <attachid>418112</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-22 00:20:10 -0800</bug_when>
    <thetext>Created attachment 418112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721505</commentid>
    <comment_count>2</comment_count>
      <attachid>418114</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-22 00:27:16 -0800</bug_when>
    <thetext>Created attachment 418114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721532</commentid>
    <comment_count>3</comment_count>
      <attachid>418123</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-22 02:33:13 -0800</bug_when>
    <thetext>Created attachment 418123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721541</commentid>
    <comment_count>4</comment_count>
      <attachid>418129</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-22 02:59:28 -0800</bug_when>
    <thetext>Created attachment 418129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721545</commentid>
    <comment_count>5</comment_count>
      <attachid>418130</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-22 03:05:59 -0800</bug_when>
    <thetext>Created attachment 418130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721565</commentid>
    <comment_count>6</comment_count>
      <attachid>418138</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-22 04:35:30 -0800</bug_when>
    <thetext>Created attachment 418138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721585</commentid>
    <comment_count>7</comment_count>
      <attachid>418149</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-22 08:12:53 -0800</bug_when>
    <thetext>Created attachment 418149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721649</commentid>
    <comment_count>8</comment_count>
      <attachid>418149</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-01-22 11:28:55 -0800</bug_when>
    <thetext>Comment on attachment 418149
Patch

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

Looks like a good improvement overall. A couple of comments. Would like to see what else needs to change in order to pass the tests.

&gt; Source/WebCore/platform/graphics/mac/GraphicsChecksMac.cpp:2
&gt; + * Copyright (C) 2018 Apple Inc. All rights reserved.

2021? Here and throughout for the new files.

&gt; Source/WebCore/platform/graphics/mac/ScopedHighPerformanceGPURequest.h:44
&gt; +        SwitchingGPUClient::singletonIfExists()-&gt;releaseHighPerformanceGPU();

Won&apos;t this crash if the singleton doesn&apos;t exist?

&gt; Source/WebCore/platform/graphics/mac/ScopedHighPerformanceGPURequest.h:49
&gt; +            SwitchingGPUClient::singletonIfExists()-&gt;releaseHighPerformanceGPU();

Here too.

&gt; Source/WebCore/platform/graphics/mac/ScopedHighPerformanceGPURequest.h:61
&gt; +        return { 0 };

This form of calling the 1-arg constructor threw me for a bit of a loop...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721682</commentid>
    <comment_count>9</comment_count>
      <attachid>418170</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-22 12:33:21 -0800</bug_when>
    <thetext>Created attachment 418170
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721690</commentid>
    <comment_count>10</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-22 12:51:23 -0800</bug_when>
    <thetext>(In reply to Kenneth Russell from comment #8)
&gt; Comment on attachment 418149 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=418149&amp;action=review
&gt; 
&gt; Looks like a good improvement overall. A couple of comments. Would like to
&gt; see what else needs to change in order to pass the tests.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/mac/GraphicsChecksMac.cpp:2
&gt; &gt; + * Copyright (C) 2018 Apple Inc. All rights reserved.
&gt; 
&gt; 2021? Here and throughout for the new files.

The code is from 2018 file, though.. I&apos;ll change.

&gt; &gt; Source/WebCore/platform/graphics/mac/ScopedHighPerformanceGPURequest.h:44
&gt; &gt; +        SwitchingGPUClient::singletonIfExists()-&gt;releaseHighPerformanceGPU();
&gt; 
&gt; Won&apos;t this crash if the singleton doesn&apos;t exist?

If it doesn&apos;t exist, nothing gets acquired..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721692</commentid>
    <comment_count>11</comment_count>
      <attachid>418171</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-22 12:52:51 -0800</bug_when>
    <thetext>Created attachment 418171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722412</commentid>
    <comment_count>12</comment_count>
      <attachid>418375</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-26 00:02:38 -0800</bug_when>
    <thetext>Created attachment 418375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722468</commentid>
    <comment_count>13</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-26 05:25:40 -0800</bug_when>
    <thetext>I did my best to verify this based on the logging, for the time being until the underlying things are fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722473</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-26 05:44:05 -0800</bug_when>
    <thetext>Committed r271880: &lt;https://trac.webkit.org/changeset/271880&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418375.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722474</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-26 05:45:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/73613562&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723778</commentid>
    <comment_count>16</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-01-29 10:26:45 -0800</bug_when>
    <thetext>This is actually:
&lt;rdar://problem/70979077&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779342</commentid>
    <comment_count>17</comment_count>
    <who name="Marcin Ignac">marcin.ignac</who>
    <bug_when>2021-07-24 15:51:05 -0700</bug_when>
    <thetext>Has this ever shipped? Both Safari Version 14.1.1 (16611.2.7.1.4) and Safari TP Release 128 (Safari 15.0, WebKit 16612.1.22.11.3) are unable to select high-performance gpu on Big Sur 11.4 (20F71).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779546</commentid>
    <comment_count>18</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-07-26 13:47:27 -0700</bug_when>
    <thetext>How are you determining whether the discrete GPU was selected? With ANGLE&apos;s Metal backend - now the default in WebKit / Safari - I don&apos;t think there will be a system-wide GPU switch any more when the discrete GPU is used for WebGL. However, testing indicates differently - I&apos;ll file a bug dependent on this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779553</commentid>
    <comment_count>19</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-07-26 13:54:52 -0700</bug_when>
    <thetext>Note, have filed Bug 228298 with a small test case - not sure whether things are working correctly in the Metal backend - let&apos;s follow up on that bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781204</commentid>
    <comment_count>20</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-08-02 01:02:42 -0700</bug_when>
    <thetext>It shipped and then broke again with Metal and then fixed in bug 227408 and currently shipped with previews.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418112</attachid>
            <date>2021-01-22 00:20:10 -0800</date>
            <delta_ts>2021-01-22 00:34:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220843-20210122102006.patch</filename>
            <type>text/plain</type>
            <size>59706</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWMyOTFmOTQyNmU1YTY2
ZjBhYTY1ZmJmNTM0ZGUzM2NkOWIyYzE1ZS4uYWUxMmNhMThlOGExNTdiNjc3MDdhODQwNGJjN2Qy
MzRkZjBhNGQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTAxLTIyICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgcG93ZXIg
cHJlZmVyZW5jZSBhbmQgZGlzY3JldGUvaW50ZXJuYWwgZ3B1IHNlbGVjdGlvbiBpbXBsZW1lbnRl
ZCBpbmNvcnJlY3RseSB3aXRoIEFOR0xFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjA4NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgQU5HTEUgZXh0ZW5zaW9uIEVHTF9BTkdMRV9wb3dlcl9wcmVm
ZXJlbmNlIHRvIHNpZ25hbCB0byBBTkdMRSB0aGF0IHRoZSB1bmRlcmx5aW5nCisgICAgICAgIENH
TCBjb250ZXh0IHNob3VsZCBiZSB1cGRhdGVkIGFzIGEgcmVzcG9uc2UgdG8gZGlzcGxheSByZWNv
bmZpZ3VyYXRpb24gc2lnbmFsLgorICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCBBTkdMRSBzdGF0
ZSBzdGF5cyBjb25zaXN0ZW50IHdpdGggdGhlIGFjdHVhbCBDR0wgY29udGV4dCBiZWhhdmlvciwg
YXMKKyAgICAgICAgd2UgZG9uJ3QgY2hhbmdlIHRoZSBjb250ZXh0IGJlaGluZCBBTkdMRSdzIGJh
Y2suCisKKyAgICAgICAgUmVtb3ZlIHRoZSBmZWF0dXJlIHdoZXJlIHRoZSBjb250ZXh0IEdQVSBp
cyBzZWxlY3RlZCBiYXNlZCBvbiB0aGUgZGlzcGxheSB0aGUgd2luZG93IGlzCisgICAgICAgIG9u
LiBUaGlzIGNhbm5vdCB3b3JrIHdpdGggdGhlIGxvZ2ljIG9mICJwb3dlclByZWZlcmVuY2UgPSAi
aGlnaC1wZXJmb3JtYW5jZSIgZ29lcyB0bworICAgICAgICBkaXNjcmV0ZSBHUFUiLiBBbHNvLCB0
aGlzIGNhbm5vdCB3b3JrIHdpdGggQU5HTEUgYXQgYWxsLCBzaW5jZSBhbGwgY29udGV4dHMgYXJl
IGJhY2tlZAorICAgICAgICBieSBhIHNpbmdsZSBwbGF0Zm9ybSBjb250ZXh0LiBUaHVzIGFsbCBj
b250ZXh0cyB3aWxsIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIEdQVS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgZHVlIHRvIHRoZSB0ZXN0IHJ1bm5lciBtaXNzaW5nIGZlYXR1cmVzLiBUaGUgYnVn
IGJsb2NrZXJzIHRyYWNrIHRoZSB0ZXN0aW5nLgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21h
a2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0hpZ2hQZXJmb3JtYW5jZUNv
bnRleHQpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250
ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZGlzcGxheVdhc1JlY29uZmlndXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjphdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6
Omhhc011eENhcGFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6aGFzTG93QW5kSGlnaFBvd2Vy
R1BVcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFj
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1Njb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oLgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6U2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0Ojp+U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0OjpvcGVyYXRv
cj0pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6
YWNxdWlyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNs
aWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnJlbW92ZUNv
bnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisK
IDIwMjEtMDEtMTUgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBWDogaW5jcmVtZW50L2RlY3JlbWVudCBzeW50aGV0aWMgYXJyb3cgZXZlbnRzIGRvbid0
IHdvcmsgaW4gQVJJQSBzbGlkZXIgZXhhbXBsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTU5ZmYyOTRlYjdkNmNl
Nzk2ZjJlMjkwYWIxNzU5MGYxNTNhODM0YS4uOTMwODM1YzI1YTZiZWQ2NTllZDc4NjQ0Mjg2MDc0
NTMxYzFlZmZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wMS0yMiAgS2ltbW8g
S2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIHBvd2VyIHBy
ZWZlcmVuY2UgYW5kIGRpc2NyZXRlL2ludGVybmFsIGdwdSBzZWxlY3Rpb24gaW1wbGVtZW50ZWQg
aW5jb3JyZWN0bHkgd2l0aCBBTkdMRQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwODQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTW92ZSB0aGUgaGlnaC1wZXJmb3JtYW5jZSBHUFUgc2h1dGRvd24gdGlt
ZXIgZnJvbSBpbmRpdmlkdWFsIHdlYiBwcm9jZXNzZXMgdG8gdGhlIG1haW4gY2xhc3MKKyAgICAg
ICAgaW4gdGhlIHVpIHByb2Nlc3MuIFRoaXMgc2ltcGxpZmllcyB0aGUgaW1wbGVtZW50YXRpb24g
YW5kIHJlZHVjZXMgdGhlIG51bWJlciBvZiB0aW1lcnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OkhpZ2hQZXJm
b3JtYW5jZUdQVU1hbmFnZXI6OkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpyZW1vdmVQcm9jZXNzUmVxdWlyaW5n
SGlnaFBlcmZvcm1hbmNlKToKKyAgICAgICAgKFdlYktpdDo6SGlnaFBlcmZvcm1hbmNlR1BVTWFu
YWdlcjo6dXBkYXRlU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlN3aXRj
aGluZ0dQVUNsaWVudDo6cmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlN3aXRjaGluZ0dQVUNsaWVudDo6cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xp
ZW50Lmg6CisKIDIwMjEtMDEtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNjc3NjMpIFVwbG9hZGluZyB6aXBwZWQg
ZGlyZWN0b3JpZXMgZG9lcyBub3Qgd29yayBvbiBpT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UK
aW5kZXggYWM3MDE1NDk5Nzk5ZTRmYjRlZTJhMGRlMDFiNDM1MTJiMDlhMWY4ZS4uY2FkMjY0NDlj
NzRjODVjYWNiOTY1YjM5YzhmYjc1MjkwMWZjYTZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UKQEAgLTM0MCw2ICszNDAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRQb2ludE1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9GbG9hdFNpemVNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3ND
aGVja3NNYWMuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvSW50UG9pbnRNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDNiZTE3NThjZDg3
NTUzOWFjN2QyYzZkYWEwNzhmMGNiMzAyYzg3MTMuLmU4N2Q0ZGQwNzlhNTVmNjlkMjE3M2JkZjEx
MmMyZWY5ZjlhNmVjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNDE4LDYgKzQxOCw3
IEBAIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRQb2ludE1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0Zsb2F0U2l6ZU1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDaGVja3NNYWMuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ltYWdlTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50UG9pbnRNYWMubW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0
MTlhMDkxMTg0MzFiM2JmYmVmNWYwMDY2YzAxMzA0MjJmMDQ3ZWNmLi41NjY4ZDc3NDA2YmVmZDhl
MzQzMzBkODYzMmNlZDFhNzUwYzY0YmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMjU3LDYgKzIyNTcsOSBAQAogCQk3Qjkw
NDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTA0MTZF
MjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQjM0QTE3
MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1
Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovOyB9Owog
CQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJh
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JC
MzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QkI2
ODBCMjI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCNjgwQjAy
NUJBMEQ0QTAwMkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QkI2ODBCNjI1
QkExQUUyMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCNjgwQjQyNUJBMUFF
MTAwMkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLzsgfTsKKwkJ
N0JCNjgwQkEyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2ODBCODI1QkExQkU0MDAy
Qjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyogSlNTVkdH
cmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5o
ICovOyB9OwogCQk3QzAyOUM2RTI0OTNDOEY4MDAyNjgyMDQgLyogQ29sb3JUeXBlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwMjlDNkQyNDkzQzhG
ODAwMjY4MjA0IC8qIENvbG9yVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QzE4NDNGRTFDOEI3MjgzMDAyRUI5NzMgLyogQXV0b2ZpbGwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0M0ZD
MUM4QjcyODMwMDJFQjk3MyAvKiBBdXRvZmlsbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI4NSw2ICsxMDI4OCwxMCBAQAogCQk3QkIzNEEx
NjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRp
bGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYw
MDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJ
bWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQjY4MEIw
MjVCQTBENEEwMDJCODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJl
cXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCNjgwQjQyNUJBMUFFMTAw
MkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkI2ODBCNzI1QkExQkUzMDAyQjg3MzggLyog
R3JhcGhpY3NDaGVja3NNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR3JhcGhpY3NDaGVja3NNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QkI2ODBCODI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0MwMTFGM0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdzLmNwcC5lcmIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2V0dGlu
Z3MuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0UyNEZBRDM2
MDAwNUJFRjEwIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnRl
cm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNjQ3Myw2ICsyNjQ4MCw4IEBACiAJCUIyNzUzNTQ5MEIwNTM4MTQwMDJDRTY0RiAvKiBt
YWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTdCQjY4
MEI3MjVCQTFCRTMwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5jcHAgKi8sCisJCQkJN0JC
NjgwQjgyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8sCiAJCQkJRURF
M0E0RkYwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggKi8sCiAJCQkJQjI3NTM1NEEwQjA1
MzgxNDAwMkNFNjRGIC8qIENvbG9yTWFjLm1tICovLAogCQkJCTM3QzIzODIwMTA5OEM4NDIwMEVG
OUY3MiAvKiBDb21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbSAqLywKQEAgLTI2NDg0LDEx
ICsyNjQ5MywxMyBAQAogCQkJCUIyQUZGQzc2MEQwMEE1QzEwMDMwMDc0RCAvKiBGb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmggKi8sCiAJCQkJQjI3NTM1OEQwQjA1M0E2NjAwMkNFNjRGIC8qIEljb25N
YWMubW0gKi8sCiAJCQkJQjI3NTM1NEUwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlTWFjLm1tICov
LAorCQkJCTdCQjY4MEI0MjVCQTFBRTEwMDJCODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VH
UFVSZXF1ZXN0LmggKi8sCiAJCQkJQjI3NTM1NEYwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50
TWFjLm1tICovLAogCQkJCUIyNzUzNTUxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplTWFjLm1t
ICovLAogCQkJCTJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAvKiBQREZEb2N1bWVudEltYWdlTWFj
Lm1tICovLAogCQkJCTE2M0U4OEY1MTE4QTM5RDIwMEVEOTIzMSAvKiBTaW1wbGVGb250RGF0YUNv
cmVUZXh0LmNwcCAqLywKIAkJCQlDMTFBOUVEMjIxNDA1NzhCMDBDRkIyMEEgLyogU3dpdGNoaW5n
R1BVQ2xpZW50LmNwcCAqLywKKwkJCQk3QkI2ODBCMDI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVk
SGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovLAogCQkJCUMxMUE5RUNEMjE0MDNBNUMwMENG
QjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCAqLywKIAkJCQk3QTIyNzMxRjIwQzlGOURBMDBE
QjFERUYgLyogV2ViS2l0TlNJbWFnZUV4dHJhcy5oICovLAogCQkJCTdBMjI3MzFFMjBDOUY5RDkw
MERCMURFRiAvKiBXZWJLaXROU0ltYWdlRXh0cmFzLm1tICovLApAQCAtMzE2OTMsNiArMzE3MDQs
NyBAQAogCQkJCTk0REU1QzhFMUQ4MDgwMjcwMDE2NEYyQSAvKiBDU1NTZWxlY3RvclBhcnNlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRTgwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1NoYWRv
d1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkUwRjBBMTk5MTFDMDA3RkI4QzUgLyog
Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JCNjgwQjYyNUJBMUFF
MjAwMkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4MEU2RDBDMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NTdHlsZVJ1bGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4RUE4MDA3MEExOTUxNkUwMEE4RUY1RiAvKiBDU1NTdHlsZVNoZWV0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NERFNUM5MjFEODMwMTFEMDAxNjRGMkEgLyogQ1NTU3Vw
cG9ydHNQYXJzZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzIwMzMsNiArMzIwNDUsNyBAQAogCQkJ
CTUxN0E1MzVCMUY1ODhBNEMwMERDREMwQSAvKiBGZXRjaEJvZHlDb25zdW1lci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDEyOUM5OTcxRjU5Qjk2MzAwOUQ3NDAzIC8qIEZldGNoQm9keVNvdXJjZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDFEMTI5REIxRjNEMTQzODAwRDE1RTQ3IC8qIEZldGNoSGVh
ZGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JCNjgwQjIyNUJBMEQ0QTAwMkI4NzM4IC8qIFNj
b3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkUw
QjNBMjA5QkMzQ0IwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNFQkI4QzMzMjA3ODZEQ0IwMDAzOTU0NyAvKiBGZXRjaElkaW9tcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDE2MUUyRDUxRkU0OERDNTAwRUMyRTk2IC8qIEZldGNoTG9hZGVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMzODM1LDYgKzMzODQ4LDcgQEAKIAkJCQk4NTRGRTczNTBBMjI5N0JFMDA1
OEQ3QUQgLyogTm9kZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIxQjA5NzdE
M0MwMDA1ODI2RDkgLyogTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTYzMTg5QUUzMEU4
M0EzMzMwMDAxMkU0MSAvKiBOb2RlUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCQjY4
MEJBMjVCQTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjNEN0IzMkQwRTc4Q0QzRjAwRjc2MTdDIC8qIE5vZGVSZW5kZXJTdHlsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTQzMTA1QkIxNjc1MEYxNjAwREIyRkI4IC8qIE5vZGVUcmF2ZXJzYWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzODJBQUI0MEQ4QzM4NjEwMEYzNTdBNiAvKiBOb2RlV2l0
aEluZGV4LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggOTQzOTYwNjA4NjEz
MDkzOTA5NWNmMjI3ZjcxOWRmMDE5NjdiMDczZi4uZTRkZDMwNmYzM2I1YWQyYzdkZGQ3Zjg5Zjk2
ZDI0M2VmNTBkMGNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTY0Miw3ICs2NDIsNyBAQCBwcml2
YXRlOgogCiBzdGF0aWMgYm9vbCBpc0hpZ2hQZXJmb3JtYW5jZUNvbnRleHQoY29uc3QgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dEdMPiYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC0+cG93
ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgPT0gV2ViR0xQb3dlclByZWZlcmVuY2U6Okhp
Z2hQZXJmb3JtYW5jZTsKKyAgICByZXR1cm4gY29udGV4dC0+Y29udGV4dEF0dHJpYnV0ZXMoKS5w
b3dlclByZWZlcmVuY2UgPT0gV2ViR0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZShDYW52YXNCYXNlJiBjYW52YXMsIFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFdlYkdMVmVyc2lvbiB0eXBlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuY3BwCmluZGV4IGI3MTBlNzE1YTY2ZGNhYzU2NzQyZGI2YmJlYTc0MWQ2Zjg2MzQyYjMuLjRh
NTVmOWRhMWM1YjUxZjZjMjRhMGIwZTVjNWM2ZmJiM2Y1NDljNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5jcHAKQEAgLTY3LDEwICs2Nyw2IEBACiAjaW5jbHVkZSAiRGF0ZVRpbWVDaG9vc2VyLmgiCiAj
ZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQkdMKQotI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTU0OCwxMCArNTQ0LDYgQEAg
dm9pZCBDaHJvbWU6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQsIE9wdGlvbmFsPHVuc2lnbmUKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYWdlLndp
bmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQsIG5vbWluYWxGcmFtZUludGVydmFsKTsKLQot
I2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQkdMKQotICAgIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQs
IHRoaXMpOwotI2VuZGlmCiB9CiAKIGJvb2wgQ2hyb21lOjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVj
dGlvbklzTmF0dXJhbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBhYThmZjIzNjhkZmZkODljZWFiNmE0NDMzMzBk
YjQ1MTZhMThmOWY1Li5mNDdmMWFlMWZkNzNmOWQ0MjkzYTEwM2FlYTIyZmM2ZTA0N2ZlNjdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMLmgKQEAgLTEyNTUsOCArMTI1NSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSA9IDA7CiAKLSAgICB2aXJ0dWFsIEdyYXBoaWNz
Q29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIHBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigp
IGNvbnN0ID0gMDsKLQogICAgIHZpcnR1YWwgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3Qg
PSAwOwogCiAgICAgLy8gU3ludGhlc2l6ZXMgYW4gT3BlbkdMIGVycm9yIHdoaWNoIHdpbGwgYmUg
cmV0dXJuZWQgZnJvbSBhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAK
aW5kZXggNTUyZDg1MzliNjk1MDBjZjExNjk2ODBkNGI1YzYyODU4NThiNzczNy4uZTUwZjhmYjRj
NWMzNjcwNDYxYzgxMzQ1ZTQ0MzczYzZhNGRhMTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcApAQCAtNDksMTIgKzQ5LDYgQEAgdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi1HcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZSBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0
aW9uKCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB7IH07Ci19
Ci0KIGJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdAogewogI2lmIEVOQUJMRShXRUJHTDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2UuaAppbmRleCAyNDcxZDRlMjVjOWFhMjAwZWM3NDNiMWZlMGM2NDY4YjBjOWE1
MDgzLi4yODhjMmVhOGFkMzllODliNjk2OWZkMGIyMTZiOGI2N2IwYmVkYTMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKQEAgLTYxLDcgKzYxLDYgQEAgcHVibGljOgog
ICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKICAgICBFeHRl
bnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKICAgICB2b2lkIHNldENvbnRleHRWaXNp
YmlsaXR5KGJvb2wpIGZpbmFsOwotICAgIEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNl
IHBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgbWFya0NvbnRleHRDaGFu
Z2VkKCkgZmluYWw7CiAgICAgYm9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdCBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IGJkMjM3MTNjZmEx
ZTMwYzNkNGJiNDRjN2YxMWVmNWIxZmI0ODJmMWMuLmIyMTc1MWJmZjE1MTI3MmNmMjhkNGRkZGE2
ZDFiNGM1MmNjMDUzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2Nv
YS5tbQpAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW1wb3J0ICJj
b25maWcuaCIKQEAgLTMyLDkgKzMyLDcgQEAKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKLSNpbXBv
cnQgIkhvc3RXaW5kb3cuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIk9wZW5HTFNv
ZnRMaW5rQ29jb2EuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2lt
cG9ydCAiV2ViQ29yZVRocmVhZC5oIgogI2ltcG9ydCAiV2ViR0xMYXllci5oIgpAQCAtNDIsMTEg
KzQwLDYgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShNQUMpCi0jaW1wb3J0ICJTY3JlZW5Q
cm9wZXJ0aWVzLmgiCi0jaW1wb3J0IDxPcGVuR0wvQ0dMUmVuZGVyZXJzLmg+Ci0jZW5kaWYKLQog
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRHTENWLmgiCiAjZW5kaWYKQEAgLTE1MSwxNyArMTQ0LDE3IEBAIFJlZlB0cjxHcmFw
aGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShHcmFw
aGljc0NvbnRleHRHCiAgICAgaWYgKCFjb250ZXh0LT5tX2NvbnRleHRPYmopCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0LmdldCgpLCBob3N0V2luZG93KTsKKyAgICBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0
KGNvbnRleHQuZ2V0KCkpOwogCiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKIFJlZjxHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVNoYXJlZChH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCYgc2hhcmVkQ29udGV4dCkKIHsKLSAgICBhdXRvIGhvc3RX
aW5kb3cgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5o
b3N0V2luZG93Rm9yQ29udGV4dCgmc2hhcmVkQ29udGV4dCk7Ci0gICAgYXV0byBjb250ZXh0ID0g
YWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChzaGFyZWRDb250ZXh0LmNvbnRl
eHRBdHRyaWJ1dGVzKCksIGhvc3RXaW5kb3csICZzaGFyZWRDb250ZXh0LCBudWxscHRyKSk7CiAK
LSAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRD
b250ZXh0KGNvbnRleHQucHRyKCksIGhvc3RXaW5kb3cpOworICAgIGF1dG8gY29udGV4dCA9IGFk
b3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0
QXR0cmlidXRlcygpLCBudWxscHRyLCAmc2hhcmVkQ29udGV4dCwgbnVsbHB0cikpOworCisgICAg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4
dChjb250ZXh0LnB0cigpKTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQpAQCAtMTcxLDY3ICsx
NjQsMTEgQEAgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJzLCBudWxscHRyLCBudWxscHRyLCBzd2FwQ2hh
aW4pKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykgLy8gRklYTUU6IFRoaXMgcHJvYmFibHkgc2hv
dWxkIGJlIGp1c3QgZW5hYmxlZCAtIHNlZSA8cmRhcjovLzUzMDYyNzk0Pi4KLQotc3RhdGljIHZv
aWQgc2V0R1BVQnlSZWdpc3RyeUlEKENHTENvbnRleHRPYmogY29udGV4dE9iaiwgQ0dMUGl4ZWxG
b3JtYXRPYmogcGl4ZWxGb3JtYXRPYmosIElPUmVnaXN0cnlHUFVJRCBwcmVmZXJyZWRHUFVJRCkK
LXsKLSAgICAvLyBXaGVuIHRoZSBXZWJQcm9jZXNzIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRo
ZSBXaW5kb3dTZXJ2ZXIsIHRoZXJlIGlzIG5vIHdheSBmb3IgT3BlbkdMIHRvIHRlbGwgd2hpY2gg
R1BVIGlzIGNvbm5lY3RlZCB0byBhIGRpc3BsYXkuCi0gICAgLy8gT24gMTAuMTMrLCBmaW5kIHRo
ZSB2aXJ0dWFsIHNjcmVlbiB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBwcmVmZXJyZWQgR1BVIGJ5
IGl0cyByZWdpc3RyeUlELgotICAgIC8vIENHTFNldFZpcnR1YWxTY3JlZW4gY2FuIHRoZW4gYmUg
dXNlZCB0byB0ZWxsIE9wZW5HTCB3aGljaCBHUFUgaXQgc2hvdWxkIGJlIHVzaW5nLgotCi0gICAg
aWYgKCFjb250ZXh0T2JqIHx8ICFwcmVmZXJyZWRHUFVJRCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgR0xpbnQgdmlydHVhbFNjcmVlbkNvdW50ID0gMDsKLSAgICBDR0xFcnJvciBlcnJvciA9IENH
TERlc2NyaWJlUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXRPYmosIDAsIGtDR0xQRkFWaXJ0dWFsU2Ny
ZWVuQ291bnQsICZ2aXJ0dWFsU2NyZWVuQ291bnQpOwotICAgIEFTU0VSVChlcnJvciA9PSBrQ0dM
Tm9FcnJvcik7Ci0KLSAgICBHTGludCBmaXJzdEFjY2VsZXJhdGVkU2NyZWVuID0gLTE7Ci0KLSAg
ICBmb3IgKEdMaW50IHZpcnR1YWxTY3JlZW4gPSAwOyB2aXJ0dWFsU2NyZWVuIDwgdmlydHVhbFNj
cmVlbkNvdW50OyArK3ZpcnR1YWxTY3JlZW4pIHsKLSAgICAgICAgR0xpbnQgZGlzcGxheU1hc2sg
PSAwOwotICAgICAgICBlcnJvciA9IENHTERlc2NyaWJlUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXRP
YmosIHZpcnR1YWxTY3JlZW4sIGtDR0xQRkFEaXNwbGF5TWFzaywgJmRpc3BsYXlNYXNrKTsKLSAg
ICAgICAgQVNTRVJUKGVycm9yID09IGtDR0xOb0Vycm9yKTsKLQotICAgICAgICBhdXRvIGdwdUlE
ID0gZ3B1SURGb3JEaXNwbGF5TWFzayhkaXNwbGF5TWFzayk7Ci0KLSAgICAgICAgaWYgKGdwdUlE
ID09IHByZWZlcnJlZEdQVUlEKSB7Ci0gICAgICAgICAgICBlcnJvciA9IENHTFNldFZpcnR1YWxT
Y3JlZW4oY29udGV4dE9iaiwgdmlydHVhbFNjcmVlbik7Ci0gICAgICAgICAgICBBU1NFUlQoZXJy
b3IgPT0ga0NHTE5vRXJyb3IpOwotICAgICAgICAgICAgTE9HKFdlYkdMLCAiQ29udGV4dCAoJXAp
IHNldCB0byBHUFUgd2l0aCBJRDogKCVsbGQpLiIsIGNvbnRleHRPYmosIGdwdUlEKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChmaXJzdEFjY2VsZXJhdGVk
U2NyZWVuIDwgMCkgewotICAgICAgICAgICAgR0xpbnQgaXNBY2NlbGVyYXRlZCA9IDA7Ci0gICAg
ICAgICAgICBlcnJvciA9IENHTERlc2NyaWJlUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXRPYmosIHZp
cnR1YWxTY3JlZW4sIGtDR0xQRkFBY2NlbGVyYXRlZCwgJmlzQWNjZWxlcmF0ZWQpOwotICAgICAg
ICAgICAgQVNTRVJUKGVycm9yID09IGtDR0xOb0Vycm9yKTsKLSAgICAgICAgICAgIGlmIChpc0Fj
Y2VsZXJhdGVkKQotICAgICAgICAgICAgICAgIGZpcnN0QWNjZWxlcmF0ZWRTY3JlZW4gPSB2aXJ0
dWFsU2NyZWVuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gTm8gcmVnaXN0cnlJRCBtYXRj
aCBmb3VuZDsgc2V0IHRvIGZpcnN0IGhhcmR3YXJlLWFjY2VsZXJhdGVkIHZpcnR1YWwgc2NyZWVu
LgotICAgIGlmIChmaXJzdEFjY2VsZXJhdGVkU2NyZWVuID49IDApIHsKLSAgICAgICAgZXJyb3Ig
PSBDR0xTZXRWaXJ0dWFsU2NyZWVuKGNvbnRleHRPYmosIGZpcnN0QWNjZWxlcmF0ZWRTY3JlZW4p
OwotICAgICAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5vRXJyb3IpOwotICAgICAgICBMT0coV2Vi
R0wsICJSZWdpc3RyeUlEICglbGxkKSBub3QgbWF0Y2hlZDsgQ29udGV4dCAoJXApIHNldCB0byB2
aXJ0dWFsIHNjcmVlbiAoJWQpLiIsIHByZWZlcnJlZEdQVUlELCBjb250ZXh0T2JqLCBmaXJzdEFj
Y2VsZXJhdGVkU2NyZWVuKTsKLSAgICB9Ci19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCi0K
LUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0LCBHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbiogc3dhcENoYWluKQorR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywgSG9z
dFdpbmRvdyosIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0LCBHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogc3dhcENoYWluKQogICAgIDogR3JhcGhpY3ND
b250ZXh0R0woYXR0cnMsIERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIHNoYXJlZENvbnRleHQpCiB7
CiAgICAgbV9pc0ZvcldlYkdMMiA9IGF0dHJzLndlYkdMVmVyc2lvbiA9PSBHcmFwaGljc0NvbnRl
eHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOwogCi0jaWYgSEFWRShBUFBMRV9HUkFQSElDU19DT05U
Uk9MKQotICAgIG1fcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uID0gKGhhc0xvd0FuZEhp
Z2hQb3dlckdQVXMoKSAmJiBhdHRycy5wb3dlclByZWZlcmVuY2UgPT0gR3JhcGhpY3NDb250ZXh0
R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkgPyBHcmFwaGljc0NvbnRleHRHTFBv
d2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlIDogR3JhcGhpY3NDb250ZXh0R0xQb3dlclBy
ZWZlcmVuY2U6OkRlZmF1bHQ7Ci0jZWxzZQotICAgIG1fcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNy
ZWF0aW9uID0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQ7Ci0jZW5k
aWYKLQogICAgIG1fZGlzcGxheU9iaiA9IEluaXRpYWxpemVFR0xEaXNwbGF5KGF0dHJzKTsKICAg
ICBpZiAobV9kaXNwbGF5T2JqID09IEVHTF9OT19ESVNQTEFZKQogICAgICAgICByZXR1cm47CkBA
IC0yOTAsMTEgKzIyNywxNSBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIGVnbENvbnRl
eHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfQ09OVEVYVF9CSU5EX0dFTkVSQVRFU19SRVNPVVJDRV9D
SFJPTUlVTSk7CiAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9GQUxTRSk7CiAK
LSAgICBpZiAoc3Ryc3RyKGRpc3BsYXlFeHRlbnNpb25zLCAiRUdMX0FOR0xFX3Bvd2VyX3ByZWZl
cmVuY2UiKSkgewotICAgICAgICBlZ2xDb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX1BPV0VS
X1BSRUZFUkVOQ0VfQU5HTEUpOwotICAgICAgICAvLyBFR0xfTE9XX1BPV0VSX0FOR0xFIGlzIHRo
ZSBkZWZhdWx0LiBDaGFuZ2UgdG8KLSAgICAgICAgLy8gRUdMX0hJR0hfUE9XRVJfQU5HTEUgaWYg
ZGVzaXJlZC4KLSAgICAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9MT1dfUE9X
RVJfQU5HTEUpOworICAgIGJvb2wgc3VwcG9ydHNQb3dlclByZWZlcmVuY2UgPSBmYWxzZTsKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgbV9zdXBwb3J0c1Bvd2VyUHJlZmVyZW5jZSA9IHN0cnN0cihk
aXNwbGF5RXh0ZW5zaW9ucywgIkVHTF9BTkdMRV9wb3dlcl9wcmVmZXJlbmNlIik7CisgICAgc3Vw
cG9ydHNQb3dlclByZWZlcmVuY2UgPSBtX3N1cHBvcnRzUG93ZXJQcmVmZXJlbmNlOworI2VuZGlm
CisgICAgaWYgKCFzdXBwb3J0c1Bvd2VyUHJlZmVyZW5jZSkgeworICAgICAgICBhdXRvIGF0dHJz
ID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgYXR0cnMucG93ZXJQcmVmZXJlbmNlID0g
R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQ7CisgICAgICAgIHNldENv
bnRleHRBdHRyaWJ1dGVzKGF0dHJzKTsKICAgICB9CiAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMu
YXBwZW5kKEVHTF9OT05FKTsKIApAQCAtMzMyLDIxICsyNzMsNiBAQCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzIGF0dAogICAgICAgICB9CiAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChleHRl
bnNpb24pOwogICAgIH0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgLy8gRklYTUU6IEl0J3MgdW5j
bGVhciBpZiBNQUNDQVRBTFlTVCBzaG91bGQgdGFrZSB0aGVzZSBzdGVwcyBhcyB3ZWxsLCBidXQg
dGhhdAotICAgIC8vIHdvdWxkIHJlcXVpcmUgdGhlIFBsYXRmb3JtU2NyZWVuTWFjIGNvZGUgdG8g
YmUgZXhwb3NlZCB0byBDYXRhbHlzdCB0b28uCi0gICAgRUdMRGV2aWNlRVhUIGRldmljZSA9IG51
bGxwdHI7Ci0gICAgRUdMX1F1ZXJ5RGlzcGxheUF0dHJpYkVYVChtX2Rpc3BsYXlPYmosIEVHTF9E
RVZJQ0VfRVhULCByZWludGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZkZXZpY2UpKTsKLSAgICBD
R0xDb250ZXh0T2JqIGNnbENvbnRleHQgPSBudWxscHRyOwotICAgIENHTFBpeGVsRm9ybWF0T2Jq
IHBpeGVsRm9ybWF0ID0gbnVsbHB0cjsKLSAgICBFR0xfUXVlcnlEZXZpY2VBdHRyaWJFWFQoZGV2
aWNlLCBFR0xfQ0dMX0NPTlRFWFRfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4o
JmNnbENvbnRleHQpKTsKLSAgICBFR0xfUXVlcnlEZXZpY2VBdHRyaWJFWFQoZGV2aWNlLCBFR0xf
Q0dMX1BJWEVMX0ZPUk1BVF9BTkdMRSwgcmVpbnRlcnByZXRfY2FzdDxFR0xBdHRyaWIqPigmcGl4
ZWxGb3JtYXQpKTsKLSAgICBhdXRvIGdwdUlEID0gKGhvc3RXaW5kb3cgJiYgaG9zdFdpbmRvdy0+
ZGlzcGxheUlEKCkpID8gZ3B1SURGb3JEaXNwbGF5KGhvc3RXaW5kb3ctPmRpc3BsYXlJRCgpKSA6
IHByaW1hcnlHUFVJRCgpOwotICAgIHNldEdQVUJ5UmVnaXN0cnlJRChjZ2xDb250ZXh0LCBwaXhl
bEZvcm1hdCwgZ3B1SUQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaG9zdFdpbmRvdyk7Ci0j
ZW5kaWYKLQogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwogICAgIGF0dHJzID0gY29udGV4dEF0
dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBjaGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgog
CkBAIC01NjEsMzAgKzQ4NywyNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjaGVj
a0dQVVN0YXR1cygpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNldENvbnRleHRW
aXNpYmlsaXR5KGJvb2wgaXNWaXNpYmxlKQogewotICAgIGlmIChtX3Bvd2VyUHJlZmVyZW5jZVVz
ZWRGb3JDcmVhdGlvbiA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBl
cmZvcm1hbmNlKSB7Ci0gICAgICAgIGlmIChpc1Zpc2libGUpCi0gICAgICAgICAgICBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0UmVxdWly
aW5nSGlnaFBlcmZvcm1hbmNlKHRoaXMpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVDb250ZXh0
UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKHRoaXMpOwotICAgIH0KKyNpZiBQTEFURk9STShNQUMp
CisgICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKCkucG93ZXJQcmVmZXJlbmNlICE9IEdyYXBoaWNz
Q29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2UpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2hpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QgPSBpc1Zpc2libGUgPyBTY29wZWRI
aWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0OjphY3F1aXJlKCkgOiB7IH07CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShpc1Zpc2libGUpOworI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShNQUMpCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1cGRhdGVDR0xDb250ZXh0KCkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoKQogewotICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICghbV9z
dXBwb3J0c1Bvd2VyUHJlZmVyZW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIExPRyhXZWJHTCwg
IkRldGVjdGVkIGEgbXV4IHN3aXRjaCBvciBkaXNwbGF5IHJlY29uZmlndXJhdGlvbi4gQ2FsbCBD
R0xVcGRhdGVDb250ZXh0LiAoJXApIiwgdGhpcyk7Ci0KLSAgICBFR0xEZXZpY2VFWFQgZGV2aWNl
ID0gbnVsbHB0cjsKLSAgICBFR0xfUXVlcnlEaXNwbGF5QXR0cmliRVhUKG1fZGlzcGxheU9iaiwg
RUdMX0RFVklDRV9FWFQsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJmRldmljZSkpOwot
ICAgIENHTENvbnRleHRPYmogY2dsQ29udGV4dCA9IG51bGxwdHI7Ci0gICAgRUdMX1F1ZXJ5RGV2
aWNlQXR0cmliRVhUKGRldmljZSwgRUdMX0NHTF9DT05URVhUX0FOR0xFLCByZWludGVycHJldF9j
YXN0PEVHTEF0dHJpYio+KCZjZ2xDb250ZXh0KSk7Ci0KLSAgICBDR0xVcGRhdGVDb250ZXh0KGNn
bENvbnRleHQpOwotICAgIG1faGFzU3dpdGNoZWRUb0hpZ2hQZXJmb3JtYW5jZUdQVSA9IHRydWU7
Ci19CisgICAgRUdMX0hhbmRsZUdQVVN3aXRjaEFOR0xFKG1fZGlzcGxheU9iaik7CisgICAgZGlz
cGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpOwogI2VuZGlmCit9CiAKIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiB7CkBA
IC02NTQsNTAgKzU3NCw4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzR0xFUzJD
b21wbGlhbnQoKSBjb25zdAogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzaW11bGF0
ZUNvbnRleHRDaGFuZ2VkKCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6
OnNoYXJlZE1hbmFnZXIoKS51cGRhdGVBbGxDb250ZXh0cygpOwotfQotCi1ib29sIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjphbGxvd09mZmxpbmVSZW5kZXJlcnMoKSBjb25zdAotewotI2lmIFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQot
ICAgIC8vIFdoZW4gV2luZG93U2VydmVyIGFjY2VzcyBpcyBibG9ja2VkIGluIHRoZSBXZWJQcm9j
ZXNzLCB0aGVyZSBpcyBubyB3YXkKLSAgICAvLyBmb3IgT3BlbkdMIHRvIGRlY2lkZSB3aGljaCBH
UFUgaXMgY29ubmVjdGVkIHRvIGEgZGlzcGxheSAob25saW5lL29mZmxpbmUpLgotICAgIC8vIE9w
ZW5HTCB3aWxsIHRoZW4gY29uc2lkZXIgYWxsIEdQVXMsIG9yIHJlbmRlcmVycywgYXMgb2ZmbGlu
ZSwgd2hpY2ggbWVhbnMKLSAgICAvLyBhbGwgb2ZmbGluZSByZW5kZXJlcnMgbmVlZCB0byBiZSBj
b25zaWRlcmVkIHdoZW4gZmluZGluZyBhIHBpeGVsIGZvcm1hdC4KLSAgICAvLyBJbiBXZWJLaXQg
bGVnYWN5LCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgV2luZHdTZXJ2ZXIgY29ubmVjdGlvbiwgYW5k
Ci0gICAgLy8gbV9kaXNwbGF5TWFzayB3aWxsIG5vdCBiZSBzZXQgaW4gdGhpcyBjYXNlLgotICAg
IGlmIChwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2soKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0j
ZWxpZiBQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICAvLyBGSVhNRTogPHJkYXI6Ly81MzA2Mjc5
ND4gV2UncmUgdmVyeSBpbmNvbnNpc3RlbnQgYWJvdXQgV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJf
QkxPQ0tJTkcKLSAgICAvLyBhbmQgTUFDL01BQ0NBVEFMWVNUIGFuZCBPUEVOR0wvT1BFTkdMRVMu
Ci0gICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLSAgICAgICAgCi0jaWYgSEFWRShBUFBMRV9HUkFQ
SElDU19DT05UUk9MKQotICAgIGlmIChoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0jaWYg
UExBVEZPUk0oTUFDKQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2NyZWVuRGlkQ2hh
bmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKLXsKLSAgICBpZiAoIW1fY29udGV4dE9i
aikKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghbV9oYXNTd2l0Y2hlZFRvSGlnaFBlcmZvcm1h
bmNlR1BVKSB7Ci0gICAgICAgIEVHTERldmljZUVYVCBkZXZpY2UgPSBudWxscHRyOwotICAgICAg
ICBFR0xfUXVlcnlEaXNwbGF5QXR0cmliRVhUKG1fZGlzcGxheU9iaiwgRUdMX0RFVklDRV9FWFQs
IHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJmRldmljZSkpOwotICAgICAgICBDR0xDb250
ZXh0T2JqIGNnbENvbnRleHQgPSBudWxscHRyOwotICAgICAgICBDR0xQaXhlbEZvcm1hdE9iaiBw
aXhlbEZvcm1hdCA9IG51bGxwdHI7Ci0gICAgICAgIEVHTF9RdWVyeURldmljZUF0dHJpYkVYVChk
ZXZpY2UsIEVHTF9DR0xfQ09OVEVYVF9BTkdMRSwgcmVpbnRlcnByZXRfY2FzdDxFR0xBdHRyaWIq
PigmY2dsQ29udGV4dCkpOwotICAgICAgICBFR0xfUXVlcnlEZXZpY2VBdHRyaWJFWFQoZGV2aWNl
LCBFR0xfQ0dMX1BJWEVMX0ZPUk1BVF9BTkdMRSwgcmVpbnRlcnByZXRfY2FzdDxFR0xBdHRyaWIq
PigmcGl4ZWxGb3JtYXQpKTsKLSAgICAgICAgc2V0R1BVQnlSZWdpc3RyeUlEKGNnbENvbnRleHQs
IHBpeGVsRm9ybWF0LCBncHVJREZvckRpc3BsYXkoZGlzcGxheUlEKSk7Ci0gICAgfQorICAgIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmRpc3BsYXlXYXNS
ZWNvbmZpZ3VyZWQoKTsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oTUFDKQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDaGVja3NNYWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFj
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MWI4OGQzMzU4NjEzMTlkMmRhNTIyN2E1NDYwMjM4MmYyYjRhZWJm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0dyYXBoaWNzQ2hlY2tzTWFjLmNwcApAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NoZWNrc01hYy5oIgorCisjaWYg
UExBVEZPUk0oTUFDKQorCisjaWYgSEFWRShBUFBMRV9HUkFQSElDU19DT05UUk9MKQorI2luY2x1
ZGUgPHN5cy9zeXNjdGwuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBI
QVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCisKK2VudW0geworICAgIGtBR0NPcGVuLAorICAg
IGtBR0NDbG9zZQorfTsKKworc3RhdGljIGlvX2Nvbm5lY3RfdCBhdHRhY2hUb0FwcGxlR3JhcGhp
Y3NDb250cm9sKCkKK3sKKyAgICBtYWNoX3BvcnRfdCBtYXN0ZXJQb3J0ID0gTUFDSF9QT1JUX05V
TEw7CisgICAgCisgICAgaWYgKElPTWFzdGVyUG9ydChNQUNIX1BPUlRfTlVMTCwgJm1hc3RlclBv
cnQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOworICAg
IAorICAgIENGRGljdGlvbmFyeVJlZiBjbGFzc1RvTWF0Y2ggPSBJT1NlcnZpY2VNYXRjaGluZygi
QXBwbGVHcmFwaGljc0NvbnRyb2wiKTsKKyAgICBpZiAoIWNsYXNzVG9NYXRjaCkKKyAgICAgICAg
cmV0dXJuIE1BQ0hfUE9SVF9OVUxMOworICAgIAorICAgIGtlcm5fcmV0dXJuX3Qga2VyblJlc3Vs
dDsKKyAgICBpb19pdGVyYXRvcl90IGl0ZXJhdG9yOworICAgIGlmICgoa2VyblJlc3VsdCA9IElP
U2VydmljZUdldE1hdGNoaW5nU2VydmljZXMobWFzdGVyUG9ydCwgY2xhc3NUb01hdGNoLCAmaXRl
cmF0b3IpKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBNQUNIX1BPUlRfTlVMTDsK
KyAgICAKKyAgICBpb19zZXJ2aWNlX3Qgc2VydmljZU9iamVjdCA9IElPSXRlcmF0b3JOZXh0KGl0
ZXJhdG9yKTsKKyAgICBJT09iamVjdFJlbGVhc2UoaXRlcmF0b3IpOworICAgIGlmICghc2Vydmlj
ZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOworICAgIAorICAgIGlvX2Nv
bm5lY3RfdCBkYXRhUG9ydDsKKyAgICBJT09iamVjdFJldGFpbihzZXJ2aWNlT2JqZWN0KTsKKyAg
ICBrZXJuUmVzdWx0ID0gSU9TZXJ2aWNlT3BlbihzZXJ2aWNlT2JqZWN0LCBtYWNoX3Rhc2tfc2Vs
ZigpLCAwLCAmZGF0YVBvcnQpOworICAgIElPT2JqZWN0UmVsZWFzZShzZXJ2aWNlT2JqZWN0KTsK
KyAgICAKKyAgICByZXR1cm4gKGtlcm5SZXN1bHQgPT0gS0VSTl9TVUNDRVNTKSA/IGRhdGFQb3J0
IDogTUFDSF9QT1JUX05VTEw7Cit9CisKK3N0YXRpYyBib29sIGhhc011eENhcGFiaWxpdHkoKQor
eworICAgIGlvX2Nvbm5lY3RfdCBkYXRhUG9ydCA9IGF0dGFjaFRvQXBwbGVHcmFwaGljc0NvbnRy
b2woKTsKKyAgICAKKyAgICBpZiAoZGF0YVBvcnQgPT0gTUFDSF9QT1JUX05VTEwpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBib29sIHJlc3VsdDsKKyAgICBpZiAoSU9Db25uZWN0
Q2FsbFNjYWxhck1ldGhvZChkYXRhUG9ydCwga0FHQ09wZW4sIG51bGxwdHIsIDAsIG51bGxwdHIs
IG51bGxwdHIpID09IEtFUk5fU1VDQ0VTUykgeworICAgICAgICBJT0Nvbm5lY3RDYWxsU2NhbGFy
TWV0aG9kKGRhdGFQb3J0LCBrQUdDQ2xvc2UsIG51bGxwdHIsIDAsIG51bGxwdHIsIG51bGxwdHIp
OworICAgICAgICByZXN1bHQgPSB0cnVlOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQgPSBm
YWxzZTsKKyAgICAKKyAgICBJT1NlcnZpY2VDbG9zZShkYXRhUG9ydCk7CisgICAgCisgICAgaWYg
KHJlc3VsdCkgeworICAgICAgICAvLyBUaGlzIGlzIGRldGVjdGluZyBNYWMgaGFyZHdhcmUgd2l0
aCBhbiBJbnRlbCBnNTc1IEdQVSwgd2hpY2gKKyAgICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byBt
YWtlIGF2YWlsYWJsZSB0byBtdXhpbmcuCisgICAgICAgIC8vIEJhc2VkIG9uIGluZm9ybWF0aW9u
IGZyb20gQXBwbGUncyBPcGVuR0wgdGVhbSwgc3VjaCBkZXZpY2VzCisgICAgICAgIC8vIGhhdmUg
Zm91ciBvciBmZXdlciBwcm9jZXNzb3JzLgorICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzAw
NjAzNzg+CisgICAgICAgIGludCBuYW1lc1syXSA9IHsgQ1RMX0hXLCBIV19OQ1BVIH07CisgICAg
ICAgIGludCBjcHVDb3VudDsKKyAgICAgICAgc2l6ZV90IGNwdUNvdW50TGVuZ3RoID0gc2l6ZW9m
KGNwdUNvdW50KTsKKyAgICAgICAgc3lzY3RsKG5hbWVzLCAyLCAmY3B1Q291bnQsICZjcHVDb3Vu
dExlbmd0aCwgbnVsbHB0ciwgMCk7CisgICAgICAgIHJlc3VsdCA9IGNwdUNvdW50ID4gNDsKKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlmIC8vIEhBVkUoQVBQTEVf
R1JBUEhJQ1NfQ09OVFJPTCkKKworYm9vbCBoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkKK3sKKyNp
ZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCisgICAgc3RhdGljIGJvb2wgY2FuTXV4ID0g
aGFzTXV4Q2FwYWJpbGl0eSgpOworICAgIHJldHVybiBjYW5NdXg7CisjZWxzZQorICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorfQorCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDaGVja3NNYWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01hYy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBhNDU2ZDBiYWZkZjYwMmU5NjE5NDQ0Y2I1MGY5ODU3ZDM2ZTU0ZGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3ND
aGVja3NNYWMuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaGFzTG93QW5k
SGlnaFBvd2VyR1BVcygpOworCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9TY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BV
UmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMjFmZDc5NDAxOWEzMWE4MDU3MzQ0ZjJkYTJkYzRiYWFl
MTI4ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oCkBAIC0wLDAgKzEsNzEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdyYXBoaWNzQ2hlY2tzTWFj
LmgiCisjaW5jbHVkZSAiU3dpdGNoaW5nR1BVQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCB7CitwdWJsaWM6Cisg
ICAgU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCgpID0gZGVmYXVsdDsKKyAgICBTY29w
ZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0KFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVl
c3QmJiBvdGhlcikKKyAgICAgICAgOiBtX3JlcXVlc3RlZChzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
cmVxdWVzdGVkLCBmYWxzZSkpCisgICAgeworICAgIH0KKyAgICB+U2NvcGVkSGlnaFBlcmZvcm1h
bmNlR1BVUmVxdWVzdCgpCisgICAgeworICAgICAgICBpZiAoIW1fcmVxdWVzdGVkKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBTd2l0Y2hpbmdHUFVDbGllbnQ6OnNpbmdsZXRvbklmRXhp
c3RzKCktPnJlbGVhc2VIaWdoUGVyZm9ybWFuY2VHUFUoKTsKKyAgICB9CisgICAgU2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdCYgb3BlcmF0b3I9KFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQ
VVJlcXVlc3QmJiBvdGhlcikKKyAgICB7CisgICAgICAgIGlmIChtX3JlcXVlc3RlZCkKKyAgICAg
ICAgICAgIFN3aXRjaGluZ0dQVUNsaWVudDo6c2luZ2xldG9uSWZFeGlzdHMoKS0+cmVsZWFzZUhp
Z2hQZXJmb3JtYW5jZUdQVSgpOworICAgICAgICBtX3JlcXVlc3RlZCA9IHN0ZDo6ZXhjaGFuZ2Uo
b3RoZXIubV9yZXF1ZXN0ZWQsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0K
KyAgICBzdGF0aWMgU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCBhY3F1aXJlKCkKKyAg
ICB7CisgICAgICAgIGlmICghaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpKQorICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgYXV0byBjbGllbnQgPSBTd2l0Y2hpbmdHUFVDbGllbnQ6OnNp
bmdsZXRvbklmRXhpc3RzKCk7CisgICAgICAgIGlmICghY2xpZW50KQorICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgY2xpZW50LT5yZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCk7Cisg
ICAgICAgIHJldHVybiB7IDAgfTsKKyAgICB9Citwcml2YXRlOgorICAgIFNjb3BlZEhpZ2hQZXJm
b3JtYW5jZUdQVVJlcXVlc3QoaW50KQorICAgICAgICA6IG1fcmVxdWVzdGVkKHRydWUpCisgICAg
eworICAgIH0KKyAgICBib29sIG1fcmVxdWVzdGVkIHsgZmFsc2UgfTsKK307CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Td2l0Y2hpbmdHUFVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Td2l0Y2hpbmdH
UFVDbGllbnQuaAppbmRleCA0OTlhMjg3YTQ1Yzk2OGQ4MzNkZWNmZTUzMzMxMWQwY2ViMzE3MDc4
Li40NTIzNjc4MWI4ZTEwOGUyODZmZGUyMTRlODUxYTNhODJiMzAxYzdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU3dpdGNoaW5nR1BVQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNs
aWVudC5oCkBAIC0yOSwxNiArMjksMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
d2l0Y2hpbmdHUFVDbGllbnQgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBT
d2l0Y2hpbmdHUFVDbGllbnQqIHNpbmdsZXRvbklmRXhpc3RzKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgc2V0U2luZ2xldG9uKFN3aXRjaGluZ0dQVUNsaWVudCYpOwogCiAgICAg
dmlydHVhbCB+U3dpdGNoaW5nR1BVQ2xpZW50KCkgPSBkZWZhdWx0OwotCitwcml2YXRlOgorICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTd2l0Y2hpbmdHUFVDbGllbnQqIHNpbmdsZXRvbklmRXhp
c3RzKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RIaWdoUGVyZm9ybWFuY2VHUFUoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VIaWdoUGVyZm9ybWFuY2VHUFUoKSA9IDA7Ci0gICAg
Ci1wcml2YXRlOgorCiAgICAgc3RhdGljIFN3aXRjaGluZ0dQVUNsaWVudCogbV9zaW5nbGV0b247
CisgICAgZnJpZW5kIGNsYXNzIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Q7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGVlNzE5NDYzOWE4ODQ4
MTE3Y2QyMTgwZWU3OTEyMmY4Y2UwNDU1YTYuLmI3YWJmZWUzMzBlYWM3YjUyZTcyYjA3NGY4YzQ5
NDExOTFjZWIyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC02OSw2
ICs2OSwxMCBAQCBjbGFzcyBHQ0dMTGF5ZXI7CiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1B
QykKKyNpbmNsdWRlICJTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRXh0ZW5zaW9uc0dMOwogI2lmIFVTRShBTkdM
RSkKQEAgLTI1Niw3ICsyNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsK
ICAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KSBmaW5hbDsKICAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBi
b3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsgCisg
ICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9m
ZnNldCkgZmluYWw7CiAgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwogICAg
IHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKIApAQCAtNDU1LDE0ICs0NTksMTIgQEAgcHVibGljOgog
ICAgIHZvaWQgcHJpbWl0aXZlUmVzdGFydEluZGV4KEdDR0x1aW50KTsKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oQ09DT0EpICYmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIHVwZGF0ZUNHTENvbnRl
eHQoKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBkaXNwbGF5V2FzUmVjb25maWd1cmVk
KCk7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7
CiAKLSAgICBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZSBwb3dlclByZWZlcmVuY2VV
c2VkRm9yQ3JlYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Bvd2VyUHJlZmVyZW5jZVVz
ZWRGb3JDcmVhdGlvbjsgfQotCiAgICAgLy8gU3VwcG9ydCBmb3IgYnVmZmVyIGNyZWF0aW9uIGFu
ZCBkZWxldGlvbgogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlQnVmZmVyKCkgZmluYWw7CiAg
ICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVGcmFtZWJ1ZmZlcigpIGZpbmFsOwpAQCAtNDkxLDEx
ICs0OTMsNiBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCB0ZXh0dXJlU2VlZChHQ0dMdWludCB0
ZXh0dXJlKSB7IHJldHVybiBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuY291bnQodGV4dHVyZSk7
IH0KIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICB1c2luZyBQbGF0Zm9ybURpc3BsYXlJRCA9IHVp
bnQzMl90OwotICAgIHZvaWQgc2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKLSNl
bmRpZgotCiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwogCiAjaWYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQpAQCAtNTIzLDcgKzUyMCw3IEBAIHByaXZhdGU6
CiAgICAgLy8gaW1wbGVtZW50YXRpb24uCiAgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChj
b25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRh
dGVBdHRyaWJ1dGVzKCk7Ci0gICAgCisKICAgICB2b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRh
LCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKIAogICAgIC8vIERpZCB0aGUgbW9z
dCByZWNlbnQgZHJhd2luZyBvcGVyYXRpb24gbGVhdmUgdGhlIEdQVSBpbiBhbiBhY2NlcHRhYmxl
IHN0YXRlPwpAQCAtNTQxLDcgKzUzOCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhdHRhY2hEZXB0
aEFuZFN0ZW5jaWxCdWZmZXJJZk5lZWRlZChHQ0dMdWludCBpbnRlcm5hbERlcHRoU3RlbmNpbEZv
cm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IGJvb2wgYWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3Q7CiAgICAgYm9vbCByZXNoYXBlRGlz
cGxheUJ1ZmZlckJhY2tpbmcoKTsKICAgICBib29sIGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZm
ZXJCYWNraW5nKCk7CiAgICAgYm9vbCBiaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcik7CkBAIC01NzcsNyArNTcz
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICwgaXNWYWxpZChmYWxzZSkKICAgICAgICAgewog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIFNoYWRlclN5bWJvbE1hcCYgc3ltYm9sTWFw
KGVudW0gQU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEFTU0VSVChzeW1ib2xUeXBlID09IFNIQURFUl9TWU1CT0xfVFlQRV9BVFRSSUJVVEUg
fHwgc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STSB8fCBzeW1ib2xUeXBl
ID09IFNIQURFUl9TWU1CT0xfVFlQRV9WQVJZSU5HKTsKQEAgLTY0Miw3ICs2MzgsNiBAQCBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zR0xPcGVuR0w+IG1fZXh0ZW5zaW9u
czsKICNlbmRpZgogCi0gICAgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgbV9wb3dl
clByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24geyBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVy
ZW5jZTo6RGVmYXVsdCB9OwogICAgIFZlY3RvcjxWZWN0b3I8ZmxvYXQ+PiBtX3ZlcnRleEFycmF5
OwogCiAjaWYgIVVTRShBTkdMRSkKQEAgLTY3Miw3ICs2NjcsNyBAQCBwcml2YXRlOgogCiAgICAg
ICAgIHVzaW5nIEJvdW5kVGV4dHVyZU1hcCA9IEhhc2hNYXA8R0NHTGVudW0sCiAgICAgICAgICAg
ICBzdGQ6OnBhaXI8R0NHTHVpbnQsIEdDR0xlbnVtPiwKLSAgICAgICAgICAgIFdURjo6SW50SGFz
aDxHQ0dMZW51bT4sIAorICAgICAgICAgICAgV1RGOjpJbnRIYXNoPEdDR0xlbnVtPiwKICAgICAg
ICAgICAgIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+LAogICAg
ICAgICAgICAgV1RGOjpQYWlySGFzaFRyYWl0czxXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPEdDR0x1aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dM
dWludD4+CiAgICAgICAgID47CkBAIC03NTMsOCArNzQ4LDEwIEBAIHByaXZhdGU6CiAgICAgLy8g
V2hlbiBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPT0gdHJ1ZSwgdGhpcyBpcyBibGl0dGVkIHRvIGR1
cmluZyBkaXNwbGF5IHByZXBhcmUuCiAgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9k
aXNwbGF5QnVmZmVyQmFja2luZzsKICAgICB2b2lkKiBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyIHsg
bnVsbHB0ciB9OwotCi0gICAgYm9vbCBtX2hhc1N3aXRjaGVkVG9IaWdoUGVyZm9ybWFuY2VHUFUg
eyBmYWxzZSB9OworI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGJvb2wgbV9zdXBwb3J0
c1Bvd2VyUHJlZmVyZW5jZSB7IGZhbHNlIH07CisgICAgU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BV
UmVxdWVzdCBtX2hpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Q7CiAjZW5kaWYKICNpZiBFTkFCTEUo
VklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNz
Q29udGV4dEdMQ1Y+IG1fY3Y7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXIuY3BwCmluZGV4IDQxYWI1MGNiZWYyZWE2NDI5M2JhMGM5OWJlOGIwNWZjOTcwNzdk
ZTYuLjBiZjdlMjEwYjdmMGZiNmM3YmU3M2U1OTIyYzZhZjUxYTliNDU2YzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwCkBAIC0zMSw5MSArMzEs
OCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogCi0jaWYgSEFWRShBUFBMRV9HUkFQSElDU19DT05UUk9MKQotI2luY2x1ZGUgPHN5
cy9zeXNjdGwuaD4KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgIlN3aXRj
aGluZ0dQVUNsaWVudC5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIEhB
VkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKLQotZW51bSB7Ci0gICAga0FHQ09wZW4sCi0gICAg
a0FHQ0Nsb3NlCi19OwotCi1zdGF0aWMgaW9fY29ubmVjdF90IGF0dGFjaFRvQXBwbGVHcmFwaGlj
c0NvbnRyb2woKQotewotICAgIG1hY2hfcG9ydF90IG1hc3RlclBvcnQgPSBNQUNIX1BPUlRfTlVM
TDsKLSAgICAKLSAgICBpZiAoSU9NYXN0ZXJQb3J0KE1BQ0hfUE9SVF9OVUxMLCAmbWFzdGVyUG9y
dCkgIT0gS0VSTl9TVUNDRVNTKQotICAgICAgICByZXR1cm4gTUFDSF9QT1JUX05VTEw7Ci0gICAg
Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGNsYXNzVG9NYXRjaCA9IElPU2VydmljZU1hdGNoaW5nKCJB
cHBsZUdyYXBoaWNzQ29udHJvbCIpOwotICAgIGlmICghY2xhc3NUb01hdGNoKQotICAgICAgICBy
ZXR1cm4gTUFDSF9QT1JUX05VTEw7Ci0gICAgCi0gICAga2Vybl9yZXR1cm5fdCBrZXJuUmVzdWx0
OwotICAgIGlvX2l0ZXJhdG9yX3QgaXRlcmF0b3I7Ci0gICAgaWYgKChrZXJuUmVzdWx0ID0gSU9T
ZXJ2aWNlR2V0TWF0Y2hpbmdTZXJ2aWNlcyhtYXN0ZXJQb3J0LCBjbGFzc1RvTWF0Y2gsICZpdGVy
YXRvcikpICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOwot
ICAgIAotICAgIGlvX3NlcnZpY2VfdCBzZXJ2aWNlT2JqZWN0ID0gSU9JdGVyYXRvck5leHQoaXRl
cmF0b3IpOwotICAgIElPT2JqZWN0UmVsZWFzZShpdGVyYXRvcik7Ci0gICAgaWYgKCFzZXJ2aWNl
T2JqZWN0KQotICAgICAgICByZXR1cm4gTUFDSF9QT1JUX05VTEw7Ci0gICAgCi0gICAgaW9fY29u
bmVjdF90IGRhdGFQb3J0OwotICAgIElPT2JqZWN0UmV0YWluKHNlcnZpY2VPYmplY3QpOwotICAg
IGtlcm5SZXN1bHQgPSBJT1NlcnZpY2VPcGVuKHNlcnZpY2VPYmplY3QsIG1hY2hfdGFza19zZWxm
KCksIDAsICZkYXRhUG9ydCk7Ci0gICAgSU9PYmplY3RSZWxlYXNlKHNlcnZpY2VPYmplY3QpOwot
ICAgIAotICAgIHJldHVybiAoa2VyblJlc3VsdCA9PSBLRVJOX1NVQ0NFU1MpID8gZGF0YVBvcnQg
OiBNQUNIX1BPUlRfTlVMTDsKLX0KLQotc3RhdGljIGJvb2wgaGFzTXV4Q2FwYWJpbGl0eSgpCi17
Ci0gICAgaW9fY29ubmVjdF90IGRhdGFQb3J0ID0gYXR0YWNoVG9BcHBsZUdyYXBoaWNzQ29udHJv
bCgpOwotICAgIAotICAgIGlmIChkYXRhUG9ydCA9PSBNQUNIX1BPUlRfTlVMTCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIAotICAgIGJvb2wgcmVzdWx0OwotICAgIGlmIChJT0Nvbm5lY3RD
YWxsU2NhbGFyTWV0aG9kKGRhdGFQb3J0LCBrQUdDT3BlbiwgbnVsbHB0ciwgMCwgbnVsbHB0ciwg
bnVsbHB0cikgPT0gS0VSTl9TVUNDRVNTKSB7Ci0gICAgICAgIElPQ29ubmVjdENhbGxTY2FsYXJN
ZXRob2QoZGF0YVBvcnQsIGtBR0NDbG9zZSwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgbnVsbHB0cik7
Ci0gICAgICAgIHJlc3VsdCA9IHRydWU7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGZh
bHNlOwotICAgIAotICAgIElPU2VydmljZUNsb3NlKGRhdGFQb3J0KTsKLSAgICAKLSAgICBpZiAo
cmVzdWx0KSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgZGV0ZWN0aW5nIE1hYyBoYXJkd2FyZSB3aXRo
IGFuIEludGVsIGc1NzUgR1BVLCB3aGljaAotICAgICAgICAvLyB3ZSBkb24ndCB3YW50IHRvIG1h
a2UgYXZhaWxhYmxlIHRvIG11eGluZy4KLSAgICAgICAgLy8gQmFzZWQgb24gaW5mb3JtYXRpb24g
ZnJvbSBBcHBsZSdzIE9wZW5HTCB0ZWFtLCBzdWNoIGRldmljZXMKLSAgICAgICAgLy8gaGF2ZSBm
b3VyIG9yIGZld2VyIHByb2Nlc3NvcnMuCi0gICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMDA2
MDM3OD4KLSAgICAgICAgaW50IG5hbWVzWzJdID0geyBDVExfSFcsIEhXX05DUFUgfTsKLSAgICAg
ICAgaW50IGNwdUNvdW50OwotICAgICAgICBzaXplX3QgY3B1Q291bnRMZW5ndGggPSBzaXplb2Yo
Y3B1Q291bnQpOwotICAgICAgICBzeXNjdGwobmFtZXMsIDIsICZjcHVDb3VudCwgJmNwdUNvdW50
TGVuZ3RoLCBudWxscHRyLCAwKTsKLSAgICAgICAgcmVzdWx0ID0gY3B1Q291bnQgPiA0OwotICAg
IH0KLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1ib29sIGhhc0xvd0FuZEhpZ2hQb3dl
ckdQVXMoKQotewotICAgIHN0YXRpYyBib29sIGNhbk11eCA9IGhhc011eENhcGFiaWxpdHkoKTsK
LSAgICByZXR1cm4gY2FuTXV4OwotfQotI2VuZGlmIC8vIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09O
VFJPTCkKLQogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyJiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI+IHNfbWFuYWdlcjsKQEAgLTEyNywz
MyArNDQsMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmRpc3BsYXlX
YXNSZWNvbmZpZ3VyZWQoQ0dEaXJlY3REaXNwbGF5SUQsIEMKIHsKICAgICBMT0coV2ViR0wsICJH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQiKTsK
ICAgICBpZiAoZmxhZ3MgJiBrQ0dEaXNwbGF5U2V0TW9kZUZsYWcpCi0gICAgICAgIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnVwZGF0ZUFsbENvbnRleHRz
KCk7Ci19Ci0jZW5kaWYKLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnVw
ZGF0ZUFsbENvbnRleHRzKCkKLXsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgZm9yIChjb25zdCBh
dXRvJiBjb250ZXh0IDogbV9jb250ZXh0cykgewotICAgICAgICBjb250ZXh0LT51cGRhdGVDR0xD
b250ZXh0KCk7Ci0gICAgICAgIGNvbnRleHQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmlj
YXRpb24oKTsKLSAgICB9Ci0jZW5kaWYKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xN
YW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuZGlzcGxheVdhc1JlY29uZmlndXJlZCgpOwogfQogCi0j
aWYgUExBVEZPUk0oTUFDKQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNj
cmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIGNvbnN0IEhvc3RXaW5k
b3cqIHdpbmRvdykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5
V2FzUmVjb25maWd1cmVkKCkKIHsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHRBbmRXaW5k
b3cgOiBtX2NvbnRleHRXaW5kb3dNYXApIHsKLSAgICAgICAgaWYgKGNvbnRleHRBbmRXaW5kb3cu
dmFsdWUgPT0gd2luZG93KSB7Ci0gICAgICAgICAgICBjb250ZXh0QW5kV2luZG93LmtleS0+c2Ny
ZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7Ci0gICAgICAgICAgICBMT0coV2ViR0wsICJDaGFuZ2lu
ZyBjb250ZXh0ICglcCkgdG8gZGlzcGxheSAoJWQpLiIsIGNvbnRleHRBbmRXaW5kb3cua2V5LCBk
aXNwbGF5SUQpOwotICAgICAgICB9Ci0gICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgY29udGV4
dCA6IG1fY29udGV4dHMpCisgICAgICAgIGNvbnRleHQtPmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQo
KTsKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRk
Q29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgSG9zdFdpbmRvdyogd2lu
ZG93KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmFkZENvbnRleHQoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwog
ICAgIGlmICghY29udGV4dCkKQEAgLTE2Niw3ICs2Nyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjphZGRDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250
ZXh0CiAKICAgICBBU1NFUlQoIW1fY29udGV4dHMuY29udGFpbnMoY29udGV4dCkpOwogICAgIG1f
Y29udGV4dHMuYXBwZW5kKGNvbnRleHQpOwotICAgIG1fY29udGV4dFdpbmRvd01hcC5zZXQoY29u
dGV4dCwgd2luZG93KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6
OnJlbW92ZUNvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQpCkBAIC0xNzQs
OTcgKzc0LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpyZW1vdmVD
b250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250CiAgICAgaWYgKCFtX2NvbnRleHRz
LmNvbnRhaW5zKGNvbnRleHQpKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZXh0cy5yZW1v
dmVGaXJzdChjb250ZXh0KTsKLSAgICBtX2NvbnRleHRXaW5kb3dNYXAucmVtb3ZlKGNvbnRleHQp
OwotICAgIHJlbW92ZUNvbnRleHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoY29udGV4dCk7Ci0g
ICAgCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVS
X0JMT0NLSU5HKQogICAgIGlmICghbV9jb250ZXh0cy5zaXplKCkpCiAgICAgICAgIENHRGlzcGxh
eVJlbW92ZVJlY29uZmlndXJhdGlvbkNhbGxiYWNrKGRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQsIG51
bGxwdHIpOwogI2VuZGlmCiB9CiAKLUhvc3RXaW5kb3cqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlcjo6aG9zdFdpbmRvd0ZvckNvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNv
bnRleHQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fY29udGV4dFdpbmRvd01hcC5jb250YWlucyhj
b250ZXh0KSk7Ci0gICAgcmV0dXJuIG1fY29udGV4dFdpbmRvd01hcC5nZXQoY29udGV4dCk7Ci19
Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjphZGRDb250ZXh0UmVxdWly
aW5nSGlnaFBlcmZvcm1hbmNlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQotewot
ICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBBU1NFUlQobV9jb250ZXh0cy5jb250YWlucyhjb250ZXh0KSk7Ci0gICAgQVNT
RVJUKCFtX2NvbnRleHRzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLmNvbnRhaW5zKGNvbnRleHQp
KTsKLSAgICAKLSAgICBMT0coV2ViR0wsICJUaGlzIGNvbnRleHQgKCVwKSByZXF1aXJlcyB0aGUg
aGlnaC1wZXJmb3JtYW5jZSBHUFUuIiwgY29udGV4dCk7Ci0gICAgbV9jb250ZXh0c1JlcXVpcmlu
Z0hpZ2hQZXJmb3JtYW5jZS5hZGQoY29udGV4dCk7Ci0gICAgCi0gICAgdXBkYXRlSGlnaFBlcmZv
cm1hbmNlU3RhdGUoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6
OnJlbW92ZUNvbnRleHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIGNvbnRleHQpCi17Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAoIW1fY29udGV4dHNSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UuY29udGFpbnMoY29u
dGV4dCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBMT0coV2ViR0wsICJUaGlzIGNvbnRl
eHQgKCVwKSBubyBsb25nZXIgcmVxdWlyZXMgdGhlIGhpZ2gtcGVyZm9ybWFuY2UgR1BVLiIsIGNv
bnRleHQpOwotICAgIG1fY29udGV4dHNSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UucmVtb3ZlKGNv
bnRleHQpOwotICAgIAotICAgIHVwZGF0ZUhpZ2hQZXJmb3JtYW5jZVN0YXRlKCk7Ci19Ci0KLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjp1cGRhdGVIaWdoUGVyZm9ybWFuY2VT
dGF0ZSgpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghaGFzTG93QW5kSGlnaFBvd2Vy
R1BVcygpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKG1fY29udGV4dHNSZXF1aXJp
bmdIaWdoUGVyZm9ybWFuY2Uuc2l6ZSgpKSB7Ci0gICAgICAgIAotICAgICAgICBpZiAobV9kaXNh
YmxlSGlnaFBlcmZvcm1hbmNlR1BVVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAgICAgTE9H
KFdlYkdMLCAiQ2FuY2VsIHBlbmRpbmcgdGltZXIgZm9yIHR1cm5pbmcgb2ZmIGhpZ2gtcGVyZm9y
bWFuY2UgR1BVLiIpOwotICAgICAgICAgICAgbV9kaXNhYmxlSGlnaFBlcmZvcm1hbmNlR1BVVGlt
ZXIuc3RvcCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFtX3JlcXVlc3RpbmdIaWdoUGVy
Zm9ybWFuY2UpIHsKLSAgICAgICAgICAgIExPRyhXZWJHTCwgIlJlcXVlc3QgdGhlIGhpZ2gtcGVy
Zm9ybWFuY2UgR1BVLiIpOwotICAgICAgICAgICAgbV9yZXF1ZXN0aW5nSGlnaFBlcmZvcm1hbmNl
ID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBzaW5nbGV0b24gPSBTd2l0Y2hpbmdHUFVD
bGllbnQ6OnNpbmdsZXRvbklmRXhpc3RzKCkpCi0gICAgICAgICAgICAgICAgc2luZ2xldG9uLT5y
ZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCk7Ci0gICAgICAgIH0KLQotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIC8vIERvbid0IGltbWVkaWF0ZWx5IHR1cm4gb2ZmIHRoZSBoaWdoLXBlcmZvcm1hbmNl
IEdQVS4gVGhlIHVzZXIgbWlnaHQgYmUKLSAgICAgICAgLy8gc3dhcHBpbmcgYmFjayBhbmQgZm9y
dGggYmV0d2VlbiB0YWJzIG9yIHdpbmRvd3MsIGFuZCB3ZSBkb24ndCB3YW50IHRvIGNhdXNlCi0g
ICAgICAgIC8vIGNodXJuIGlmIHdlIGNhbiBhdm9pZCBpdC4KLSAgICAgICAgaWYgKCFtX2Rpc2Fi
bGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICBMT0co
V2ViR0wsICJTZXQgYSB0aW1lciB0byByZWxlYXNlIHRoZSBoaWdoLXBlcmZvcm1hbmNlIEdQVS4i
KTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBFeHBvc2UgdGhpcyB2YWx1ZSBhcyBhIFNldHRpbmcs
IHdoaWNoIHdvdWxkIHJlcXVpcmUgdGhpcyBjbGFzcwotICAgICAgICAgICAgLy8gdG8gcmVmZXJl
bmNlIGEgZnJhbWUsIHBhZ2Ugb3IgZG9jdW1lbnQuCi0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
U2Vjb25kcyB0aW1lVG9LZWVwSGlnaFBlcmZvcm1hbmNlR1BVQWxpdmUgeyAxMF9zIH07Ci0gICAg
ICAgICAgICBtX2Rpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lci5zdGFydE9uZVNob3QodGlt
ZVRvS2VlcEhpZ2hQZXJmb3JtYW5jZUdQVUFsaXZlKTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRp
ZgotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6ZGlzYWJsZUhpZ2hQ
ZXJmb3JtYW5jZUdQVVRpbWVyRmlyZWQoKQotewotICAgIGlmIChtX2NvbnRleHRzUmVxdWlyaW5n
SGlnaFBlcmZvcm1hbmNlLnNpemUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9yZXF1ZXN0
aW5nSGlnaFBlcmZvcm1hbmNlID0gZmFsc2U7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChh
dXRvKiBzaW5nbGV0b24gPSBTd2l0Y2hpbmdHUFVDbGllbnQ6OnNpbmdsZXRvbklmRXhpc3RzKCkp
Ci0gICAgICAgIHNpbmdsZXRvbi0+cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpOwotI2VuZGlm
Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpyZWN5Y2xlQ29udGV4
dElmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAoaGFzVG9vTWFueUNvbnRleHRzKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaAppbmRleCAzYWY4YTA1MmFl
OGUyYTE1ZDVjMDUxNzg0ZmIwODU0NWVlOWExZDY0Li5jMDEwNzZjZGFhYjIxMDNlOGViMWMzODZi
ZTc2MDEwMDlmNzcxYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlci5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
VGltZXIuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0zOCw1MiArMzYsMjcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY29uc3QgdW5zaWduZWQgTWF4Q29udGV4dHMgPSAxNjsKIAogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w7Ci1jbGFzcyBIb3N0V2luZG93OwotCi11c2luZyBQbGF0Zm9ybURp
c3BsYXlJRCA9IHVpbnQzMl90OwotCi0jaWYgSEFWRShBUFBMRV9HUkFQSElDU19DT05UUk9MKQot
V0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCk7Ci0jZW5kaWYKIAog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyIHsKICAgICBmcmllbmQgTmV2ZXJE
ZXN0cm95ZWQ8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyPjsKIHB1YmxpYzoKICAgICBz
dGF0aWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyJiBzaGFyZWRNYW5hZ2VyKCk7CiAg
ICAgCi0gICAgdm9pZCBhZGRDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgSG9zdFdp
bmRvdyopOworICAgIHZvaWQgYWRkQ29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopOwog
ICAgIHZvaWQgcmVtb3ZlQ29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopOwotCi0gICAg
SG9zdFdpbmRvdyogaG9zdFdpbmRvd0ZvckNvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
KSBjb25zdDsKLSAgICAKLSAgICB2b2lkIGFkZENvbnRleHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFu
Y2UoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKLSAgICB2b2lkIHJlbW92ZUNvbnRleHRSZXF1
aXJpbmdIaWdoUGVyZm9ybWFuY2UoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKICAgICAKICAg
ICB2b2lkIHJlY3ljbGVDb250ZXh0SWZOZWNlc3NhcnkoKTsKICAgICBib29sIGhhc1Rvb01hbnlD
b250ZXh0cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dHMuc2l6ZSgpID49IE1heENvbnRleHRz
OyB9CiAgICAgCi0gICAgdm9pZCB1cGRhdGVBbGxDb250ZXh0cygpOwotCiAjaWYgUExBVEZPUk0o
TUFDKQotICAgIHZvaWQgc2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBjb25zdCBI
b3N0V2luZG93Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGxheVdhc1Jl
Y29uZmlndXJlZChDR0RpcmVjdERpc3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdz
LCB2b2lkKik7CisgICAgdm9pZCBkaXNwbGF5V2FzUmVjb25maWd1cmVkKCk7CiAjZW5kaWYKICAg
ICAKIHByaXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyKCkKLSAgICAg
ICAgOiBtX2Rpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lcigqdGhpcywgJkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlcjo6ZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVyRmlyZWQp
Ci0gICAgewotICAgIH0KLQotICAgIHZvaWQgdXBkYXRlSGlnaFBlcmZvcm1hbmNlU3RhdGUoKTsK
LSAgICB2b2lkIGRpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lckZpcmVkKCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyKCkgPSBkZWZhdWx0OwogCiAgICAgVmVjdG9yPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKj4gbV9jb250ZXh0czsKLSAgICBIYXNoTWFwPEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiwgSG9zdFdpbmRvdyo+IG1fY29udGV4dFdpbmRvd01hcDsKLSAgICBI
YXNoU2V0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4gbV9jb250ZXh0c1JlcXVpcmluZ0hpZ2hQ
ZXJmb3JtYW5jZTsKLSAgICAKLSAgICBUaW1lciBtX2Rpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVU
aW1lcjsKLSAgICBib29sIG1fcmVxdWVzdGluZ0hpZ2hQZXJmb3JtYW5jZSB7IGZhbHNlIH07CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZjhiZDExM2E5ODZi
MDM3ODg3YjYwMWVkZmVlY2Y1YTQyZDJhY2U3Mi4uZDQ1Yjk1ZTkzNTg4MjhhOTRlMGJiYmY0YTJh
NzVkN2QzMTlkN2IzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzE5
LDcgKzMxOSw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NoZWNrc01h
Yy5oIgogI2luY2x1ZGUgIk5TU2Nyb2xsZXJJbXBEZXRhaWxzLmgiCiAjaW5jbHVkZSAiU2Nyb2xs
YmFyVGhlbWVNYWMuaCIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmgKaW5kZXggNTU1NmNiZDQ0ZjBmNTQ3
Y2Q2NWQzZGU0MWU1MjA2NWY4OTNkM2FhZS4uYWM2MjE5M2FjZmQ1YzJiNjQyYTU3NWFmMzQ3ZjVl
NTJlMDJmZTY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQ
ZXJmb3JtYW5jZUdQVU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgUExBVEZP
Uk0oTUFDKQogCiAjaW5jbHVkZSA8T3BlbkdML0NHTFR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9UaW1lci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKQEAgLTQ0LDEzICs0NSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dmVQcm9jZXNzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKFdlYlByb2Nlc3NQcm94eSopOwogCiBw
cml2YXRlOgotICAgIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIoKSA9IGRlZmF1bHQ7CisgICAg
SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcigpOwogICAgIH5IaWdoUGVyZm9ybWFuY2VHUFVNYW5h
Z2VyKCk7Ci0KICAgICB2b2lkIHVwZGF0ZVN0YXRlKCk7CiAKICAgICBIYXNoU2V0PFdlYlByb2Nl
c3NQcm94eSo+IG1fcHJvY2Vzc2VzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlOwogICAgIENHTFBp
eGVsRm9ybWF0T2JqIG1fcGl4ZWxGb3JtYXRPYmogeyBudWxscHRyIH07CisgICAgV2ViQ29yZTo6
VGltZXIgbV91cGRhdGVTdGF0ZVRpbWVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5tbQppbmRleCBh
OTZmYzNkMTEzNzk4ZTc5YWZjMGZkYjYyNjVmZGRhZmQwM2QwYWUwLi41OWRmZjhiMjNjODBjMDI2
NWJlZTUxOWY4NDYwNzM4ODRmNjE1Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5tbQpAQCAtMjksNyArMjks
NyBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NDaGVja3NNYWMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL09wZW5HTFNvZnRM
aW5rQ29jb2EuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw2ICs0NCwxMyBAQCBIaWdo
UGVyZm9ybWFuY2VHUFVNYW5hZ2VyJiBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpzaW5nbGV0
b24oKQogICAgIHJldHVybiBzaGFyZWRNYW5hZ2VyOwogfQogCitIaWdoUGVyZm9ybWFuY2VHUFVN
YW5hZ2VyOjpIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyKCkKKyAgICA6IG1fdXBkYXRlU3RhdGVU
aW1lcigqdGhpcywgJkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnVwZGF0ZVN0YXRlKQorewor
fQorCitIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjp+SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdl
cigpID0gZGVmYXVsdDsKKwogdm9pZCBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjphZGRQcm9j
ZXNzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKIHsK
ICAgICBpZiAoIVdlYkNvcmU6Omhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKSkKQEAgLTY1LDcgKzcy
LDggQEAgdm9pZCBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpyZW1vdmVQcm9jZXNzUmVxdWly
aW5nSGlnaFBlcmZvcm1hbmNlKFdlYlByb2Nlc3MKIAogICAgIGlmIChtX3Byb2Nlc3Nlc1JlcXVp
cmluZ0hpZ2hQZXJmb3JtYW5jZS5yZW1vdmUocHJvY2VzcykpIHsKICAgICAgICAgTE9HKFdlYkdM
LCAiSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6cmVtb3ZlUHJvY2Vzc1JlcXVpcmluZ0hpZ2hQ
ZXJmb3JtYW5jZSgpIC0gcmVtb3ZpbmcgcHJvY2VzcyAlcCIsIHByb2Nlc3MpOwotICAgICAgICB1
cGRhdGVTdGF0ZSgpOworICAgICAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB0aW1lVG9LZWVwSGln
aFBlcmZvcm1hbmNlR1BVQWxpdmUgeyAxMF9zIH07CisgICAgICAgIG1fdXBkYXRlU3RhdGVUaW1l
ci5zdGFydE9uZVNob3QodGltZVRvS2VlcEhpZ2hQZXJmb3JtYW5jZUdQVUFsaXZlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzQsNiArODIsOCBAQCB2b2lkIEhpZ2hQZXJmb3JtYW5j
ZUdQVU1hbmFnZXI6OnJlbW92ZVByb2Nlc3NSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoV2ViUHJv
Y2VzcwogCiB2b2lkIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnVwZGF0ZVN0YXRlKCkKIHsK
KyAgICBpZiAobV91cGRhdGVTdGF0ZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdXBkYXRl
U3RhdGVUaW1lci5zdG9wKCk7CiAgICAgaWYgKG1fcHJvY2Vzc2VzUmVxdWlyaW5nSGlnaFBlcmZv
cm1hbmNlLnNpemUoKSkgewogICAgICAgICBpZiAoIW1fcGl4ZWxGb3JtYXRPYmopIHsKICAgICAg
ICAgICAgIExPRyhXZWJHTCwgIkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIgLSB0dXJuaW5nIG9u
IGhpZ2gtcGVyZm9ybWFuY2UgR1BVLiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVD
bGllbnQuY3BwCmluZGV4IDQ0YzZiNDMyZTdkNWM1ZGFhNzhkOGQwMmFiNzdjNzkwYzE0YTkzNGEu
LmMxYzJhMmViZGM3Nzg3N2UxN2Y3YzE5MjUzMzU5Mzg1ZGFmNzg0N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BV
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAKQEAgLTQzLDEyICs0MywxOSBAQCBXZWJTd2l0
Y2hpbmdHUFVDbGllbnQmIFdlYlN3aXRjaGluZ0dQVUNsaWVudDo6c2luZ2xldG9uKCkKIAogdm9p
ZCBXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlcXVlc3RIaWdoUGVyZm9ybWFuY2VHUFUoKQogewor
ICAgIG1fcmVxdWVzdHMrKzsKKyAgICBpZiAobV9yZXF1ZXN0cyAhPSAxKQorICAgICAgICByZXR1
cm47CiAgICAgTE9HKFdlYkdMLCAiV2ViU3dpdGNoaW5nR1BVQ2xpZW50OjpyZXF1ZXN0SGlnaFBl
cmZvcm1hbmNlR1BVKCkgZnJvbSBXZWJQcm9jZXNzIik7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpSZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCksIDApOwogfQogCiB2b2lkIFdlYlN3
aXRjaGluZ0dQVUNsaWVudDo6cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpCiB7CisgICAgQVNT
RVJUKG1fcmVxdWVzdHMpOworICAgIG1fcmVxdWVzdHMtLTsKKyAgICBpZiAobV9yZXF1ZXN0cykK
KyAgICAgICAgcmV0dXJuOwogICAgIExPRyhXZWJHTCwgIldlYlN3aXRjaGluZ0dQVUNsaWVudDo6
cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpIGZyb20gV2ViUHJvY2VzcyIpOwogICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6UmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpLCAwKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5oCmluZGV4IDIwZWIyZWUyNTcxZmVi
YTJkYTQ4NGYyMTg3Nzc4YjEyOTQwYWU1MzMuLmJiODFkOGE2MDhhYjFmZGE0NWYwN2VhN2IzOGE2
MzQ1MTllNzg0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuaApAQCAt
MzIsOSArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJTd2l0Y2hpbmdHUFVD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6U3dpdGNoaW5nR1BVQ2xpZW50IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgV2ViU3dpdGNoaW5nR1BVQ2xpZW50JiBzaW5nbGV0b24oKTsKLSAgICAKK3ByaXZh
dGU6CiAgICAgdm9pZCByZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZWxlYXNlSGlnaFBlcmZvcm1hbmNlR1BVKCkgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQg
bV9yZXF1ZXN0cyB7IDAgfTsKIH07CiAKIH0K
</data>
<flag name="commit-queue"
          id="435988"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418114</attachid>
            <date>2021-01-22 00:27:16 -0800</date>
            <delta_ts>2021-01-22 02:33:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220843-20210122102712.patch</filename>
            <type>text/plain</type>
            <size>60034</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWMyOTFmOTQyNmU1YTY2
ZjBhYTY1ZmJmNTM0ZGUzM2NkOWIyYzE1ZS4uYWUxMmNhMThlOGExNTdiNjc3MDdhODQwNGJjN2Qy
MzRkZjBhNGQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTAxLTIyICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgcG93ZXIg
cHJlZmVyZW5jZSBhbmQgZGlzY3JldGUvaW50ZXJuYWwgZ3B1IHNlbGVjdGlvbiBpbXBsZW1lbnRl
ZCBpbmNvcnJlY3RseSB3aXRoIEFOR0xFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjA4NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgQU5HTEUgZXh0ZW5zaW9uIEVHTF9BTkdMRV9wb3dlcl9wcmVm
ZXJlbmNlIHRvIHNpZ25hbCB0byBBTkdMRSB0aGF0IHRoZSB1bmRlcmx5aW5nCisgICAgICAgIENH
TCBjb250ZXh0IHNob3VsZCBiZSB1cGRhdGVkIGFzIGEgcmVzcG9uc2UgdG8gZGlzcGxheSByZWNv
bmZpZ3VyYXRpb24gc2lnbmFsLgorICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCBBTkdMRSBzdGF0
ZSBzdGF5cyBjb25zaXN0ZW50IHdpdGggdGhlIGFjdHVhbCBDR0wgY29udGV4dCBiZWhhdmlvciwg
YXMKKyAgICAgICAgd2UgZG9uJ3QgY2hhbmdlIHRoZSBjb250ZXh0IGJlaGluZCBBTkdMRSdzIGJh
Y2suCisKKyAgICAgICAgUmVtb3ZlIHRoZSBmZWF0dXJlIHdoZXJlIHRoZSBjb250ZXh0IEdQVSBp
cyBzZWxlY3RlZCBiYXNlZCBvbiB0aGUgZGlzcGxheSB0aGUgd2luZG93IGlzCisgICAgICAgIG9u
LiBUaGlzIGNhbm5vdCB3b3JrIHdpdGggdGhlIGxvZ2ljIG9mICJwb3dlclByZWZlcmVuY2UgPSAi
aGlnaC1wZXJmb3JtYW5jZSIgZ29lcyB0bworICAgICAgICBkaXNjcmV0ZSBHUFUiLiBBbHNvLCB0
aGlzIGNhbm5vdCB3b3JrIHdpdGggQU5HTEUgYXQgYWxsLCBzaW5jZSBhbGwgY29udGV4dHMgYXJl
IGJhY2tlZAorICAgICAgICBieSBhIHNpbmdsZSBwbGF0Zm9ybSBjb250ZXh0LiBUaHVzIGFsbCBj
b250ZXh0cyB3aWxsIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIEdQVS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgZHVlIHRvIHRoZSB0ZXN0IHJ1bm5lciBtaXNzaW5nIGZlYXR1cmVzLiBUaGUgYnVn
IGJsb2NrZXJzIHRyYWNrIHRoZSB0ZXN0aW5nLgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21h
a2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0hpZ2hQZXJmb3JtYW5jZUNv
bnRleHQpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250
ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZGlzcGxheVdhc1JlY29uZmlndXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjphdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6
Omhhc011eENhcGFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6aGFzTG93QW5kSGlnaFBvd2Vy
R1BVcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFj
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1Njb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oLgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6U2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0Ojp+U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0OjpvcGVyYXRv
cj0pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6
YWNxdWlyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNs
aWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnJlbW92ZUNv
bnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisK
IDIwMjEtMDEtMTUgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBWDogaW5jcmVtZW50L2RlY3JlbWVudCBzeW50aGV0aWMgYXJyb3cgZXZlbnRzIGRvbid0
IHdvcmsgaW4gQVJJQSBzbGlkZXIgZXhhbXBsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTU5ZmYyOTRlYjdkNmNl
Nzk2ZjJlMjkwYWIxNzU5MGYxNTNhODM0YS4uOTMwODM1YzI1YTZiZWQ2NTllZDc4NjQ0Mjg2MDc0
NTMxYzFlZmZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wMS0yMiAgS2ltbW8g
S2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIHBvd2VyIHBy
ZWZlcmVuY2UgYW5kIGRpc2NyZXRlL2ludGVybmFsIGdwdSBzZWxlY3Rpb24gaW1wbGVtZW50ZWQg
aW5jb3JyZWN0bHkgd2l0aCBBTkdMRQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwODQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTW92ZSB0aGUgaGlnaC1wZXJmb3JtYW5jZSBHUFUgc2h1dGRvd24gdGlt
ZXIgZnJvbSBpbmRpdmlkdWFsIHdlYiBwcm9jZXNzZXMgdG8gdGhlIG1haW4gY2xhc3MKKyAgICAg
ICAgaW4gdGhlIHVpIHByb2Nlc3MuIFRoaXMgc2ltcGxpZmllcyB0aGUgaW1wbGVtZW50YXRpb24g
YW5kIHJlZHVjZXMgdGhlIG51bWJlciBvZiB0aW1lcnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OkhpZ2hQZXJm
b3JtYW5jZUdQVU1hbmFnZXI6OkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpyZW1vdmVQcm9jZXNzUmVxdWlyaW5n
SGlnaFBlcmZvcm1hbmNlKToKKyAgICAgICAgKFdlYktpdDo6SGlnaFBlcmZvcm1hbmNlR1BVTWFu
YWdlcjo6dXBkYXRlU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlN3aXRj
aGluZ0dQVUNsaWVudDo6cmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlN3aXRjaGluZ0dQVUNsaWVudDo6cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xp
ZW50Lmg6CisKIDIwMjEtMDEtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNjc3NjMpIFVwbG9hZGluZyB6aXBwZWQg
ZGlyZWN0b3JpZXMgZG9lcyBub3Qgd29yayBvbiBpT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UK
aW5kZXggYWM3MDE1NDk5Nzk5ZTRmYjRlZTJhMGRlMDFiNDM1MTJiMDlhMWY4ZS4uY2FkMjY0NDlj
NzRjODVjYWNiOTY1YjM5YzhmYjc1MjkwMWZjYTZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UKQEAgLTM0MCw2ICszNDAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRQb2ludE1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9GbG9hdFNpemVNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3ND
aGVja3NNYWMuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvSW50UG9pbnRNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDNiZTE3NThjZDg3
NTUzOWFjN2QyYzZkYWEwNzhmMGNiMzAyYzg3MTMuLmU4N2Q0ZGQwNzlhNTVmNjlkMjE3M2JkZjEx
MmMyZWY5ZjlhNmVjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNDE4LDYgKzQxOCw3
IEBAIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRQb2ludE1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0Zsb2F0U2l6ZU1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDaGVja3NNYWMuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ltYWdlTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50UG9pbnRNYWMubW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0
MTlhMDkxMTg0MzFiM2JmYmVmNWYwMDY2YzAxMzA0MjJmMDQ3ZWNmLi5jODQ3OGE4NTc1YmIyZjA3
OTRiN2Q4OWViOGZlMTZjYTk2MGE3YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMjU3LDYgKzIyNTcsOSBAQAogCQk3Qjkw
NDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTA0MTZF
MjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQjM0QTE3
MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1
Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovOyB9Owog
CQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJh
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JC
MzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QkI2
ODBCMjI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCNjgwQjAy
NUJBMEQ0QTAwMkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QkI2ODBCNjI1
QkExQUUyMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCNjgwQjQyNUJBMUFF
MTAwMkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLzsgfTsKKwkJ
N0JCNjgwQkEyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2ODBCODI1QkExQkU0MDAy
Qjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyogSlNTVkdH
cmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5o
ICovOyB9OwogCQk3QzAyOUM2RTI0OTNDOEY4MDAyNjgyMDQgLyogQ29sb3JUeXBlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwMjlDNkQyNDkzQzhG
ODAwMjY4MjA0IC8qIENvbG9yVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QzE4NDNGRTFDOEI3MjgzMDAyRUI5NzMgLyogQXV0b2ZpbGwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0M0ZD
MUM4QjcyODMwMDJFQjk3MyAvKiBBdXRvZmlsbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI4NSw2ICsxMDI4OCwxMCBAQAogCQk3QkIzNEEx
NjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRp
bGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYw
MDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJ
bWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQjY4MEIw
MjVCQTBENEEwMDJCODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJl
cXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCNjgwQjQyNUJBMUFFMTAw
MkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkI2ODBCNzI1QkExQkUzMDAyQjg3MzggLyog
R3JhcGhpY3NDaGVja3NNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR3JhcGhpY3NDaGVja3NNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QkI2ODBCODI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0MwMTFGM0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdzLmNwcC5lcmIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2V0dGlu
Z3MuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0UyNEZBRDM2
MDAwNUJFRjEwIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnRl
cm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNjQ4MiwxMSArMjY0ODksMTUgQEAKIAkJCQlCMjc1MzU0RDBCMDUzODE0MDAyQ0U2NEYg
LyogRmxvYXRTaXplTWFjLm1tICovLAogCQkJCUIyQUZGQzc1MEQwMEE1QzEwMDMwMDc0RCAvKiBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCAqLywKIAkJCQlCMkFGRkM3NjBEMDBBNUMxMDAzMDA3
NEQgLyogRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oICovLAorCQkJCTdCQjY4MEI3MjVCQTFCRTMw
MDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5jcHAgKi8sCisJCQkJN0JCNjgwQjgyNUJBMUJF
NDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8sCiAJCQkJQjI3NTM1OEQwQjA1M0E2
NjAwMkNFNjRGIC8qIEljb25NYWMubW0gKi8sCiAJCQkJQjI3NTM1NEUwQjA1MzgxNDAwMkNFNjRG
IC8qIEltYWdlTWFjLm1tICovLAogCQkJCUIyNzUzNTRGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQ
b2ludE1hYy5tbSAqLywKIAkJCQlCMjc1MzU1MTBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZU1h
Yy5tbSAqLywKIAkJCQkyRDZFNDY4MjE3RDY2MEY1MDBFQ0Y4QkIgLyogUERGRG9jdW1lbnRJbWFn
ZU1hYy5tbSAqLywKKwkJCQk3QkI2ODBCNDI1QkExQUUxMDAyQjg3MzggLyogU2NvcGVkSGlnaFBl
cmZvcm1hbmNlR1BVUmVxdWVzdC5oICovLAorCQkJCTdCQjY4MEIwMjVCQTBENEEwMDJCODczOCAv
KiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8sCiAJCQkJMTYzRTg4RjUxMThB
MzlEMjAwRUQ5MjMxIC8qIFNpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwICovLAogCQkJCUMxMUE5
RUQyMjE0MDU3OEIwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuY3BwICovLAogCQkJCUMx
MUE5RUNEMjE0MDNBNUMwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCAqLywKQEAgLTMy
MjE4LDYgKzMyMjI5LDcgQEAKIAkJCQlCQzUzQzVGNTBEQTU2QjkyMDAyMUVCNUQgLyogR3JhZGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTY0MEQwMEJGMjIwMDcxQjc4MiAvKiBHcmFk
aWVudEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENDgxRjA0MTQ2QjVDNkIwMEFB
NzgzNCAvKiBHcmFkaWVudEltYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QkI2ODBCQTI1QkEx
QkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
QTAxNUE5MEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc0NvbnRleHQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzNDkwN0U0MTI1QkJCQzgwMDdGMjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEzREU4NzAyM0E5Njk3MzAwOEZDNDdCIC8qIEdyYXBoaWNzQ29u
dGV4dEdMLmggaW4gSGVhZGVycyAqLywKQEAgLTMzMDQ2LDcgKzMzMDU4LDYgQEAKIAkJCQlFNDQ2
MTQxOTBDRDY4MjY5MDBGQURBNzUgLyogSlNNZWRpYUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDREY3NTZBMzIxNUMyOUU5MDBFRkNCNTAgLyogSlNNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJEOUJGNzI4MURCRkRCMEQwMDdBN0Q5OSAvKiBKU01lZGlh
S2V5TWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDQwRkQ1MzI1QTRBRkRGMDBG
N0M4NDkgLyogTWFya2VkVGV4dFN0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDlCRjcyOTFE
QkZEQjEwMDA3QTdEOTkgLyogSlNNZWRpYUtleXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOUJG
NzJBMURCRkRCMTMwMDdBN0Q5OSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0RGNEI3MUUxRTAxRTExQTAwRTIzNUEyIC8qIEpTTWVkaWFLZXlTZXNzaW9uVHlwZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMzYxMyw2ICszMzYyNCw3IEBACiAJCQkJN0FFNkM5M0MxQkUw
QzYwMTAwRTE5RTAzIC8qIE1haW5UaHJlYWRTaGFyZWRUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTQ1MUM2MzIyMzk0MDMxQTAwOTkzMTkwIC8qIE1hcmdpblR5cGVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRTE4NjY0NTFGNzJFNUI0MDBBMENBQjYgLyogTWFya2VkVGV4dC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTQ0MEZENTMyNUE0QUZERjAwRjdDODQ5IC8qIE1hcmtlZFRleHRTdHlsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERjgwOTlFNjQ5MjAwNTZFNTgxIC8qIG1hcmt1cC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTcyOEMzMTQxMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFj
Y3VtdWxhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMEM2MEUzRjEzRDc2RDdFMDA5MkEyNzUg
LyogTWFya3VwVG9rZW5pemVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDQzOCw2ICsz
NDQ1MCw4IEBACiAJCQkJNDlFOTExQ0IwRUY4NkQ0NzAwOUQwQ0FGIC8qIFNjYWxlVHJhbnNmb3Jt
T3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1REZFOEY1NzBEMTY0NzdDMDA3NkU5Mzcg
LyogU2NoZWR1bGVkQWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkQwQkY5MzEyQTQyQkY1
MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JCNjgw
QjYyNUJBMUFFMjAwMkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCBp
biBIZWFkZXJzICovLAorCQkJCTdCQjY4MEIyMjVCQTBENEEwMDJCODczOCAvKiBTY29wZWRIaWdo
UGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VDMDFCRTBDMjc0
REFDMDA5RjRFQzkgLyogU2NyZWVuLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMUUxRDIzNjIwM0RG
MTU0MDA1ODQ2NjUgLyogU2NyZWVuUHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg0
RDgyQzExMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDk0Mzk2MDYwODYxMzA5MzkwOTVjZjIyN2Y3
MTlkZjAxOTY3YjA3M2YuLmU0ZGQzMDZmMzNiNWFkMmM3ZGRkN2Y4OWY5NmQyNDNlZjUwZDBjZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCkBAIC02NDIsNyArNjQyLDcgQEAgcHJpdmF0ZToKIAogc3RhdGlj
IGJvb2wgaXNIaWdoUGVyZm9ybWFuY2VDb250ZXh0KGNvbnN0IFJlZlB0cjxHcmFwaGljc0NvbnRl
eHRHTD4mIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQtPnBvd2VyUHJlZmVyZW5jZVVz
ZWRGb3JDcmVhdGlvbigpID09IFdlYkdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U7
CisgICAgcmV0dXJuIGNvbnRleHQtPmNvbnRleHRBdHRyaWJ1dGVzKCkucG93ZXJQcmVmZXJlbmNl
ID09IFdlYkdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U7CiB9CiAKIHN0ZDo6dW5p
cXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpjcmVhdGUoQ2FudmFzQmFzZSYgY2FudmFzLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLCBXZWJHTFZlcnNpb24gdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCBi
NzEwZTcxNWE2NmRjYWM1Njc0MmRiNmJiZWE3NDFkNmY4NjM0MmIzLi40YTU1ZjlkYTFjNWI1MWY2
YzI0YTBiMGU1YzVjNmZiYjNmNTQ5YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC02Nywx
MCArNjcsNiBAQAogI2luY2x1ZGUgIkRhdGVUaW1lQ2hvb3Nlci5oIgogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShNQUMpICYmIEVOQUJMRShXRUJHTCkKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TE9wZW5HTE1hbmFnZXIuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC01NDgsMTAgKzU0NCw2IEBAIHZvaWQgQ2hyb21lOjp3
aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBPcHRpb25h
bDx1bnNpZ25lCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS53aW5kb3dTY3JlZW5EaWRD
aGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZhbCk7Ci0KLSNpZiBQTEFURk9STShN
QUMpICYmIEVOQUJMRShXRUJHTCkKLSAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6
OnNoYXJlZE1hbmFnZXIoKS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlzKTsKLSNlbmRp
ZgogfQogCiBib29sIENocm9tZTo6c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMLmgKaW5kZXggYWE4ZmYyMzY4ZGZmZDg5Y2VhYjZhNDQzMzMwZGI0NTE2YTE4ZjlmNS4u
ZjQ3ZjFhZTFmZDczZjlkNDI5M2ExMDNhZWEyMmZjNmUwNDdmZTY3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0x
MjU1LDggKzEyNTUsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGV4dFZp
c2liaWxpdHkoYm9vbCkgPSAwOwogCi0gICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHRHTFBvd2Vy
UHJlZmVyZW5jZSBwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdCA9IDA7Ci0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0ID0gMDsKIAogICAgIC8v
IFN5bnRoZXNpemVzIGFuIE9wZW5HTCBlcnJvciB3aGljaCB3aWxsIGJlIHJldHVybmVkIGZyb20g
YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCmluZGV4IDU1MmQ4NTM5
YjY5NTAwY2YxMTY5NjgwZDRiNWM2Mjg1ODU4Yjc3MzcuLmU1MGY4ZmI0YzVjMzY3MDQ2MWM4MTM0
NWU0NDM3M2M2YTRkYTEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5jcHAKQEAgLTQ5LDEyICs0OSw2IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAotR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpIGNvbnN0Ci17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4geyB9OwotfQotCiBib29sIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoV0VCR0wyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgK
aW5kZXggMjQ3MWQ0ZTI1YzlhYTIwMGVjNzQzYjFmZTBjNjQ2OGIwYzlhNTA4My4uMjg4YzJlYThh
ZDM5ZTg5YjY5NjlmZDBiMjE2YjhiNjdiMGJlZGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZS5oCkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CiAgICAgRXh0ZW5zaW9uc0dMJiBnZXRF
eHRlbnNpb25zKCkgZmluYWw7CiAgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBm
aW5hbDsKLSAgICBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZSBwb3dlclByZWZlcmVu
Y2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwog
ICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCBiZDIzNzEzY2ZhMWUzMGMzZDRiYjQ0Yzdm
MTFlZjViMWZiNDgyZjFjLi5iMjE3NTFiZmYxNTEyNzJjZjI4ZDRkZGRhNmQxYjRjNTJjYzA1M2Rk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTIwLDcg
KzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCkBAIC0z
Miw5ICszMiw3IEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgi
CiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCi0jaW1wb3J0ICJIb3N0V2luZG93
LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJPcGVuR0xTb2Z0TGlua0NvY29hLmgi
CiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIldlYkNvcmVU
aHJlYWQuaCIKICNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKQEAgLTQyLDExICs0MCw2IEBACiAjaW1w
b3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCi0jaWYgUExBVEZPUk0oTUFDKQotI2ltcG9ydCAiU2NyZWVuUHJvcGVydGllcy5oIgot
I2ltcG9ydCA8T3BlbkdML0NHTFJlbmRlcmVycy5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoVklE
RU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xDVi5o
IgogI2VuZGlmCkBAIC0xNTEsMTcgKzE0NCwxNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0Rwog
ICAgIGlmICghY29udGV4dC0+bV9jb250ZXh0T2JqKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFk
ZENvbnRleHQoY29udGV4dC5nZXQoKSwgaG9zdFdpbmRvdyk7CisgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0LmdldCgp
KTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCiBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQoR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wmIHNoYXJlZENvbnRleHQpCiB7Ci0gICAgYXV0byBob3N0V2luZG93ID0gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaG9zdFdpbmRvd0ZvckNv
bnRleHQoJnNoYXJlZENvbnRleHQpOwotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygp
LCBob3N0V2luZG93LCAmc2hhcmVkQ29udGV4dCwgbnVsbHB0cikpOwogCi0gICAgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0
LnB0cigpLCBob3N0V2luZG93KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKSwg
bnVsbHB0ciwgJnNoYXJlZENvbnRleHQsIG51bGxwdHIpKTsKKworICAgIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5wdHIo
KSk7CiAKICAgICByZXR1cm4gY29udGV4dDsKIH0KQEAgLTE3MSw2NyArMTY0LDExIEBAIFJlZjxH
cmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZv
ckdQVVByb2Nlc3MoY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTChhdHRycywgbnVsbHB0ciwgbnVsbHB0ciwgc3dhcENoYWluKSk7CiB9CiAKLSNp
ZiBQTEFURk9STShNQUMpIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3VsZCBiZSBqdXN0IGVu
YWJsZWQgLSBzZWUgPHJkYXI6Ly81MzA2Mjc5ND4uCi0KLXN0YXRpYyB2b2lkIHNldEdQVUJ5UmVn
aXN0cnlJRChDR0xDb250ZXh0T2JqIGNvbnRleHRPYmosIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVs
Rm9ybWF0T2JqLCBJT1JlZ2lzdHJ5R1BVSUQgcHJlZmVycmVkR1BVSUQpCi17Ci0gICAgLy8gV2hl
biB0aGUgV2ViUHJvY2VzcyBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgV2luZG93U2VydmVy
LCB0aGVyZSBpcyBubyB3YXkgZm9yIE9wZW5HTCB0byB0ZWxsIHdoaWNoIEdQVSBpcyBjb25uZWN0
ZWQgdG8gYSBkaXNwbGF5LgotICAgIC8vIE9uIDEwLjEzKywgZmluZCB0aGUgdmlydHVhbCBzY3Jl
ZW4gdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgcHJlZmVycmVkIEdQVSBieSBpdHMgcmVnaXN0cnlJ
RC4KLSAgICAvLyBDR0xTZXRWaXJ0dWFsU2NyZWVuIGNhbiB0aGVuIGJlIHVzZWQgdG8gdGVsbCBP
cGVuR0wgd2hpY2ggR1BVIGl0IHNob3VsZCBiZSB1c2luZy4KLQotICAgIGlmICghY29udGV4dE9i
aiB8fCAhcHJlZmVycmVkR1BVSUQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdMaW50IHZpcnR1
YWxTY3JlZW5Db3VudCA9IDA7Ci0gICAgQ0dMRXJyb3IgZXJyb3IgPSBDR0xEZXNjcmliZVBpeGVs
Rm9ybWF0KHBpeGVsRm9ybWF0T2JqLCAwLCBrQ0dMUEZBVmlydHVhbFNjcmVlbkNvdW50LCAmdmly
dHVhbFNjcmVlbkNvdW50KTsKLSAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5vRXJyb3IpOwotCi0g
ICAgR0xpbnQgZmlyc3RBY2NlbGVyYXRlZFNjcmVlbiA9IC0xOwotCi0gICAgZm9yIChHTGludCB2
aXJ0dWFsU2NyZWVuID0gMDsgdmlydHVhbFNjcmVlbiA8IHZpcnR1YWxTY3JlZW5Db3VudDsgKyt2
aXJ0dWFsU2NyZWVuKSB7Ci0gICAgICAgIEdMaW50IGRpc3BsYXlNYXNrID0gMDsKLSAgICAgICAg
ZXJyb3IgPSBDR0xEZXNjcmliZVBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0T2JqLCB2aXJ0dWFsU2Ny
ZWVuLCBrQ0dMUEZBRGlzcGxheU1hc2ssICZkaXNwbGF5TWFzayk7Ci0gICAgICAgIEFTU0VSVChl
cnJvciA9PSBrQ0dMTm9FcnJvcik7Ci0KLSAgICAgICAgYXV0byBncHVJRCA9IGdwdUlERm9yRGlz
cGxheU1hc2soZGlzcGxheU1hc2spOwotCi0gICAgICAgIGlmIChncHVJRCA9PSBwcmVmZXJyZWRH
UFVJRCkgewotICAgICAgICAgICAgZXJyb3IgPSBDR0xTZXRWaXJ0dWFsU2NyZWVuKGNvbnRleHRP
YmosIHZpcnR1YWxTY3JlZW4pOwotICAgICAgICAgICAgQVNTRVJUKGVycm9yID09IGtDR0xOb0Vy
cm9yKTsKLSAgICAgICAgICAgIExPRyhXZWJHTCwgIkNvbnRleHQgKCVwKSBzZXQgdG8gR1BVIHdp
dGggSUQ6ICglbGxkKS4iLCBjb250ZXh0T2JqLCBncHVJRCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZmlyc3RBY2NlbGVyYXRlZFNjcmVlbiA8IDApIHsK
LSAgICAgICAgICAgIEdMaW50IGlzQWNjZWxlcmF0ZWQgPSAwOwotICAgICAgICAgICAgZXJyb3Ig
PSBDR0xEZXNjcmliZVBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0T2JqLCB2aXJ0dWFsU2NyZWVuLCBr
Q0dMUEZBQWNjZWxlcmF0ZWQsICZpc0FjY2VsZXJhdGVkKTsKLSAgICAgICAgICAgIEFTU0VSVChl
cnJvciA9PSBrQ0dMTm9FcnJvcik7Ci0gICAgICAgICAgICBpZiAoaXNBY2NlbGVyYXRlZCkKLSAg
ICAgICAgICAgICAgICBmaXJzdEFjY2VsZXJhdGVkU2NyZWVuID0gdmlydHVhbFNjcmVlbjsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIC8vIE5vIHJlZ2lzdHJ5SUQgbWF0Y2ggZm91bmQ7IHNldCB0
byBmaXJzdCBoYXJkd2FyZS1hY2NlbGVyYXRlZCB2aXJ0dWFsIHNjcmVlbi4KLSAgICBpZiAoZmly
c3RBY2NlbGVyYXRlZFNjcmVlbiA+PSAwKSB7Ci0gICAgICAgIGVycm9yID0gQ0dMU2V0VmlydHVh
bFNjcmVlbihjb250ZXh0T2JqLCBmaXJzdEFjY2VsZXJhdGVkU2NyZWVuKTsKLSAgICAgICAgQVNT
RVJUKGVycm9yID09IGtDR0xOb0Vycm9yKTsKLSAgICAgICAgTE9HKFdlYkdMLCAiUmVnaXN0cnlJ
RCAoJWxsZCkgbm90IG1hdGNoZWQ7IENvbnRleHQgKCVwKSBzZXQgdG8gdmlydHVhbCBzY3JlZW4g
KCVkKS4iLCBwcmVmZXJyZWRHUFVJRCwgY29udGV4dE9iaiwgZmlyc3RBY2NlbGVyYXRlZFNjcmVl
bik7Ci0gICAgfQotfQotCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQotCi1HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCogc2hhcmVkQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4q
IHN3YXBDaGFpbikKK0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqLCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4qIHN3YXBDaGFpbikKICAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJz
LCBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBzaGFyZWRDb250ZXh0KQogewogICAgIG1faXNGb3JX
ZWJHTDIgPSBhdHRycy53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNp
b246OldlYkdMMjsKIAotI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKLSAgICBtX3Bv
d2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbiA9IChoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkg
JiYgYXR0cnMucG93ZXJQcmVmZXJlbmNlID09IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJl
bmNlOjpIaWdoUGVyZm9ybWFuY2UpID8gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6
OkhpZ2hQZXJmb3JtYW5jZSA6IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZh
dWx0OwotI2Vsc2UKLSAgICBtX3Bvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbiA9IEdyYXBo
aWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0OwotI2VuZGlmCi0KICAgICBtX2Rp
c3BsYXlPYmogPSBJbml0aWFsaXplRUdMRGlzcGxheShhdHRycyk7CiAgICAgaWYgKG1fZGlzcGxh
eU9iaiA9PSBFR0xfTk9fRElTUExBWSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjkwLDExICsyMjcs
MTUgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICBlZ2xDb250ZXh0QXR0cmlidXRlcy5h
cHBlbmQoRUdMX0NPTlRFWFRfQklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU0pOwogICAg
IGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfRkFMU0UpOwogCi0gICAgaWYgKHN0cnN0
cihkaXNwbGF5RXh0ZW5zaW9ucywgIkVHTF9BTkdMRV9wb3dlcl9wcmVmZXJlbmNlIikpIHsKLSAg
ICAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9QT1dFUl9QUkVGRVJFTkNFX0FO
R0xFKTsKLSAgICAgICAgLy8gRUdMX0xPV19QT1dFUl9BTkdMRSBpcyB0aGUgZGVmYXVsdC4gQ2hh
bmdlIHRvCi0gICAgICAgIC8vIEVHTF9ISUdIX1BPV0VSX0FOR0xFIGlmIGRlc2lyZWQuCi0gICAg
ICAgIGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfTE9XX1BPV0VSX0FOR0xFKTsKKyAg
ICBib29sIHN1cHBvcnRzUG93ZXJQcmVmZXJlbmNlID0gZmFsc2U7CisjaWYgUExBVEZPUk0oTUFD
KQorICAgIG1fc3VwcG9ydHNQb3dlclByZWZlcmVuY2UgPSBzdHJzdHIoZGlzcGxheUV4dGVuc2lv
bnMsICJFR0xfQU5HTEVfcG93ZXJfcHJlZmVyZW5jZSIpOworICAgIHN1cHBvcnRzUG93ZXJQcmVm
ZXJlbmNlID0gbV9zdXBwb3J0c1Bvd2VyUHJlZmVyZW5jZTsKKyNlbmRpZgorICAgIGlmICghc3Vw
cG9ydHNQb3dlclByZWZlcmVuY2UpIHsKKyAgICAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRy
aWJ1dGVzKCk7CisgICAgICAgIGF0dHJzLnBvd2VyUHJlZmVyZW5jZSA9IEdyYXBoaWNzQ29udGV4
dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0OworICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRl
cyhhdHRycyk7CiAgICAgfQogICAgIGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfTk9O
RSk7CiAKQEAgLTMzMiwyMSArMjczLDYgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICAg
ICAgfQogICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoZXh0ZW5zaW9uKTsKICAgICB9
Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIC8vIEZJWE1FOiBJdCdzIHVuY2xlYXIgaWYgTUFDQ0FU
QUxZU1Qgc2hvdWxkIHRha2UgdGhlc2Ugc3RlcHMgYXMgd2VsbCwgYnV0IHRoYXQKLSAgICAvLyB3
b3VsZCByZXF1aXJlIHRoZSBQbGF0Zm9ybVNjcmVlbk1hYyBjb2RlIHRvIGJlIGV4cG9zZWQgdG8g
Q2F0YWx5c3QgdG9vLgotICAgIEVHTERldmljZUVYVCBkZXZpY2UgPSBudWxscHRyOwotICAgIEVH
TF9RdWVyeURpc3BsYXlBdHRyaWJFWFQobV9kaXNwbGF5T2JqLCBFR0xfREVWSUNFX0VYVCwgcmVp
bnRlcnByZXRfY2FzdDxFR0xBdHRyaWIqPigmZGV2aWNlKSk7Ci0gICAgQ0dMQ29udGV4dE9iaiBj
Z2xDb250ZXh0ID0gbnVsbHB0cjsKLSAgICBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdCA9
IG51bGxwdHI7Ci0gICAgRUdMX1F1ZXJ5RGV2aWNlQXR0cmliRVhUKGRldmljZSwgRUdMX0NHTF9D
T05URVhUX0FOR0xFLCByZWludGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZjZ2xDb250ZXh0KSk7
Ci0gICAgRUdMX1F1ZXJ5RGV2aWNlQXR0cmliRVhUKGRldmljZSwgRUdMX0NHTF9QSVhFTF9GT1JN
QVRfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJnBpeGVsRm9ybWF0KSk7Ci0g
ICAgYXV0byBncHVJRCA9IChob3N0V2luZG93ICYmIGhvc3RXaW5kb3ctPmRpc3BsYXlJRCgpKSA/
IGdwdUlERm9yRGlzcGxheShob3N0V2luZG93LT5kaXNwbGF5SUQoKSkgOiBwcmltYXJ5R1BVSUQo
KTsKLSAgICBzZXRHUFVCeVJlZ2lzdHJ5SUQoY2dsQ29udGV4dCwgcGl4ZWxGb3JtYXQsIGdwdUlE
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGhvc3RXaW5kb3cpOwotI2VuZGlmCi0KICAgICB2
YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKICAgICBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7IC8v
IFRoZXkgbWF5IGhhdmUgY2hhbmdlZCBkdXJpbmcgdmFsaWRhdGlvbi4KIApAQCAtNTYxLDMwICs0
ODcsMjQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2hlY2tHUFVTdGF0dXMoKQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29s
IGlzVmlzaWJsZSkKIHsKLSAgICBpZiAobV9wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24g
PT0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkgewot
ICAgICAgICBpZiAoaXNWaXNpYmxlKQotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dFJlcXVpcmluZ0hpZ2hQZXJmb3Jt
YW5jZSh0aGlzKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3ZlQ29udGV4dFJlcXVpcmluZ0hpZ2hQ
ZXJmb3JtYW5jZSh0aGlzKTsKLSAgICB9CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChjb250
ZXh0QXR0cmlidXRlcygpLnBvd2VyUHJlZmVyZW5jZSAhPSBHcmFwaGljc0NvbnRleHRHTFBvd2Vy
UHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlKQorICAgICAgICByZXR1cm47CisgICAgbV9oaWdo
UGVyZm9ybWFuY2VHUFVSZXF1ZXN0ID0gaXNWaXNpYmxlID8gU2NvcGVkSGlnaFBlcmZvcm1hbmNl
R1BVUmVxdWVzdDo6YWNxdWlyZSgpIDogeyB9OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaXNW
aXNpYmxlKTsKKyNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oTUFDKQotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dXBkYXRlQ0dMQ29udGV4dCgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKCkKIHsKLSAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIW1fc3VwcG9ydHNQb3dlclBy
ZWZlcmVuY2UpCiAgICAgICAgIHJldHVybjsKLSAgICBMT0coV2ViR0wsICJEZXRlY3RlZCBhIG11
eCBzd2l0Y2ggb3IgZGlzcGxheSByZWNvbmZpZ3VyYXRpb24uIENhbGwgQ0dMVXBkYXRlQ29udGV4
dC4gKCVwKSIsIHRoaXMpOwotCi0gICAgRUdMRGV2aWNlRVhUIGRldmljZSA9IG51bGxwdHI7Ci0g
ICAgRUdMX1F1ZXJ5RGlzcGxheUF0dHJpYkVYVChtX2Rpc3BsYXlPYmosIEVHTF9ERVZJQ0VfRVhU
LCByZWludGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZkZXZpY2UpKTsKLSAgICBDR0xDb250ZXh0
T2JqIGNnbENvbnRleHQgPSBudWxscHRyOwotICAgIEVHTF9RdWVyeURldmljZUF0dHJpYkVYVChk
ZXZpY2UsIEVHTF9DR0xfQ09OVEVYVF9BTkdMRSwgcmVpbnRlcnByZXRfY2FzdDxFR0xBdHRyaWIq
PigmY2dsQ29udGV4dCkpOwotCi0gICAgQ0dMVXBkYXRlQ29udGV4dChjZ2xDb250ZXh0KTsKLSAg
ICBtX2hhc1N3aXRjaGVkVG9IaWdoUGVyZm9ybWFuY2VHUFUgPSB0cnVlOwotfQorICAgIEVHTF9I
YW5kbGVHUFVTd2l0Y2hBTkdMRShtX2Rpc3BsYXlPYmopOworICAgIGRpc3BhdGNoQ29udGV4dENo
YW5nZWROb3RpZmljYXRpb24oKTsKICNlbmRpZgorfQogCiBib29sIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogewpAQCAtNjU0LDUwICs1NzQs
OCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc0dMRVMyQ29tcGxpYW50KCkgY29u
c3QKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2ltdWxhdGVDb250ZXh0Q2hhbmdl
ZCgpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2Vy
KCkudXBkYXRlQWxsQ29udGV4dHMoKTsKLX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6YWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3QKLXsKLSNpZiBQTEFURk9STShNQUMpICYm
IEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKLSAgICAvLyBXaGVuIFdp
bmRvd1NlcnZlciBhY2Nlc3MgaXMgYmxvY2tlZCBpbiB0aGUgV2ViUHJvY2VzcywgdGhlcmUgaXMg
bm8gd2F5Ci0gICAgLy8gZm9yIE9wZW5HTCB0byBkZWNpZGUgd2hpY2ggR1BVIGlzIGNvbm5lY3Rl
ZCB0byBhIGRpc3BsYXkgKG9ubGluZS9vZmZsaW5lKS4KLSAgICAvLyBPcGVuR0wgd2lsbCB0aGVu
IGNvbnNpZGVyIGFsbCBHUFVzLCBvciByZW5kZXJlcnMsIGFzIG9mZmxpbmUsIHdoaWNoIG1lYW5z
Ci0gICAgLy8gYWxsIG9mZmxpbmUgcmVuZGVyZXJzIG5lZWQgdG8gYmUgY29uc2lkZXJlZCB3aGVu
IGZpbmRpbmcgYSBwaXhlbCBmb3JtYXQuCi0gICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUg
d2lsbCBzdGlsbCBiZSBhIFdpbmR3U2VydmVyIGNvbm5lY3Rpb24sIGFuZAotICAgIC8vIG1fZGlz
cGxheU1hc2sgd2lsbCBub3QgYmUgc2V0IGluIHRoaXMgY2FzZS4KLSAgICBpZiAocHJpbWFyeU9w
ZW5HTERpc3BsYXlNYXNrKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotI2VsaWYgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCi0gICAgLy8gRklYTUU6IDxyZGFyOi8vNTMwNjI3OTQ+IFdlJ3JlIHZlcnkg
aW5jb25zaXN0ZW50IGFib3V0IFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HCi0gICAg
Ly8gYW5kIE1BQy9NQUNDQVRBTFlTVCBhbmQgT1BFTkdML09QRU5HTEVTLgotICAgIHJldHVybiB0
cnVlOwotI2VuZGlmCi0gICAgICAgIAotI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkK
LSAgICBpZiAoaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSNlbmRpZgotICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLQotI2lmIFBMQVRGT1JNKE1BQykK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURp
c3BsYXlJRCBkaXNwbGF5SUQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHRPYmopCi0gICAgICAgIHJl
dHVybjsKLSAgICBpZiAoIW1faGFzU3dpdGNoZWRUb0hpZ2hQZXJmb3JtYW5jZUdQVSkgewotICAg
ICAgICBFR0xEZXZpY2VFWFQgZGV2aWNlID0gbnVsbHB0cjsKLSAgICAgICAgRUdMX1F1ZXJ5RGlz
cGxheUF0dHJpYkVYVChtX2Rpc3BsYXlPYmosIEVHTF9ERVZJQ0VfRVhULCByZWludGVycHJldF9j
YXN0PEVHTEF0dHJpYio+KCZkZXZpY2UpKTsKLSAgICAgICAgQ0dMQ29udGV4dE9iaiBjZ2xDb250
ZXh0ID0gbnVsbHB0cjsKLSAgICAgICAgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXQgPSBu
dWxscHRyOwotICAgICAgICBFR0xfUXVlcnlEZXZpY2VBdHRyaWJFWFQoZGV2aWNlLCBFR0xfQ0dM
X0NPTlRFWFRfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJmNnbENvbnRleHQp
KTsKLSAgICAgICAgRUdMX1F1ZXJ5RGV2aWNlQXR0cmliRVhUKGRldmljZSwgRUdMX0NHTF9QSVhF
TF9GT1JNQVRfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJnBpeGVsRm9ybWF0
KSk7Ci0gICAgICAgIHNldEdQVUJ5UmVnaXN0cnlJRChjZ2xDb250ZXh0LCBwaXhlbEZvcm1hdCwg
Z3B1SURGb3JEaXNwbGF5KGRpc3BsYXlJRCkpOwotICAgIH0KKyAgICBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5kaXNwbGF5V2FzUmVjb25maWd1cmVkKCk7
CiB9Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKE1BQykKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01hYy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTFiODhkMzM1ODYxMzE5ZDJkYTUyMjdhNTQ2MDIzODJmMmI0YWViZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNr
c01hYy5jcHAKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDaGVja3NNYWMuaCIKKworI2lmIFBMQVRGT1JNKE1BQykK
KworI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKKyNpbmNsdWRlIDxzeXMvc3lzY3Rs
Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgSEFWRShBUFBMRV9HUkFQ
SElDU19DT05UUk9MKQorCitlbnVtIHsKKyAgICBrQUdDT3BlbiwKKyAgICBrQUdDQ2xvc2UKK307
CisKK3N0YXRpYyBpb19jb25uZWN0X3QgYXR0YWNoVG9BcHBsZUdyYXBoaWNzQ29udHJvbCgpCit7
CisgICAgbWFjaF9wb3J0X3QgbWFzdGVyUG9ydCA9IE1BQ0hfUE9SVF9OVUxMOworICAgIAorICAg
IGlmIChJT01hc3RlclBvcnQoTUFDSF9QT1JUX05VTEwsICZtYXN0ZXJQb3J0KSAhPSBLRVJOX1NV
Q0NFU1MpCisgICAgICAgIHJldHVybiBNQUNIX1BPUlRfTlVMTDsKKyAgICAKKyAgICBDRkRpY3Rp
b25hcnlSZWYgY2xhc3NUb01hdGNoID0gSU9TZXJ2aWNlTWF0Y2hpbmcoIkFwcGxlR3JhcGhpY3ND
b250cm9sIik7CisgICAgaWYgKCFjbGFzc1RvTWF0Y2gpCisgICAgICAgIHJldHVybiBNQUNIX1BP
UlRfTlVMTDsKKyAgICAKKyAgICBrZXJuX3JldHVybl90IGtlcm5SZXN1bHQ7CisgICAgaW9faXRl
cmF0b3JfdCBpdGVyYXRvcjsKKyAgICBpZiAoKGtlcm5SZXN1bHQgPSBJT1NlcnZpY2VHZXRNYXRj
aGluZ1NlcnZpY2VzKG1hc3RlclBvcnQsIGNsYXNzVG9NYXRjaCwgJml0ZXJhdG9yKSkgIT0gS0VS
Tl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gTUFDSF9QT1JUX05VTEw7CisgICAgCisgICAgaW9f
c2VydmljZV90IHNlcnZpY2VPYmplY3QgPSBJT0l0ZXJhdG9yTmV4dChpdGVyYXRvcik7CisgICAg
SU9PYmplY3RSZWxlYXNlKGl0ZXJhdG9yKTsKKyAgICBpZiAoIXNlcnZpY2VPYmplY3QpCisgICAg
ICAgIHJldHVybiBNQUNIX1BPUlRfTlVMTDsKKyAgICAKKyAgICBpb19jb25uZWN0X3QgZGF0YVBv
cnQ7CisgICAgSU9PYmplY3RSZXRhaW4oc2VydmljZU9iamVjdCk7CisgICAga2VyblJlc3VsdCA9
IElPU2VydmljZU9wZW4oc2VydmljZU9iamVjdCwgbWFjaF90YXNrX3NlbGYoKSwgMCwgJmRhdGFQ
b3J0KTsKKyAgICBJT09iamVjdFJlbGVhc2Uoc2VydmljZU9iamVjdCk7CisgICAgCisgICAgcmV0
dXJuIChrZXJuUmVzdWx0ID09IEtFUk5fU1VDQ0VTUykgPyBkYXRhUG9ydCA6IE1BQ0hfUE9SVF9O
VUxMOworfQorCitzdGF0aWMgYm9vbCBoYXNNdXhDYXBhYmlsaXR5KCkKK3sKKyAgICBpb19jb25u
ZWN0X3QgZGF0YVBvcnQgPSBhdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKCk7CisgICAgCisg
ICAgaWYgKGRhdGFQb3J0ID09IE1BQ0hfUE9SVF9OVUxMKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgYm9vbCByZXN1bHQ7CisgICAgaWYgKElPQ29ubmVjdENhbGxTY2FsYXJNZXRo
b2QoZGF0YVBvcnQsIGtBR0NPcGVuLCBudWxscHRyLCAwLCBudWxscHRyLCBudWxscHRyKSA9PSBL
RVJOX1NVQ0NFU1MpIHsKKyAgICAgICAgSU9Db25uZWN0Q2FsbFNjYWxhck1ldGhvZChkYXRhUG9y
dCwga0FHQ0Nsb3NlLCBudWxscHRyLCAwLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAgcmVz
dWx0ID0gdHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgCisg
ICAgSU9TZXJ2aWNlQ2xvc2UoZGF0YVBvcnQpOworICAgIAorICAgIGlmIChyZXN1bHQpIHsKKyAg
ICAgICAgLy8gVGhpcyBpcyBkZXRlY3RpbmcgTWFjIGhhcmR3YXJlIHdpdGggYW4gSW50ZWwgZzU3
NSBHUFUsIHdoaWNoCisgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gbWFrZSBhdmFpbGFibGUg
dG8gbXV4aW5nLgorICAgICAgICAvLyBCYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIEFwcGxlJ3Mg
T3BlbkdMIHRlYW0sIHN1Y2ggZGV2aWNlcworICAgICAgICAvLyBoYXZlIGZvdXIgb3IgZmV3ZXIg
cHJvY2Vzc29ycy4KKyAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzMwMDYwMzc4PgorICAgICAg
ICBpbnQgbmFtZXNbMl0gPSB7IENUTF9IVywgSFdfTkNQVSB9OworICAgICAgICBpbnQgY3B1Q291
bnQ7CisgICAgICAgIHNpemVfdCBjcHVDb3VudExlbmd0aCA9IHNpemVvZihjcHVDb3VudCk7Cisg
ICAgICAgIHN5c2N0bChuYW1lcywgMiwgJmNwdUNvdW50LCAmY3B1Q291bnRMZW5ndGgsIG51bGxw
dHIsIDApOworICAgICAgICByZXN1bHQgPSBjcHVDb3VudCA+IDQ7CisgICAgfQorICAgIAorICAg
IHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZiAvLyBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRS
T0wpCisKK2Jvb2wgaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpCit7CisjaWYgSEFWRShBUFBMRV9H
UkFQSElDU19DT05UUk9MKQorICAgIHN0YXRpYyBib29sIGNhbk11eCA9IGhhc011eENhcGFiaWxp
dHkoKTsKKyAgICByZXR1cm4gY2FuTXV4OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDaGVja3NNYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTQ1NmQw
YmFmZGY2MDJlOTYxOTQ0NGNiNTBmOTg1N2QzNmU1NGRkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmgKQEAg
LTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisgICAgCitXRUJDT1JFX0VYUE9SVCBib29sIGhhc0xvd0FuZEhpZ2hQb3dlckdQVXMo
KTsKKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1Njb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40YzIxZmQ3OTQwMTlhMzFhODA1NzM0NGYyZGEyZGM0YmFhZTEyOGU3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1Njb3BlZEhp
Z2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJHcmFwaGljc0NoZWNrc01hYy5oIgorI2luY2x1ZGUg
IlN3aXRjaGluZ0dQVUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNj
b3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QgeworcHVibGljOgorICAgIFNjb3BlZEhpZ2hQ
ZXJmb3JtYW5jZUdQVVJlcXVlc3QoKSA9IGRlZmF1bHQ7CisgICAgU2NvcGVkSGlnaFBlcmZvcm1h
bmNlR1BVUmVxdWVzdChTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0JiYgb3RoZXIpCisg
ICAgICAgIDogbV9yZXF1ZXN0ZWQoc3RkOjpleGNoYW5nZShvdGhlci5tX3JlcXVlc3RlZCwgZmFs
c2UpKQorICAgIHsKKyAgICB9CisgICAgflNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Qo
KQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JlcXVlc3RlZCkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgU3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygpLT5yZWxlYXNl
SGlnaFBlcmZvcm1hbmNlR1BVKCk7CisgICAgfQorICAgIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQ
VVJlcXVlc3QmIG9wZXJhdG9yPShTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0JiYgb3Ro
ZXIpCisgICAgeworICAgICAgICBpZiAobV9yZXF1ZXN0ZWQpCisgICAgICAgICAgICBTd2l0Y2hp
bmdHUFVDbGllbnQ6OnNpbmdsZXRvbklmRXhpc3RzKCktPnJlbGVhc2VIaWdoUGVyZm9ybWFuY2VH
UFUoKTsKKyAgICAgICAgbV9yZXF1ZXN0ZWQgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fcmVxdWVz
dGVkLCBmYWxzZSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgc3RhdGljIFNj
b3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QgYWNxdWlyZSgpCisgICAgeworICAgICAgICBp
ZiAoIWhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07Cisg
ICAgICAgIGF1dG8gY2xpZW50ID0gU3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4aXN0
cygpOworICAgICAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAg
ICAgIGNsaWVudC0+cmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSgpOworICAgICAgICByZXR1cm4g
eyAwIH07CisgICAgfQorcHJpdmF0ZToKKyAgICBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1
ZXN0KGludCkKKyAgICAgICAgOiBtX3JlcXVlc3RlZCh0cnVlKQorICAgIHsKKyAgICB9CisgICAg
Ym9vbCBtX3JlcXVlc3RlZCB7IGZhbHNlIH07Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU3dpdGNoaW5nR1BVQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU3dpdGNoaW5nR1BVQ2xpZW50LmgKaW5k
ZXggNDk5YTI4N2E0NWM5NjhkODMzZGVjZmU1MzMzMTFkMGNlYjMxNzA3OC4uNDUyMzY3ODFiOGUx
MDhlMjg2ZmRlMjE0ZTg1MWEzYTgyYjMwMWM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Td2l0Y2hpbmdHUFVDbGllbnQuaApAQCAtMjks
MTYgKzI5LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3dpdGNoaW5nR1BVQ2xp
ZW50IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3dpdGNoaW5nR1BVQ2xp
ZW50KiBzaW5nbGV0b25JZkV4aXN0cygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IHNldFNpbmdsZXRvbihTd2l0Y2hpbmdHUFVDbGllbnQmKTsKIAogICAgIHZpcnR1YWwgflN3aXRj
aGluZ0dQVUNsaWVudCgpID0gZGVmYXVsdDsKLQorcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU3dpdGNoaW5nR1BVQ2xpZW50KiBzaW5nbGV0b25JZkV4aXN0cygpOwogICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCByZWxlYXNlSGlnaFBlcmZvcm1hbmNlR1BVKCkgPSAwOwotICAgIAotcHJpdmF0ZToKKwog
ICAgIHN0YXRpYyBTd2l0Y2hpbmdHUFVDbGllbnQqIG1fc2luZ2xldG9uOworICAgIGZyaWVuZCBj
bGFzcyBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0OwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBlZTcxOTQ2MzlhODg0ODExN2NkMjE4MGVlNzkx
MjJmOGNlMDQ1NWE2Li5iN2FiZmVlMzMwZWFjN2I1MmU3MmIwNzRmOGM0OTQxMTkxY2ViMjc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNjksNiArNjksMTAgQEAgY2xh
c3MgR0NHTExheWVyOwogfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAi
U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEV4dGVuc2lvbnNHTDsKICNpZiBVU0UoQU5HTEUpCkBAIC0yNTYsNyAr
MjYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CiAgICAgdm9pZCB0ZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAg
ICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7IAorICAgIHZvaWQgY29tcHJl
c3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50
IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwog
ICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKICAgICB2b2lkIGNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNl
dCkgZmluYWw7CiAKQEAgLTQ1NSwxNCArNDU5LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHByaW1p
dGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBQTEFURk9STShNQUMpCi0gICAgdm9pZCB1cGRhdGVDR0xDb250ZXh0KCk7CisjaWYgUExB
VEZPUk0oTUFDKQorICAgIHZvaWQgZGlzcGxheVdhc1JlY29uZmlndXJlZCgpOwogI2VuZGlmCiAK
ICAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOwogCi0gICAgR3JhcGhp
Y3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9u
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb247
IH0KLQogICAgIC8vIFN1cHBvcnQgZm9yIGJ1ZmZlciBjcmVhdGlvbiBhbmQgZGVsZXRpb24KICAg
ICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZlcigpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xP
YmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBmaW5hbDsKQEAgLTQ5MSwxMSArNDkzLDYgQEAgcHVi
bGljOgogCiAgICAgdW5zaWduZWQgdGV4dHVyZVNlZWQoR0NHTHVpbnQgdGV4dHVyZSkgeyByZXR1
cm4gbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmNvdW50KHRleHR1cmUpOyB9CiAKLSNpZiBQTEFU
Rk9STShNQUMpCi0gICAgdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJfdDsKLSAgICB2
b2lkIHNjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCk7Ci0jZW5kaWYKLQogICAgIHZv
aWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNF
KEFWRk9VTkRBVElPTikKQEAgLTUyMyw3ICs1MjAsNyBAQCBwcml2YXRlOgogICAgIC8vIGltcGxl
bWVudGF0aW9uLgogICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygp
OwotICAgIAorCiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXpl
aSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5n
VG9QaXhlbEJ1ZmZlck9iamVjdCk7CiAKICAgICAvLyBEaWQgdGhlIG1vc3QgcmVjZW50IGRyYXdp
bmcgb3BlcmF0aW9uIGxlYXZlIHRoZSBHUFUgaW4gYW4gYWNjZXB0YWJsZSBzdGF0ZT8KQEAgLTU0
MSw3ICs1MzgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgYXR0YWNoRGVwdGhBbmRTdGVuY2lsQnVm
ZmVySWZOZWVkZWQoR0NHTHVpbnQgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQsIGludCB3aWR0
aCwgaW50IGhlaWdodCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIGFsbG93T2Zm
bGluZVJlbmRlcmVycygpIGNvbnN0OwogICAgIGJvb2wgcmVzaGFwZURpc3BsYXlCdWZmZXJCYWNr
aW5nKCk7CiAgICAgYm9vbCBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOwog
ICAgIGJvb2wgYmluZERpc3BsYXlCdWZmZXJCYWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZh
Y2U+IGJhY2tpbmcsIHZvaWQqIHBidWZmZXIpOwpAQCAtNTc3LDcgKzU3Myw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAsIGlzVmFsaWQoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICBTaGFkZXJTeW1ib2xNYXAmIHN5bWJvbE1hcChlbnVtIEFOR0xFU2hh
ZGVyU3ltYm9sVHlwZSBzeW1ib2xUeXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
c3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFIHx8IHN5bWJvbFR5cGUg
PT0gU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0gfHwgc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lN
Qk9MX1RZUEVfVkFSWUlORyk7CkBAIC02NDIsNyArNjM4LDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uc0dMT3BlbkdMPiBtX2V4dGVuc2lvbnM7CiAjZW5kaWYKIAot
ICAgIEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIG1fcG93ZXJQcmVmZXJlbmNlVXNl
ZEZvckNyZWF0aW9uIHsgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQg
fTsKICAgICBWZWN0b3I8VmVjdG9yPGZsb2F0Pj4gbV92ZXJ0ZXhBcnJheTsKIAogI2lmICFVU0Uo
QU5HTEUpCkBAIC02NzIsNyArNjY3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB1c2luZyBCb3Vu
ZFRleHR1cmVNYXAgPSBIYXNoTWFwPEdDR0xlbnVtLAogICAgICAgICAgICAgc3RkOjpwYWlyPEdD
R0x1aW50LCBHQ0dMZW51bT4sCi0gICAgICAgICAgICBXVEY6OkludEhhc2g8R0NHTGVudW0+LCAK
KyAgICAgICAgICAgIFdURjo6SW50SGFzaDxHQ0dMZW51bT4sCiAgICAgICAgICAgICBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50PiwKICAgICAgICAgICAgIFdURjo6
UGFpckhhc2hUcmFpdHM8V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWlu
dD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+PgogICAgICAg
ICA+OwpAQCAtNzUzLDggKzc0OCwxMCBAQCBwcml2YXRlOgogICAgIC8vIFdoZW4gcHJlc2VydmVE
cmF3aW5nQnVmZmVyID09IHRydWUsIHRoaXMgaXMgYmxpdHRlZCB0byBkdXJpbmcgZGlzcGxheSBw
cmVwYXJlLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IG1fZGlzcGxheUJ1ZmZlckJh
Y2tpbmc7CiAgICAgdm9pZCogbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciB7IG51bGxwdHIgfTsKLQot
ICAgIGJvb2wgbV9oYXNTd2l0Y2hlZFRvSGlnaFBlcmZvcm1hbmNlR1BVIHsgZmFsc2UgfTsKKyNl
bmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBib29sIG1fc3VwcG9ydHNQb3dlclByZWZlcmVu
Y2UgeyBmYWxzZSB9OworICAgIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QgbV9oaWdo
UGVyZm9ybWFuY2VHUFVSZXF1ZXN0OwogI2VuZGlmCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0Uo
QVZGT1VOREFUSU9OKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRHTENWPiBt
X2N2OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcApp
bmRleCA0MWFiNTBjYmVmMmVhNjQyOTNiYTBjOTliZThiMDVmYzk3MDc3ZGU2Li4wYmY3ZTIxMGI3
ZjBmYjZjN2JlNzNlNTkyMmM2YWY1MWE5YjQ1NmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcApAQCAtMzEsOTEgKzMxLDggQEAKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAotI2lm
IEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKLSNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+Ci0j
ZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJTd2l0Y2hpbmdHUFVDbGllbnQu
aCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBIQVZFKEFQUExFX0dSQVBI
SUNTX0NPTlRST0wpCi0KLWVudW0gewotICAgIGtBR0NPcGVuLAotICAgIGtBR0NDbG9zZQotfTsK
LQotc3RhdGljIGlvX2Nvbm5lY3RfdCBhdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKCkKLXsK
LSAgICBtYWNoX3BvcnRfdCBtYXN0ZXJQb3J0ID0gTUFDSF9QT1JUX05VTEw7Ci0gICAgCi0gICAg
aWYgKElPTWFzdGVyUG9ydChNQUNIX1BPUlRfTlVMTCwgJm1hc3RlclBvcnQpICE9IEtFUk5fU1VD
Q0VTUykKLSAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOwotICAgIAotICAgIENGRGljdGlv
bmFyeVJlZiBjbGFzc1RvTWF0Y2ggPSBJT1NlcnZpY2VNYXRjaGluZygiQXBwbGVHcmFwaGljc0Nv
bnRyb2wiKTsKLSAgICBpZiAoIWNsYXNzVG9NYXRjaCkKLSAgICAgICAgcmV0dXJuIE1BQ0hfUE9S
VF9OVUxMOwotICAgIAotICAgIGtlcm5fcmV0dXJuX3Qga2VyblJlc3VsdDsKLSAgICBpb19pdGVy
YXRvcl90IGl0ZXJhdG9yOwotICAgIGlmICgoa2VyblJlc3VsdCA9IElPU2VydmljZUdldE1hdGNo
aW5nU2VydmljZXMobWFzdGVyUG9ydCwgY2xhc3NUb01hdGNoLCAmaXRlcmF0b3IpKSAhPSBLRVJO
X1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBNQUNIX1BPUlRfTlVMTDsKLSAgICAKLSAgICBpb19z
ZXJ2aWNlX3Qgc2VydmljZU9iamVjdCA9IElPSXRlcmF0b3JOZXh0KGl0ZXJhdG9yKTsKLSAgICBJ
T09iamVjdFJlbGVhc2UoaXRlcmF0b3IpOwotICAgIGlmICghc2VydmljZU9iamVjdCkKLSAgICAg
ICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOwotICAgIAotICAgIGlvX2Nvbm5lY3RfdCBkYXRhUG9y
dDsKLSAgICBJT09iamVjdFJldGFpbihzZXJ2aWNlT2JqZWN0KTsKLSAgICBrZXJuUmVzdWx0ID0g
SU9TZXJ2aWNlT3BlbihzZXJ2aWNlT2JqZWN0LCBtYWNoX3Rhc2tfc2VsZigpLCAwLCAmZGF0YVBv
cnQpOwotICAgIElPT2JqZWN0UmVsZWFzZShzZXJ2aWNlT2JqZWN0KTsKLSAgICAKLSAgICByZXR1
cm4gKGtlcm5SZXN1bHQgPT0gS0VSTl9TVUNDRVNTKSA/IGRhdGFQb3J0IDogTUFDSF9QT1JUX05V
TEw7Ci19Ci0KLXN0YXRpYyBib29sIGhhc011eENhcGFiaWxpdHkoKQotewotICAgIGlvX2Nvbm5l
Y3RfdCBkYXRhUG9ydCA9IGF0dGFjaFRvQXBwbGVHcmFwaGljc0NvbnRyb2woKTsKLSAgICAKLSAg
ICBpZiAoZGF0YVBvcnQgPT0gTUFDSF9QT1JUX05VTEwpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAKLSAgICBib29sIHJlc3VsdDsKLSAgICBpZiAoSU9Db25uZWN0Q2FsbFNjYWxhck1ldGhv
ZChkYXRhUG9ydCwga0FHQ09wZW4sIG51bGxwdHIsIDAsIG51bGxwdHIsIG51bGxwdHIpID09IEtF
Uk5fU1VDQ0VTUykgewotICAgICAgICBJT0Nvbm5lY3RDYWxsU2NhbGFyTWV0aG9kKGRhdGFQb3J0
LCBrQUdDQ2xvc2UsIG51bGxwdHIsIDAsIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICByZXN1
bHQgPSB0cnVlOwotICAgIH0gZWxzZQotICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAKLSAg
ICBJT1NlcnZpY2VDbG9zZShkYXRhUG9ydCk7Ci0gICAgCi0gICAgaWYgKHJlc3VsdCkgewotICAg
ICAgICAvLyBUaGlzIGlzIGRldGVjdGluZyBNYWMgaGFyZHdhcmUgd2l0aCBhbiBJbnRlbCBnNTc1
IEdQVSwgd2hpY2gKLSAgICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byBtYWtlIGF2YWlsYWJsZSB0
byBtdXhpbmcuCi0gICAgICAgIC8vIEJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gQXBwbGUncyBP
cGVuR0wgdGVhbSwgc3VjaCBkZXZpY2VzCi0gICAgICAgIC8vIGhhdmUgZm91ciBvciBmZXdlciBw
cm9jZXNzb3JzLgotICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzAwNjAzNzg+Ci0gICAgICAg
IGludCBuYW1lc1syXSA9IHsgQ1RMX0hXLCBIV19OQ1BVIH07Ci0gICAgICAgIGludCBjcHVDb3Vu
dDsKLSAgICAgICAgc2l6ZV90IGNwdUNvdW50TGVuZ3RoID0gc2l6ZW9mKGNwdUNvdW50KTsKLSAg
ICAgICAgc3lzY3RsKG5hbWVzLCAyLCAmY3B1Q291bnQsICZjcHVDb3VudExlbmd0aCwgbnVsbHB0
ciwgMCk7Ci0gICAgICAgIHJlc3VsdCA9IGNwdUNvdW50ID4gNDsKLSAgICB9Ci0gICAgCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotYm9vbCBoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkKLXsKLSAg
ICBzdGF0aWMgYm9vbCBjYW5NdXggPSBoYXNNdXhDYXBhYmlsaXR5KCk7Ci0gICAgcmV0dXJuIGNh
bk11eDsKLX0KLSNlbmRpZiAvLyBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCi0KIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlciYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
OjpzaGFyZWRNYW5hZ2VyKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyPiBzX21hbmFnZXI7CkBAIC0xMjcsMzMgKzQ0LDE3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVk
KENHRGlyZWN0RGlzcGxheUlELCBDCiB7CiAgICAgTE9HKFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkIik7CiAgICAgaWYgKGZsYWdz
ICYga0NHRGlzcGxheVNldE1vZGVGbGFnKQotICAgICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS51cGRhdGVBbGxDb250ZXh0cygpOwotfQotI2VuZGlm
Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjp1cGRhdGVBbGxDb250ZXh0
cygpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGZvciAoY29uc3QgYXV0byYgY29udGV4dCA6
IG1fY29udGV4dHMpIHsKLSAgICAgICAgY29udGV4dC0+dXBkYXRlQ0dMQ29udGV4dCgpOwotICAg
ICAgICBjb250ZXh0LT5kaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCk7Ci0gICAg
fQotI2VuZGlmCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVk
TWFuYWdlcigpLmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1B
QykKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzY3JlZW5EaWRDaGFuZ2Uo
UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBjb25zdCBIb3N0V2luZG93KiB3aW5kb3cpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6ZGlzcGxheVdhc1JlY29uZmlndXJl
ZCgpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBjb250ZXh0QW5kV2luZG93IDogbV9jb250ZXh0
V2luZG93TWFwKSB7Ci0gICAgICAgIGlmIChjb250ZXh0QW5kV2luZG93LnZhbHVlID09IHdpbmRv
dykgewotICAgICAgICAgICAgY29udGV4dEFuZFdpbmRvdy5rZXktPnNjcmVlbkRpZENoYW5nZShk
aXNwbGF5SUQpOwotICAgICAgICAgICAgTE9HKFdlYkdMLCAiQ2hhbmdpbmcgY29udGV4dCAoJXAp
IHRvIGRpc3BsYXkgKCVkKS4iLCBjb250ZXh0QW5kV2luZG93LmtleSwgZGlzcGxheUlEKTsKLSAg
ICAgICAgfQotICAgIH0KKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHQgOiBtX2NvbnRleHRz
KQorICAgICAgICBjb250ZXh0LT5kaXNwbGF5V2FzUmVjb25maWd1cmVkKCk7CiB9CiAjZW5kaWYK
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmFkZENvbnRleHQoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIEhvc3RXaW5kb3cqIHdpbmRvdykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjphZGRDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKiBjb250ZXh0KQogewogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBpZiAoIWNvbnRl
eHQpCkBAIC0xNjYsNyArNjcsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
cjo6YWRkQ29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dAogCiAgICAgQVNT
RVJUKCFtX2NvbnRleHRzLmNvbnRhaW5zKGNvbnRleHQpKTsKICAgICBtX2NvbnRleHRzLmFwcGVu
ZChjb250ZXh0KTsKLSAgICBtX2NvbnRleHRXaW5kb3dNYXAuc2V0KGNvbnRleHQsIHdpbmRvdyk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpyZW1vdmVDb250ZXh0
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQpAQCAtMTc0LDk3ICs3NCwxMiBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6cmVtb3ZlQ29udGV4dChHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogY29udAogICAgIGlmICghbV9jb250ZXh0cy5jb250YWlucyhjb250
ZXh0KSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4dHMucmVtb3ZlRmlyc3QoY29udGV4
dCk7Ci0gICAgbV9jb250ZXh0V2luZG93TWFwLnJlbW92ZShjb250ZXh0KTsKLSAgICByZW1vdmVD
b250ZXh0UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKGNvbnRleHQpOwotICAgIAogI2lmIFBMQVRG
T1JNKE1BQykgJiYgIUVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKICAg
ICBpZiAoIW1fY29udGV4dHMuc2l6ZSgpKQogICAgICAgICBDR0Rpc3BsYXlSZW1vdmVSZWNvbmZp
Z3VyYXRpb25DYWxsYmFjayhkaXNwbGF5V2FzUmVjb25maWd1cmVkLCBudWxscHRyKTsKICNlbmRp
ZgogfQogCi1Ib3N0V2luZG93KiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6Omhvc3RX
aW5kb3dGb3JDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KSBjb25zdAot
ewotICAgIEFTU0VSVChtX2NvbnRleHRXaW5kb3dNYXAuY29udGFpbnMoY29udGV4dCkpOwotICAg
IHJldHVybiBtX2NvbnRleHRXaW5kb3dNYXAuZ2V0KGNvbnRleHQpOwotfQotCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dFJlcXVpcmluZ0hpZ2hQZXJmb3Jt
YW5jZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29u
dGV4dCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQVNT
RVJUKG1fY29udGV4dHMuY29udGFpbnMoY29udGV4dCkpOwotICAgIEFTU0VSVCghbV9jb250ZXh0
c1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZS5jb250YWlucyhjb250ZXh0KSk7Ci0gICAgCi0gICAg
TE9HKFdlYkdMLCAiVGhpcyBjb250ZXh0ICglcCkgcmVxdWlyZXMgdGhlIGhpZ2gtcGVyZm9ybWFu
Y2UgR1BVLiIsIGNvbnRleHQpOwotICAgIG1fY29udGV4dHNSZXF1aXJpbmdIaWdoUGVyZm9ybWFu
Y2UuYWRkKGNvbnRleHQpOwotICAgIAotICAgIHVwZGF0ZUhpZ2hQZXJmb3JtYW5jZVN0YXRlKCk7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpyZW1vdmVDb250ZXh0
UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0
KQotewotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2Nv
bnRleHRzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLmNvbnRhaW5zKGNvbnRleHQpKQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgTE9HKFdlYkdMLCAiVGhpcyBjb250ZXh0ICglcCkgbm8gbG9u
Z2VyIHJlcXVpcmVzIHRoZSBoaWdoLXBlcmZvcm1hbmNlIEdQVS4iLCBjb250ZXh0KTsKLSAgICBt
X2NvbnRleHRzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLnJlbW92ZShjb250ZXh0KTsKLSAgICAK
LSAgICB1cGRhdGVIaWdoUGVyZm9ybWFuY2VTdGF0ZSgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlcjo6dXBkYXRlSGlnaFBlcmZvcm1hbmNlU3RhdGUoKQotewotI2lm
IFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIWhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIGlmIChtX2NvbnRleHRzUmVxdWlyaW5nSGlnaFBlcmZvcm1h
bmNlLnNpemUoKSkgewotICAgICAgICAKLSAgICAgICAgaWYgKG1fZGlzYWJsZUhpZ2hQZXJmb3Jt
YW5jZUdQVVRpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHTCwgIkNhbmNl
bCBwZW5kaW5nIHRpbWVyIGZvciB0dXJuaW5nIG9mZiBoaWdoLXBlcmZvcm1hbmNlIEdQVS4iKTsK
LSAgICAgICAgICAgIG1fZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVyLnN0b3AoKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICghbV9yZXF1ZXN0aW5nSGlnaFBlcmZvcm1hbmNlKSB7Ci0g
ICAgICAgICAgICBMT0coV2ViR0wsICJSZXF1ZXN0IHRoZSBoaWdoLXBlcmZvcm1hbmNlIEdQVS4i
KTsKLSAgICAgICAgICAgIG1fcmVxdWVzdGluZ0hpZ2hQZXJmb3JtYW5jZSA9IHRydWU7Ci0gICAg
ICAgICAgICBpZiAoYXV0byogc2luZ2xldG9uID0gU3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0
b25JZkV4aXN0cygpKQotICAgICAgICAgICAgICAgIHNpbmdsZXRvbi0+cmVxdWVzdEhpZ2hQZXJm
b3JtYW5jZUdQVSgpOwotICAgICAgICB9Ci0KLSAgICB9IGVsc2UgewotICAgICAgICAvLyBEb24n
dCBpbW1lZGlhdGVseSB0dXJuIG9mZiB0aGUgaGlnaC1wZXJmb3JtYW5jZSBHUFUuIFRoZSB1c2Vy
IG1pZ2h0IGJlCi0gICAgICAgIC8vIHN3YXBwaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGFi
cyBvciB3aW5kb3dzLCBhbmQgd2UgZG9uJ3Qgd2FudCB0byBjYXVzZQotICAgICAgICAvLyBjaHVy
biBpZiB3ZSBjYW4gYXZvaWQgaXQuCi0gICAgICAgIGlmICghbV9kaXNhYmxlSGlnaFBlcmZvcm1h
bmNlR1BVVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdMLCAiU2V0IGEg
dGltZXIgdG8gcmVsZWFzZSB0aGUgaGlnaC1wZXJmb3JtYW5jZSBHUFUuIik7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogRXhwb3NlIHRoaXMgdmFsdWUgYXMgYSBTZXR0aW5nLCB3aGljaCB3b3VsZCBy
ZXF1aXJlIHRoaXMgY2xhc3MKLSAgICAgICAgICAgIC8vIHRvIHJlZmVyZW5jZSBhIGZyYW1lLCBw
YWdlIG9yIGRvY3VtZW50LgotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFNlY29uZHMgdGltZVRv
S2VlcEhpZ2hQZXJmb3JtYW5jZUdQVUFsaXZlIHsgMTBfcyB9OwotICAgICAgICAgICAgbV9kaXNh
YmxlSGlnaFBlcmZvcm1hbmNlR1BVVGltZXIuc3RhcnRPbmVTaG90KHRpbWVUb0tlZXBIaWdoUGVy
Zm9ybWFuY2VHUFVBbGl2ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmRpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVU
aW1lckZpcmVkKCkKLXsKLSAgICBpZiAobV9jb250ZXh0c1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5j
ZS5zaXplKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcmVxdWVzdGluZ0hpZ2hQZXJmb3Jt
YW5jZSA9IGZhbHNlOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoYXV0byogc2luZ2xldG9u
ID0gU3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygpKQotICAgICAgICBzaW5n
bGV0b24tPnJlbGVhc2VIaWdoUGVyZm9ybWFuY2VHUFUoKTsKLSNlbmRpZgotfQotCiB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6cmVjeWNsZUNvbnRleHRJZk5lY2Vzc2FyeSgp
CiB7CiAgICAgaWYgKGhhc1Rvb01hbnlDb250ZXh0cygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgKaW5kZXggM2FmOGEwNTJhZThlMmExNWQ1YzA1MTc4
NGZiMDg1NDVlZTlhMWQ2NC4uYzAxMDc2Y2RhYWIyMTAzZThlYjFjMzg2YmU3NjAxMDA5Zjc3MWFk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaApAQCAt
MjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiAjaWYgUExB
VEZPUk0oTUFDKQpAQCAtMzgsNTIgKzM2LDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0
IHVuc2lnbmVkIE1heENvbnRleHRzID0gMTY7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOwotY2xhc3MgSG9zdFdpbmRvdzsKLQotdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50
MzJfdDsKLQotI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKLVdFQkNPUkVfRVhQT1JU
IGJvb2wgaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpOwotI2VuZGlmCiAKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlciB7CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcj47CiBwdWJsaWM6CiAgICAgc3RhdGljIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlciYgc2hhcmVkTWFuYWdlcigpOwogICAgIAotICAgIHZvaWQg
YWRkQ29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIEhvc3RXaW5kb3cqKTsKKyAgICB2
b2lkIGFkZENvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKICAgICB2b2lkIHJlbW92
ZUNvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKLQotICAgIEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3dGb3JDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKikgY29uc3Q7Ci0gICAg
Ci0gICAgdm9pZCBhZGRDb250ZXh0UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKik7Ci0gICAgdm9pZCByZW1vdmVDb250ZXh0UmVxdWlyaW5nSGlnaFBlcmZv
cm1hbmNlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7CiAgICAgCiAgICAgdm9pZCByZWN5Y2xl
Q29udGV4dElmTmVjZXNzYXJ5KCk7CiAgICAgYm9vbCBoYXNUb29NYW55Q29udGV4dHMoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRleHRzLnNpemUoKSA+PSBNYXhDb250ZXh0czsgfQogICAgIAotICAg
IHZvaWQgdXBkYXRlQWxsQ29udGV4dHMoKTsKLQogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lk
IHNjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCwgY29uc3QgSG9zdFdpbmRvdyopOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoQ0dE
aXJlY3REaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncywgdm9pZCopOworICAg
IHZvaWQgZGlzcGxheVdhc1JlY29uZmlndXJlZCgpOwogI2VuZGlmCiAgICAgCiBwcml2YXRlOgot
ICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcigpCi0gICAgICAgIDogbV9kaXNhYmxl
SGlnaFBlcmZvcm1hbmNlR1BVVGltZXIoKnRoaXMsICZHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1h
bmFnZXI6OmRpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lckZpcmVkKQotICAgIHsKLSAgICB9
Ci0KLSAgICB2b2lkIHVwZGF0ZUhpZ2hQZXJmb3JtYW5jZVN0YXRlKCk7Ci0gICAgdm9pZCBkaXNh
YmxlSGlnaFBlcmZvcm1hbmNlR1BVVGltZXJGaXJlZCgpOworICAgIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlcigpID0gZGVmYXVsdDsKIAogICAgIFZlY3RvcjxHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCo+IG1fY29udGV4dHM7Ci0gICAgSGFzaE1hcDxHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCosIEhvc3RXaW5kb3cqPiBtX2NvbnRleHRXaW5kb3dNYXA7Ci0gICAgSGFzaFNldDxHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCo+IG1fY29udGV4dHNSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2U7Ci0g
ICAgCi0gICAgVGltZXIgbV9kaXNhYmxlSGlnaFBlcmZvcm1hbmNlR1BVVGltZXI7Ci0gICAgYm9v
bCBtX3JlcXVlc3RpbmdIaWdoUGVyZm9ybWFuY2UgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGY4YmQxMTNhOTg2YjAzNzg4N2I2MDFlZGZl
ZWNmNWE0MmQyYWNlNzIuLmQ0NWI5NWU5MzU4ODI4YTk0ZTBiYmJmNGEyYTc1ZDdkMzE5ZDdiM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTMxOSw3ICszMTksNyBAQAog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDaGVja3NNYWMuaCIKICNpbmNsdWRl
ICJOU1Njcm9sbGVySW1wRGV0YWlscy5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lTWFjLmgi
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdoUGVy
Zm9ybWFuY2VHUFVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGlnaFBl
cmZvcm1hbmNlR1BVTWFuYWdlci5oCmluZGV4IDU1NTZjYmQ0NGYwZjU0N2NkNjVkM2RlNDFlNTIw
NjVmODkzZDNhYWUuLmFjNjIxOTNhY2ZkNWMyYjY0MmE1NzVhZjM0N2Y1ZTUyZTAyZmU2NWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQZXJmb3JtYW5j
ZUdQVU1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2lu
Y2x1ZGUgPE9wZW5HTC9DR0xUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
CkBAIC00NCwxMyArNDUsMTMgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlUHJvY2Vzc1JlcXVp
cmluZ0hpZ2hQZXJmb3JtYW5jZShXZWJQcm9jZXNzUHJveHkqKTsKIAogcHJpdmF0ZToKLSAgICBI
aWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyKCkgPSBkZWZhdWx0OworICAgIEhpZ2hQZXJmb3JtYW5j
ZUdQVU1hbmFnZXIoKTsKICAgICB+SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcigpOwotCiAgICAg
dm9pZCB1cGRhdGVTdGF0ZSgpOwogCiAgICAgSGFzaFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3By
b2Nlc3Nlc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZTsKICAgICBDR0xQaXhlbEZvcm1hdE9iaiBt
X3BpeGVsRm9ybWF0T2JqIHsgbnVsbHB0ciB9OworICAgIFdlYkNvcmU6OlRpbWVyIG1fdXBkYXRl
U3RhdGVUaW1lcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIubW0KaW5kZXggYTk2ZmMzZDExMzc5OGU3
OWFmYzBmZGI2MjY1ZmRkYWZkMDNkMGFlMC4uNTlkZmY4YjIzYzgwYzAyNjViZWU1MTlmODQ2MDcz
ODg0ZjYxNWM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQ
ZXJmb3JtYW5jZUdQVU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIubW0KQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBQTEFU
Rk9STShNQUMpCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q2hlY2tzTWFjLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9PcGVuR0xTb2Z0TGlua0NvY29hLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsNiArNDQsMTMgQEAgSGlnaFBlcmZvcm1hbmNlR1BV
TWFuYWdlciYgSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6c2luZ2xldG9uKCkKICAgICByZXR1
cm4gc2hhcmVkTWFuYWdlcjsKIH0KIAorSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6SGlnaFBl
cmZvcm1hbmNlR1BVTWFuYWdlcigpCisgICAgOiBtX3VwZGF0ZVN0YXRlVGltZXIoKnRoaXMsICZI
aWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjp1cGRhdGVTdGF0ZSkKK3sKK30KKworSGlnaFBlcmZv
cm1hbmNlR1BVTWFuYWdlcjo6fkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIoKSA9IGRlZmF1bHQ7
CisKIHZvaWQgSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6YWRkUHJvY2Vzc1JlcXVpcmluZ0hp
Z2hQZXJmb3JtYW5jZShXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiB7CiAgICAgaWYgKCFXZWJD
b3JlOjpoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkpCkBAIC02NSw3ICs3Miw4IEBAIHZvaWQgSGln
aFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6cmVtb3ZlUHJvY2Vzc1JlcXVpcmluZ0hpZ2hQZXJmb3Jt
YW5jZShXZWJQcm9jZXNzCiAKICAgICBpZiAobV9wcm9jZXNzZXNSZXF1aXJpbmdIaWdoUGVyZm9y
bWFuY2UucmVtb3ZlKHByb2Nlc3MpKSB7CiAgICAgICAgIExPRyhXZWJHTCwgIkhpZ2hQZXJmb3Jt
YW5jZUdQVU1hbmFnZXI6OnJlbW92ZVByb2Nlc3NSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoKSAt
IHJlbW92aW5nIHByb2Nlc3MgJXAiLCBwcm9jZXNzKTsKLSAgICAgICAgdXBkYXRlU3RhdGUoKTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IFNlY29uZHMgdGltZVRvS2VlcEhpZ2hQZXJmb3JtYW5jZUdQ
VUFsaXZlIHsgMTBfcyB9OworICAgICAgICBtX3VwZGF0ZVN0YXRlVGltZXIuc3RhcnRPbmVTaG90
KHRpbWVUb0tlZXBIaWdoUGVyZm9ybWFuY2VHUFVBbGl2ZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTc0LDYgKzgyLDggQEAgdm9pZCBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpy
ZW1vdmVQcm9jZXNzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKFdlYlByb2Nlc3MKIAogdm9pZCBI
aWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjp1cGRhdGVTdGF0ZSgpCiB7CisgICAgaWYgKG1fdXBk
YXRlU3RhdGVUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3VwZGF0ZVN0YXRlVGltZXIuc3Rv
cCgpOwogICAgIGlmIChtX3Byb2Nlc3Nlc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZS5zaXplKCkp
IHsKICAgICAgICAgaWYgKCFtX3BpeGVsRm9ybWF0T2JqKSB7CiAgICAgICAgICAgICBMT0coV2Vi
R0wsICJIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyIC0gdHVybmluZyBvbiBoaWdoLXBlcmZvcm1h
bmNlIEdQVS4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNwcAppbmRl
eCA0NGM2YjQzMmU3ZDVjNWRhYTc4ZDhkMDJhYjc3Yzc5MGMxNGE5MzRhLi5jMWMyYTJlYmRjNzc4
NzdlMTdmN2MxOTI1MzM1OTM4NWRhZjc4NDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hp
bmdHUFVDbGllbnQuY3BwCkBAIC00MywxMiArNDMsMTkgQEAgV2ViU3dpdGNoaW5nR1BVQ2xpZW50
JiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnNpbmdsZXRvbigpCiAKIHZvaWQgV2ViU3dpdGNoaW5n
R1BVQ2xpZW50OjpyZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCkKIHsKKyAgICBtX3JlcXVlc3Rz
Kys7CisgICAgaWYgKG1fcmVxdWVzdHMgIT0gMSkKKyAgICAgICAgcmV0dXJuOwogICAgIExPRyhX
ZWJHTCwgIldlYlN3aXRjaGluZ0dQVUNsaWVudDo6cmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSgp
IGZyb20gV2ViUHJvY2VzcyIpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6UmVxdWVz
dEhpZ2hQZXJmb3JtYW5jZUdQVSgpLCAwKTsKIH0KIAogdm9pZCBXZWJTd2l0Y2hpbmdHUFVDbGll
bnQ6OnJlbGVhc2VIaWdoUGVyZm9ybWFuY2VHUFUoKQogeworICAgIEFTU0VSVChtX3JlcXVlc3Rz
KTsKKyAgICBtX3JlcXVlc3RzLS07CisgICAgaWYgKG1fcmVxdWVzdHMpCisgICAgICAgIHJldHVy
bjsKICAgICBMT0coV2ViR0wsICJXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlbGVhc2VIaWdoUGVy
Zm9ybWFuY2VHUFUoKSBmcm9tIFdlYlByb2Nlc3MiKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OlJlbGVhc2VIaWdoUGVyZm9ybWFuY2VHUFUoKSwgMCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN3aXRjaGluZ0dQ
VUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJTd2l0Y2hpbmdHUFVDbGllbnQuaAppbmRleCAyMGViMmVlMjU3MWZlYmEyZGE0ODRmMjE4Nzc3
OGIxMjk0MGFlNTMzLi5iYjgxZDhhNjA4YWIxZmRhNDVmMDdlYTdiMzhhNjM0NTE5ZTc4NDIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YlN3aXRjaGluZ0dQVUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmgKQEAgLTMyLDkgKzMyLDEwIEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViU3dpdGNoaW5nR1BVQ2xpZW50IDogcHVibGlj
IFdlYkNvcmU6OlN3aXRjaGluZ0dQVUNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlN3
aXRjaGluZ0dQVUNsaWVudCYgc2luZ2xldG9uKCk7Ci0gICAgCitwcml2YXRlOgogICAgIHZvaWQg
cmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVsZWFzZUhp
Z2hQZXJmb3JtYW5jZUdQVSgpIG92ZXJyaWRlOworICAgIHVuc2lnbmVkIG1fcmVxdWVzdHMgeyAw
IH07CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418123</attachid>
            <date>2021-01-22 02:33:13 -0800</date>
            <delta_ts>2021-01-22 02:59:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220843-20210122123311.patch</filename>
            <type>text/plain</type>
            <size>61193</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWMyOTFmOTQyNmU1YTY2
ZjBhYTY1ZmJmNTM0ZGUzM2NkOWIyYzE1ZS4uYWUxMmNhMThlOGExNTdiNjc3MDdhODQwNGJjN2Qy
MzRkZjBhNGQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTAxLTIyICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgcG93ZXIg
cHJlZmVyZW5jZSBhbmQgZGlzY3JldGUvaW50ZXJuYWwgZ3B1IHNlbGVjdGlvbiBpbXBsZW1lbnRl
ZCBpbmNvcnJlY3RseSB3aXRoIEFOR0xFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjA4NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgQU5HTEUgZXh0ZW5zaW9uIEVHTF9BTkdMRV9wb3dlcl9wcmVm
ZXJlbmNlIHRvIHNpZ25hbCB0byBBTkdMRSB0aGF0IHRoZSB1bmRlcmx5aW5nCisgICAgICAgIENH
TCBjb250ZXh0IHNob3VsZCBiZSB1cGRhdGVkIGFzIGEgcmVzcG9uc2UgdG8gZGlzcGxheSByZWNv
bmZpZ3VyYXRpb24gc2lnbmFsLgorICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCBBTkdMRSBzdGF0
ZSBzdGF5cyBjb25zaXN0ZW50IHdpdGggdGhlIGFjdHVhbCBDR0wgY29udGV4dCBiZWhhdmlvciwg
YXMKKyAgICAgICAgd2UgZG9uJ3QgY2hhbmdlIHRoZSBjb250ZXh0IGJlaGluZCBBTkdMRSdzIGJh
Y2suCisKKyAgICAgICAgUmVtb3ZlIHRoZSBmZWF0dXJlIHdoZXJlIHRoZSBjb250ZXh0IEdQVSBp
cyBzZWxlY3RlZCBiYXNlZCBvbiB0aGUgZGlzcGxheSB0aGUgd2luZG93IGlzCisgICAgICAgIG9u
LiBUaGlzIGNhbm5vdCB3b3JrIHdpdGggdGhlIGxvZ2ljIG9mICJwb3dlclByZWZlcmVuY2UgPSAi
aGlnaC1wZXJmb3JtYW5jZSIgZ29lcyB0bworICAgICAgICBkaXNjcmV0ZSBHUFUiLiBBbHNvLCB0
aGlzIGNhbm5vdCB3b3JrIHdpdGggQU5HTEUgYXQgYWxsLCBzaW5jZSBhbGwgY29udGV4dHMgYXJl
IGJhY2tlZAorICAgICAgICBieSBhIHNpbmdsZSBwbGF0Zm9ybSBjb250ZXh0LiBUaHVzIGFsbCBj
b250ZXh0cyB3aWxsIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIEdQVS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgZHVlIHRvIHRoZSB0ZXN0IHJ1bm5lciBtaXNzaW5nIGZlYXR1cmVzLiBUaGUgYnVn
IGJsb2NrZXJzIHRyYWNrIHRoZSB0ZXN0aW5nLgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21h
a2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0hpZ2hQZXJmb3JtYW5jZUNv
bnRleHQpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250
ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZGlzcGxheVdhc1JlY29uZmlndXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjphdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6
Omhhc011eENhcGFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6aGFzTG93QW5kSGlnaFBvd2Vy
R1BVcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFj
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1Njb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oLgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6U2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0Ojp+U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0OjpvcGVyYXRv
cj0pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6
YWNxdWlyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNs
aWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnJlbW92ZUNv
bnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisK
IDIwMjEtMDEtMTUgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBWDogaW5jcmVtZW50L2RlY3JlbWVudCBzeW50aGV0aWMgYXJyb3cgZXZlbnRzIGRvbid0
IHdvcmsgaW4gQVJJQSBzbGlkZXIgZXhhbXBsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTU5ZmYyOTRlYjdkNmNl
Nzk2ZjJlMjkwYWIxNzU5MGYxNTNhODM0YS4uOTMwODM1YzI1YTZiZWQ2NTllZDc4NjQ0Mjg2MDc0
NTMxYzFlZmZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wMS0yMiAgS2ltbW8g
S2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIHBvd2VyIHBy
ZWZlcmVuY2UgYW5kIGRpc2NyZXRlL2ludGVybmFsIGdwdSBzZWxlY3Rpb24gaW1wbGVtZW50ZWQg
aW5jb3JyZWN0bHkgd2l0aCBBTkdMRQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwODQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTW92ZSB0aGUgaGlnaC1wZXJmb3JtYW5jZSBHUFUgc2h1dGRvd24gdGlt
ZXIgZnJvbSBpbmRpdmlkdWFsIHdlYiBwcm9jZXNzZXMgdG8gdGhlIG1haW4gY2xhc3MKKyAgICAg
ICAgaW4gdGhlIHVpIHByb2Nlc3MuIFRoaXMgc2ltcGxpZmllcyB0aGUgaW1wbGVtZW50YXRpb24g
YW5kIHJlZHVjZXMgdGhlIG51bWJlciBvZiB0aW1lcnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OkhpZ2hQZXJm
b3JtYW5jZUdQVU1hbmFnZXI6OkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpyZW1vdmVQcm9jZXNzUmVxdWlyaW5n
SGlnaFBlcmZvcm1hbmNlKToKKyAgICAgICAgKFdlYktpdDo6SGlnaFBlcmZvcm1hbmNlR1BVTWFu
YWdlcjo6dXBkYXRlU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlN3aXRj
aGluZ0dQVUNsaWVudDo6cmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlN3aXRjaGluZ0dQVUNsaWVudDo6cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xp
ZW50Lmg6CisKIDIwMjEtMDEtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNjc3NjMpIFVwbG9hZGluZyB6aXBwZWQg
ZGlyZWN0b3JpZXMgZG9lcyBub3Qgd29yayBvbiBpT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UK
aW5kZXggYWM3MDE1NDk5Nzk5ZTRmYjRlZTJhMGRlMDFiNDM1MTJiMDlhMWY4ZS4uY2FkMjY0NDlj
NzRjODVjYWNiOTY1YjM5YzhmYjc1MjkwMWZjYTZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UKQEAgLTM0MCw2ICszNDAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRQb2ludE1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9GbG9hdFNpemVNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3ND
aGVja3NNYWMuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvSW50UG9pbnRNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDNiZTE3NThjZDg3
NTUzOWFjN2QyYzZkYWEwNzhmMGNiMzAyYzg3MTMuLmU4N2Q0ZGQwNzlhNTVmNjlkMjE3M2JkZjEx
MmMyZWY5ZjlhNmVjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNDE4LDYgKzQxOCw3
IEBAIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRQb2ludE1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0Zsb2F0U2l6ZU1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDaGVja3NNYWMuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ltYWdlTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50UG9pbnRNYWMubW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0
MTlhMDkxMTg0MzFiM2JmYmVmNWYwMDY2YzAxMzA0MjJmMDQ3ZWNmLi5jODQ3OGE4NTc1YmIyZjA3
OTRiN2Q4OWViOGZlMTZjYTk2MGE3YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMjU3LDYgKzIyNTcsOSBAQAogCQk3Qjkw
NDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTA0MTZF
MjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQjM0QTE3
MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1
Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovOyB9Owog
CQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJh
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JC
MzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QkI2
ODBCMjI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCNjgwQjAy
NUJBMEQ0QTAwMkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QkI2ODBCNjI1
QkExQUUyMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCNjgwQjQyNUJBMUFF
MTAwMkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLzsgfTsKKwkJ
N0JCNjgwQkEyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2ODBCODI1QkExQkU0MDAy
Qjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyogSlNTVkdH
cmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5o
ICovOyB9OwogCQk3QzAyOUM2RTI0OTNDOEY4MDAyNjgyMDQgLyogQ29sb3JUeXBlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwMjlDNkQyNDkzQzhG
ODAwMjY4MjA0IC8qIENvbG9yVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QzE4NDNGRTFDOEI3MjgzMDAyRUI5NzMgLyogQXV0b2ZpbGwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0M0ZD
MUM4QjcyODMwMDJFQjk3MyAvKiBBdXRvZmlsbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI4NSw2ICsxMDI4OCwxMCBAQAogCQk3QkIzNEEx
NjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRp
bGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYw
MDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJ
bWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQjY4MEIw
MjVCQTBENEEwMDJCODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJl
cXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCNjgwQjQyNUJBMUFFMTAw
MkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkI2ODBCNzI1QkExQkUzMDAyQjg3MzggLyog
R3JhcGhpY3NDaGVja3NNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR3JhcGhpY3NDaGVja3NNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QkI2ODBCODI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0MwMTFGM0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdzLmNwcC5lcmIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2V0dGlu
Z3MuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0UyNEZBRDM2
MDAwNUJFRjEwIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnRl
cm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNjQ4MiwxMSArMjY0ODksMTUgQEAKIAkJCQlCMjc1MzU0RDBCMDUzODE0MDAyQ0U2NEYg
LyogRmxvYXRTaXplTWFjLm1tICovLAogCQkJCUIyQUZGQzc1MEQwMEE1QzEwMDMwMDc0RCAvKiBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCAqLywKIAkJCQlCMkFGRkM3NjBEMDBBNUMxMDAzMDA3
NEQgLyogRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oICovLAorCQkJCTdCQjY4MEI3MjVCQTFCRTMw
MDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5jcHAgKi8sCisJCQkJN0JCNjgwQjgyNUJBMUJF
NDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8sCiAJCQkJQjI3NTM1OEQwQjA1M0E2
NjAwMkNFNjRGIC8qIEljb25NYWMubW0gKi8sCiAJCQkJQjI3NTM1NEUwQjA1MzgxNDAwMkNFNjRG
IC8qIEltYWdlTWFjLm1tICovLAogCQkJCUIyNzUzNTRGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQ
b2ludE1hYy5tbSAqLywKIAkJCQlCMjc1MzU1MTBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZU1h
Yy5tbSAqLywKIAkJCQkyRDZFNDY4MjE3RDY2MEY1MDBFQ0Y4QkIgLyogUERGRG9jdW1lbnRJbWFn
ZU1hYy5tbSAqLywKKwkJCQk3QkI2ODBCNDI1QkExQUUxMDAyQjg3MzggLyogU2NvcGVkSGlnaFBl
cmZvcm1hbmNlR1BVUmVxdWVzdC5oICovLAorCQkJCTdCQjY4MEIwMjVCQTBENEEwMDJCODczOCAv
KiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8sCiAJCQkJMTYzRTg4RjUxMThB
MzlEMjAwRUQ5MjMxIC8qIFNpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwICovLAogCQkJCUMxMUE5
RUQyMjE0MDU3OEIwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuY3BwICovLAogCQkJCUMx
MUE5RUNEMjE0MDNBNUMwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCAqLywKQEAgLTMy
MjE4LDYgKzMyMjI5LDcgQEAKIAkJCQlCQzUzQzVGNTBEQTU2QjkyMDAyMUVCNUQgLyogR3JhZGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTY0MEQwMEJGMjIwMDcxQjc4MiAvKiBHcmFk
aWVudEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENDgxRjA0MTQ2QjVDNkIwMEFB
NzgzNCAvKiBHcmFkaWVudEltYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QkI2ODBCQTI1QkEx
QkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
QTAxNUE5MEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc0NvbnRleHQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzNDkwN0U0MTI1QkJCQzgwMDdGMjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEzREU4NzAyM0E5Njk3MzAwOEZDNDdCIC8qIEdyYXBoaWNzQ29u
dGV4dEdMLmggaW4gSGVhZGVycyAqLywKQEAgLTMzMDQ2LDcgKzMzMDU4LDYgQEAKIAkJCQlFNDQ2
MTQxOTBDRDY4MjY5MDBGQURBNzUgLyogSlNNZWRpYUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDREY3NTZBMzIxNUMyOUU5MDBFRkNCNTAgLyogSlNNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJEOUJGNzI4MURCRkRCMEQwMDdBN0Q5OSAvKiBKU01lZGlh
S2V5TWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDQwRkQ1MzI1QTRBRkRGMDBG
N0M4NDkgLyogTWFya2VkVGV4dFN0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDlCRjcyOTFE
QkZEQjEwMDA3QTdEOTkgLyogSlNNZWRpYUtleXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOUJG
NzJBMURCRkRCMTMwMDdBN0Q5OSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0RGNEI3MUUxRTAxRTExQTAwRTIzNUEyIC8qIEpTTWVkaWFLZXlTZXNzaW9uVHlwZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMzYxMyw2ICszMzYyNCw3IEBACiAJCQkJN0FFNkM5M0MxQkUw
QzYwMTAwRTE5RTAzIC8qIE1haW5UaHJlYWRTaGFyZWRUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTQ1MUM2MzIyMzk0MDMxQTAwOTkzMTkwIC8qIE1hcmdpblR5cGVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRTE4NjY0NTFGNzJFNUI0MDBBMENBQjYgLyogTWFya2VkVGV4dC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTQ0MEZENTMyNUE0QUZERjAwRjdDODQ5IC8qIE1hcmtlZFRleHRTdHlsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERjgwOTlFNjQ5MjAwNTZFNTgxIC8qIG1hcmt1cC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTcyOEMzMTQxMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFj
Y3VtdWxhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMEM2MEUzRjEzRDc2RDdFMDA5MkEyNzUg
LyogTWFya3VwVG9rZW5pemVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDQzOCw2ICsz
NDQ1MCw4IEBACiAJCQkJNDlFOTExQ0IwRUY4NkQ0NzAwOUQwQ0FGIC8qIFNjYWxlVHJhbnNmb3Jt
T3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1REZFOEY1NzBEMTY0NzdDMDA3NkU5Mzcg
LyogU2NoZWR1bGVkQWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkQwQkY5MzEyQTQyQkY1
MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JCNjgw
QjYyNUJBMUFFMjAwMkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCBp
biBIZWFkZXJzICovLAorCQkJCTdCQjY4MEIyMjVCQTBENEEwMDJCODczOCAvKiBTY29wZWRIaWdo
UGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VDMDFCRTBDMjc0
REFDMDA5RjRFQzkgLyogU2NyZWVuLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMUUxRDIzNjIwM0RG
MTU0MDA1ODQ2NjUgLyogU2NyZWVuUHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg0
RDgyQzExMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDk0Mzk2MDYwODYxMzA5MzkwOTVjZjIyN2Y3
MTlkZjAxOTY3YjA3M2YuLmU0ZGQzMDZmMzNiNWFkMmM3ZGRkN2Y4OWY5NmQyNDNlZjUwZDBjZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCkBAIC02NDIsNyArNjQyLDcgQEAgcHJpdmF0ZToKIAogc3RhdGlj
IGJvb2wgaXNIaWdoUGVyZm9ybWFuY2VDb250ZXh0KGNvbnN0IFJlZlB0cjxHcmFwaGljc0NvbnRl
eHRHTD4mIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQtPnBvd2VyUHJlZmVyZW5jZVVz
ZWRGb3JDcmVhdGlvbigpID09IFdlYkdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U7
CisgICAgcmV0dXJuIGNvbnRleHQtPmNvbnRleHRBdHRyaWJ1dGVzKCkucG93ZXJQcmVmZXJlbmNl
ID09IFdlYkdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U7CiB9CiAKIHN0ZDo6dW5p
cXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpjcmVhdGUoQ2FudmFzQmFzZSYgY2FudmFzLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLCBXZWJHTFZlcnNpb24gdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCBi
NzEwZTcxNWE2NmRjYWM1Njc0MmRiNmJiZWE3NDFkNmY4NjM0MmIzLi40YTU1ZjlkYTFjNWI1MWY2
YzI0YTBiMGU1YzVjNmZiYjNmNTQ5YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC02Nywx
MCArNjcsNiBAQAogI2luY2x1ZGUgIkRhdGVUaW1lQ2hvb3Nlci5oIgogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShNQUMpICYmIEVOQUJMRShXRUJHTCkKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TE9wZW5HTE1hbmFnZXIuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC01NDgsMTAgKzU0NCw2IEBAIHZvaWQgQ2hyb21lOjp3
aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBPcHRpb25h
bDx1bnNpZ25lCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS53aW5kb3dTY3JlZW5EaWRD
aGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZhbCk7Ci0KLSNpZiBQTEFURk9STShN
QUMpICYmIEVOQUJMRShXRUJHTCkKLSAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6
OnNoYXJlZE1hbmFnZXIoKS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlzKTsKLSNlbmRp
ZgogfQogCiBib29sIENocm9tZTo6c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMLmgKaW5kZXggYWE4ZmYyMzY4ZGZmZDg5Y2VhYjZhNDQzMzMwZGI0NTE2YTE4ZjlmNS4u
ZjQ3ZjFhZTFmZDczZjlkNDI5M2ExMDNhZWEyMmZjNmUwNDdmZTY3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0x
MjU1LDggKzEyNTUsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGV4dFZp
c2liaWxpdHkoYm9vbCkgPSAwOwogCi0gICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHRHTFBvd2Vy
UHJlZmVyZW5jZSBwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdCA9IDA7Ci0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0ID0gMDsKIAogICAgIC8v
IFN5bnRoZXNpemVzIGFuIE9wZW5HTCBlcnJvciB3aGljaCB3aWxsIGJlIHJldHVybmVkIGZyb20g
YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCmluZGV4IDU1MmQ4NTM5
YjY5NTAwY2YxMTY5NjgwZDRiNWM2Mjg1ODU4Yjc3MzcuLmU1MGY4ZmI0YzVjMzY3MDQ2MWM4MTM0
NWU0NDM3M2M2YTRkYTEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5jcHAKQEAgLTQ5LDEyICs0OSw2IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAotR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpIGNvbnN0Ci17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4geyB9OwotfQotCiBib29sIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoV0VCR0wyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgK
aW5kZXggMjQ3MWQ0ZTI1YzlhYTIwMGVjNzQzYjFmZTBjNjQ2OGIwYzlhNTA4My4uMjg4YzJlYThh
ZDM5ZTg5YjY5NjlmZDBiMjE2YjhiNjdiMGJlZGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZS5oCkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CiAgICAgRXh0ZW5zaW9uc0dMJiBnZXRF
eHRlbnNpb25zKCkgZmluYWw7CiAgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBm
aW5hbDsKLSAgICBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZSBwb3dlclByZWZlcmVu
Y2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwog
ICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCBiZDIzNzEzY2ZhMWUzMGMzZDRiYjQ0Yzdm
MTFlZjViMWZiNDgyZjFjLi44OTBlZDE3OGMzZTkwYTZhZDdkMjYyY2E0ZmQ2ZDcxN2Q3OGQ5ZDM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTIwLDcg
KzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCkBAIC0z
Miw5ICszMiw3IEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgi
CiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCi0jaW1wb3J0ICJIb3N0V2luZG93
LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJPcGVuR0xTb2Z0TGlua0NvY29hLmgi
CiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIldlYkNvcmVU
aHJlYWQuaCIKICNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKQEAgLTQyLDExICs0MCw2IEBACiAjaW1w
b3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCi0jaWYgUExBVEZPUk0oTUFDKQotI2ltcG9ydCAiU2NyZWVuUHJvcGVydGllcy5oIgot
I2ltcG9ydCA8T3BlbkdML0NHTFJlbmRlcmVycy5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoVklE
RU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xDVi5o
IgogI2VuZGlmCkBAIC0xNTEsMTcgKzE0NCwxNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0Rwog
ICAgIGlmICghY29udGV4dC0+bV9jb250ZXh0T2JqKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFk
ZENvbnRleHQoY29udGV4dC5nZXQoKSwgaG9zdFdpbmRvdyk7CisgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0LmdldCgp
KTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCiBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQoR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wmIHNoYXJlZENvbnRleHQpCiB7Ci0gICAgYXV0byBob3N0V2luZG93ID0gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaG9zdFdpbmRvd0ZvckNv
bnRleHQoJnNoYXJlZENvbnRleHQpOwotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygp
LCBob3N0V2luZG93LCAmc2hhcmVkQ29udGV4dCwgbnVsbHB0cikpOwogCi0gICAgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0
LnB0cigpLCBob3N0V2luZG93KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKSwg
bnVsbHB0ciwgJnNoYXJlZENvbnRleHQsIG51bGxwdHIpKTsKKworICAgIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5wdHIo
KSk7CiAKICAgICByZXR1cm4gY29udGV4dDsKIH0KQEAgLTE3MSw2NyArMTY0LDExIEBAIFJlZjxH
cmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZv
ckdQVVByb2Nlc3MoY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTChhdHRycywgbnVsbHB0ciwgbnVsbHB0ciwgc3dhcENoYWluKSk7CiB9CiAKLSNp
ZiBQTEFURk9STShNQUMpIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3VsZCBiZSBqdXN0IGVu
YWJsZWQgLSBzZWUgPHJkYXI6Ly81MzA2Mjc5ND4uCi0KLXN0YXRpYyB2b2lkIHNldEdQVUJ5UmVn
aXN0cnlJRChDR0xDb250ZXh0T2JqIGNvbnRleHRPYmosIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVs
Rm9ybWF0T2JqLCBJT1JlZ2lzdHJ5R1BVSUQgcHJlZmVycmVkR1BVSUQpCi17Ci0gICAgLy8gV2hl
biB0aGUgV2ViUHJvY2VzcyBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgV2luZG93U2VydmVy
LCB0aGVyZSBpcyBubyB3YXkgZm9yIE9wZW5HTCB0byB0ZWxsIHdoaWNoIEdQVSBpcyBjb25uZWN0
ZWQgdG8gYSBkaXNwbGF5LgotICAgIC8vIE9uIDEwLjEzKywgZmluZCB0aGUgdmlydHVhbCBzY3Jl
ZW4gdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgcHJlZmVycmVkIEdQVSBieSBpdHMgcmVnaXN0cnlJ
RC4KLSAgICAvLyBDR0xTZXRWaXJ0dWFsU2NyZWVuIGNhbiB0aGVuIGJlIHVzZWQgdG8gdGVsbCBP
cGVuR0wgd2hpY2ggR1BVIGl0IHNob3VsZCBiZSB1c2luZy4KLQotICAgIGlmICghY29udGV4dE9i
aiB8fCAhcHJlZmVycmVkR1BVSUQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdMaW50IHZpcnR1
YWxTY3JlZW5Db3VudCA9IDA7Ci0gICAgQ0dMRXJyb3IgZXJyb3IgPSBDR0xEZXNjcmliZVBpeGVs
Rm9ybWF0KHBpeGVsRm9ybWF0T2JqLCAwLCBrQ0dMUEZBVmlydHVhbFNjcmVlbkNvdW50LCAmdmly
dHVhbFNjcmVlbkNvdW50KTsKLSAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5vRXJyb3IpOwotCi0g
ICAgR0xpbnQgZmlyc3RBY2NlbGVyYXRlZFNjcmVlbiA9IC0xOwotCi0gICAgZm9yIChHTGludCB2
aXJ0dWFsU2NyZWVuID0gMDsgdmlydHVhbFNjcmVlbiA8IHZpcnR1YWxTY3JlZW5Db3VudDsgKyt2
aXJ0dWFsU2NyZWVuKSB7Ci0gICAgICAgIEdMaW50IGRpc3BsYXlNYXNrID0gMDsKLSAgICAgICAg
ZXJyb3IgPSBDR0xEZXNjcmliZVBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0T2JqLCB2aXJ0dWFsU2Ny
ZWVuLCBrQ0dMUEZBRGlzcGxheU1hc2ssICZkaXNwbGF5TWFzayk7Ci0gICAgICAgIEFTU0VSVChl
cnJvciA9PSBrQ0dMTm9FcnJvcik7Ci0KLSAgICAgICAgYXV0byBncHVJRCA9IGdwdUlERm9yRGlz
cGxheU1hc2soZGlzcGxheU1hc2spOwotCi0gICAgICAgIGlmIChncHVJRCA9PSBwcmVmZXJyZWRH
UFVJRCkgewotICAgICAgICAgICAgZXJyb3IgPSBDR0xTZXRWaXJ0dWFsU2NyZWVuKGNvbnRleHRP
YmosIHZpcnR1YWxTY3JlZW4pOwotICAgICAgICAgICAgQVNTRVJUKGVycm9yID09IGtDR0xOb0Vy
cm9yKTsKLSAgICAgICAgICAgIExPRyhXZWJHTCwgIkNvbnRleHQgKCVwKSBzZXQgdG8gR1BVIHdp
dGggSUQ6ICglbGxkKS4iLCBjb250ZXh0T2JqLCBncHVJRCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZmlyc3RBY2NlbGVyYXRlZFNjcmVlbiA8IDApIHsK
LSAgICAgICAgICAgIEdMaW50IGlzQWNjZWxlcmF0ZWQgPSAwOwotICAgICAgICAgICAgZXJyb3Ig
PSBDR0xEZXNjcmliZVBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0T2JqLCB2aXJ0dWFsU2NyZWVuLCBr
Q0dMUEZBQWNjZWxlcmF0ZWQsICZpc0FjY2VsZXJhdGVkKTsKLSAgICAgICAgICAgIEFTU0VSVChl
cnJvciA9PSBrQ0dMTm9FcnJvcik7Ci0gICAgICAgICAgICBpZiAoaXNBY2NlbGVyYXRlZCkKLSAg
ICAgICAgICAgICAgICBmaXJzdEFjY2VsZXJhdGVkU2NyZWVuID0gdmlydHVhbFNjcmVlbjsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIC8vIE5vIHJlZ2lzdHJ5SUQgbWF0Y2ggZm91bmQ7IHNldCB0
byBmaXJzdCBoYXJkd2FyZS1hY2NlbGVyYXRlZCB2aXJ0dWFsIHNjcmVlbi4KLSAgICBpZiAoZmly
c3RBY2NlbGVyYXRlZFNjcmVlbiA+PSAwKSB7Ci0gICAgICAgIGVycm9yID0gQ0dMU2V0VmlydHVh
bFNjcmVlbihjb250ZXh0T2JqLCBmaXJzdEFjY2VsZXJhdGVkU2NyZWVuKTsKLSAgICAgICAgQVNT
RVJUKGVycm9yID09IGtDR0xOb0Vycm9yKTsKLSAgICAgICAgTE9HKFdlYkdMLCAiUmVnaXN0cnlJ
RCAoJWxsZCkgbm90IG1hdGNoZWQ7IENvbnRleHQgKCVwKSBzZXQgdG8gdmlydHVhbCBzY3JlZW4g
KCVkKS4iLCBwcmVmZXJyZWRHUFVJRCwgY29udGV4dE9iaiwgZmlyc3RBY2NlbGVyYXRlZFNjcmVl
bik7Ci0gICAgfQotfQotCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQotCi1HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCogc2hhcmVkQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4q
IHN3YXBDaGFpbikKK0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqLCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4qIHN3YXBDaGFpbikKICAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJz
LCBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBzaGFyZWRDb250ZXh0KQogewogICAgIG1faXNGb3JX
ZWJHTDIgPSBhdHRycy53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNp
b246OldlYkdMMjsKIAotI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKLSAgICBtX3Bv
d2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbiA9IChoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkg
JiYgYXR0cnMucG93ZXJQcmVmZXJlbmNlID09IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJl
bmNlOjpIaWdoUGVyZm9ybWFuY2UpID8gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6
OkhpZ2hQZXJmb3JtYW5jZSA6IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZh
dWx0OwotI2Vsc2UKLSAgICBtX3Bvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbiA9IEdyYXBo
aWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0OwotI2VuZGlmCi0KICAgICBtX2Rp
c3BsYXlPYmogPSBJbml0aWFsaXplRUdMRGlzcGxheShhdHRycyk7CiAgICAgaWYgKG1fZGlzcGxh
eU9iaiA9PSBFR0xfTk9fRElTUExBWSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjkwLDExICsyMjcs
MTUgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICBlZ2xDb250ZXh0QXR0cmlidXRlcy5h
cHBlbmQoRUdMX0NPTlRFWFRfQklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU0pOwogICAg
IGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfRkFMU0UpOwogCi0gICAgaWYgKHN0cnN0
cihkaXNwbGF5RXh0ZW5zaW9ucywgIkVHTF9BTkdMRV9wb3dlcl9wcmVmZXJlbmNlIikpIHsKLSAg
ICAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9QT1dFUl9QUkVGRVJFTkNFX0FO
R0xFKTsKLSAgICAgICAgLy8gRUdMX0xPV19QT1dFUl9BTkdMRSBpcyB0aGUgZGVmYXVsdC4gQ2hh
bmdlIHRvCi0gICAgICAgIC8vIEVHTF9ISUdIX1BPV0VSX0FOR0xFIGlmIGRlc2lyZWQuCi0gICAg
ICAgIGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfTE9XX1BPV0VSX0FOR0xFKTsKKyAg
ICBib29sIHN1cHBvcnRzUG93ZXJQcmVmZXJlbmNlID0gZmFsc2U7CisjaWYgUExBVEZPUk0oTUFD
KQorICAgIG1fc3VwcG9ydHNQb3dlclByZWZlcmVuY2UgPSBzdHJzdHIoZGlzcGxheUV4dGVuc2lv
bnMsICJFR0xfQU5HTEVfcG93ZXJfcHJlZmVyZW5jZSIpOworICAgIHN1cHBvcnRzUG93ZXJQcmVm
ZXJlbmNlID0gbV9zdXBwb3J0c1Bvd2VyUHJlZmVyZW5jZTsKKyNlbmRpZgorICAgIGlmICghc3Vw
cG9ydHNQb3dlclByZWZlcmVuY2UpIHsKKyAgICAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRy
aWJ1dGVzKCk7CisgICAgICAgIGF0dHJzLnBvd2VyUHJlZmVyZW5jZSA9IEdyYXBoaWNzQ29udGV4
dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0OworICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRl
cyhhdHRycyk7CiAgICAgfQogICAgIGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfTk9O
RSk7CiAKQEAgLTMzMiwyMSArMjczLDYgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICAg
ICAgfQogICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoZXh0ZW5zaW9uKTsKICAgICB9
Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIC8vIEZJWE1FOiBJdCdzIHVuY2xlYXIgaWYgTUFDQ0FU
QUxZU1Qgc2hvdWxkIHRha2UgdGhlc2Ugc3RlcHMgYXMgd2VsbCwgYnV0IHRoYXQKLSAgICAvLyB3
b3VsZCByZXF1aXJlIHRoZSBQbGF0Zm9ybVNjcmVlbk1hYyBjb2RlIHRvIGJlIGV4cG9zZWQgdG8g
Q2F0YWx5c3QgdG9vLgotICAgIEVHTERldmljZUVYVCBkZXZpY2UgPSBudWxscHRyOwotICAgIEVH
TF9RdWVyeURpc3BsYXlBdHRyaWJFWFQobV9kaXNwbGF5T2JqLCBFR0xfREVWSUNFX0VYVCwgcmVp
bnRlcnByZXRfY2FzdDxFR0xBdHRyaWIqPigmZGV2aWNlKSk7Ci0gICAgQ0dMQ29udGV4dE9iaiBj
Z2xDb250ZXh0ID0gbnVsbHB0cjsKLSAgICBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdCA9
IG51bGxwdHI7Ci0gICAgRUdMX1F1ZXJ5RGV2aWNlQXR0cmliRVhUKGRldmljZSwgRUdMX0NHTF9D
T05URVhUX0FOR0xFLCByZWludGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZjZ2xDb250ZXh0KSk7
Ci0gICAgRUdMX1F1ZXJ5RGV2aWNlQXR0cmliRVhUKGRldmljZSwgRUdMX0NHTF9QSVhFTF9GT1JN
QVRfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJnBpeGVsRm9ybWF0KSk7Ci0g
ICAgYXV0byBncHVJRCA9IChob3N0V2luZG93ICYmIGhvc3RXaW5kb3ctPmRpc3BsYXlJRCgpKSA/
IGdwdUlERm9yRGlzcGxheShob3N0V2luZG93LT5kaXNwbGF5SUQoKSkgOiBwcmltYXJ5R1BVSUQo
KTsKLSAgICBzZXRHUFVCeVJlZ2lzdHJ5SUQoY2dsQ29udGV4dCwgcGl4ZWxGb3JtYXQsIGdwdUlE
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGhvc3RXaW5kb3cpOwotI2VuZGlmCi0KICAgICB2
YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKICAgICBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7IC8v
IFRoZXkgbWF5IGhhdmUgY2hhbmdlZCBkdXJpbmcgdmFsaWRhdGlvbi4KIApAQCAtNTYxLDMwICs0
ODcsMjcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2hlY2tHUFVTdGF0dXMoKQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29s
IGlzVmlzaWJsZSkKIHsKLSAgICBpZiAobV9wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24g
PT0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkgewot
ICAgICAgICBpZiAoaXNWaXNpYmxlKQotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dFJlcXVpcmluZ0hpZ2hQZXJmb3Jt
YW5jZSh0aGlzKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3ZlQ29udGV4dFJlcXVpcmluZ0hpZ2hQ
ZXJmb3JtYW5jZSh0aGlzKTsKLSAgICB9CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChjb250
ZXh0QXR0cmlidXRlcygpLnBvd2VyUHJlZmVyZW5jZSAhPSBHcmFwaGljc0NvbnRleHRHTFBvd2Vy
UHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGlz
VmlzaWJsZSkKKyAgICAgICAgbV9oaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0ID0gU2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6YWNxdWlyZSgpOworICAgIGVsc2UKKyAgICAgICAgbV9o
aWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0ID0geyB9OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
aXNWaXNpYmxlKTsKKyNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oTUFDKQotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dXBkYXRlQ0dMQ29udGV4dCgpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKCkKIHsKLSAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIW1fc3VwcG9ydHNQb3dl
clByZWZlcmVuY2UpCiAgICAgICAgIHJldHVybjsKLSAgICBMT0coV2ViR0wsICJEZXRlY3RlZCBh
IG11eCBzd2l0Y2ggb3IgZGlzcGxheSByZWNvbmZpZ3VyYXRpb24uIENhbGwgQ0dMVXBkYXRlQ29u
dGV4dC4gKCVwKSIsIHRoaXMpOwotCi0gICAgRUdMRGV2aWNlRVhUIGRldmljZSA9IG51bGxwdHI7
Ci0gICAgRUdMX1F1ZXJ5RGlzcGxheUF0dHJpYkVYVChtX2Rpc3BsYXlPYmosIEVHTF9ERVZJQ0Vf
RVhULCByZWludGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZkZXZpY2UpKTsKLSAgICBDR0xDb250
ZXh0T2JqIGNnbENvbnRleHQgPSBudWxscHRyOwotICAgIEVHTF9RdWVyeURldmljZUF0dHJpYkVY
VChkZXZpY2UsIEVHTF9DR0xfQ09OVEVYVF9BTkdMRSwgcmVpbnRlcnByZXRfY2FzdDxFR0xBdHRy
aWIqPigmY2dsQ29udGV4dCkpOwotCi0gICAgQ0dMVXBkYXRlQ29udGV4dChjZ2xDb250ZXh0KTsK
LSAgICBtX2hhc1N3aXRjaGVkVG9IaWdoUGVyZm9ybWFuY2VHUFUgPSB0cnVlOwotfQorICAgIEVH
TF9IYW5kbGVHUFVTd2l0Y2hBTkdMRShtX2Rpc3BsYXlPYmopOworICAgIGRpc3BhdGNoQ29udGV4
dENoYW5nZWROb3RpZmljYXRpb24oKTsKICNlbmRpZgorfQogCiBib29sIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogewpAQCAtNjU0LDUwICs1
NzcsOCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc0dMRVMyQ29tcGxpYW50KCkg
Y29uc3QKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2ltdWxhdGVDb250ZXh0Q2hh
bmdlZCgpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5h
Z2VyKCkudXBkYXRlQWxsQ29udGV4dHMoKTsKLX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3QKLXsKLSNpZiBQTEFURk9STShNQUMp
ICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKLSAgICAvLyBXaGVu
IFdpbmRvd1NlcnZlciBhY2Nlc3MgaXMgYmxvY2tlZCBpbiB0aGUgV2ViUHJvY2VzcywgdGhlcmUg
aXMgbm8gd2F5Ci0gICAgLy8gZm9yIE9wZW5HTCB0byBkZWNpZGUgd2hpY2ggR1BVIGlzIGNvbm5l
Y3RlZCB0byBhIGRpc3BsYXkgKG9ubGluZS9vZmZsaW5lKS4KLSAgICAvLyBPcGVuR0wgd2lsbCB0
aGVuIGNvbnNpZGVyIGFsbCBHUFVzLCBvciByZW5kZXJlcnMsIGFzIG9mZmxpbmUsIHdoaWNoIG1l
YW5zCi0gICAgLy8gYWxsIG9mZmxpbmUgcmVuZGVyZXJzIG5lZWQgdG8gYmUgY29uc2lkZXJlZCB3
aGVuIGZpbmRpbmcgYSBwaXhlbCBmb3JtYXQuCi0gICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhl
cmUgd2lsbCBzdGlsbCBiZSBhIFdpbmR3U2VydmVyIGNvbm5lY3Rpb24sIGFuZAotICAgIC8vIG1f
ZGlzcGxheU1hc2sgd2lsbCBub3QgYmUgc2V0IGluIHRoaXMgY2FzZS4KLSAgICBpZiAocHJpbWFy
eU9wZW5HTERpc3BsYXlNYXNrKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotI2VsaWYgUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpCi0gICAgLy8gRklYTUU6IDxyZGFyOi8vNTMwNjI3OTQ+IFdlJ3JlIHZl
cnkgaW5jb25zaXN0ZW50IGFib3V0IFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HCi0g
ICAgLy8gYW5kIE1BQy9NQUNDQVRBTFlTVCBhbmQgT1BFTkdML09QRU5HTEVTLgotICAgIHJldHVy
biB0cnVlOwotI2VuZGlmCi0gICAgICAgIAotI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJP
TCkKLSAgICBpZiAoaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSNlbmRpZgotICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLQotI2lmIFBMQVRGT1JNKE1B
QykKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNjcmVlbkRpZENoYW5nZShQbGF0Zm9y
bURpc3BsYXlJRCBkaXNwbGF5SUQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHRPYmopCi0gICAgICAg
IHJldHVybjsKLSAgICBpZiAoIW1faGFzU3dpdGNoZWRUb0hpZ2hQZXJmb3JtYW5jZUdQVSkgewot
ICAgICAgICBFR0xEZXZpY2VFWFQgZGV2aWNlID0gbnVsbHB0cjsKLSAgICAgICAgRUdMX1F1ZXJ5
RGlzcGxheUF0dHJpYkVYVChtX2Rpc3BsYXlPYmosIEVHTF9ERVZJQ0VfRVhULCByZWludGVycHJl
dF9jYXN0PEVHTEF0dHJpYio+KCZkZXZpY2UpKTsKLSAgICAgICAgQ0dMQ29udGV4dE9iaiBjZ2xD
b250ZXh0ID0gbnVsbHB0cjsKLSAgICAgICAgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXQg
PSBudWxscHRyOwotICAgICAgICBFR0xfUXVlcnlEZXZpY2VBdHRyaWJFWFQoZGV2aWNlLCBFR0xf
Q0dMX0NPTlRFWFRfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJmNnbENvbnRl
eHQpKTsKLSAgICAgICAgRUdMX1F1ZXJ5RGV2aWNlQXR0cmliRVhUKGRldmljZSwgRUdMX0NHTF9Q
SVhFTF9GT1JNQVRfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJnBpeGVsRm9y
bWF0KSk7Ci0gICAgICAgIHNldEdQVUJ5UmVnaXN0cnlJRChjZ2xDb250ZXh0LCBwaXhlbEZvcm1h
dCwgZ3B1SURGb3JEaXNwbGF5KGRpc3BsYXlJRCkpOwotICAgIH0KKyAgICBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5kaXNwbGF5V2FzUmVjb25maWd1cmVk
KCk7CiB9Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKE1BQykKIAogdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01hYy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTFiODhkMzM1ODYxMzE5ZDJkYTUyMjdhNTQ2MDIzODJmMmI0YWViZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0No
ZWNrc01hYy5jcHAKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDaGVja3NNYWMuaCIKKworI2lmIFBMQVRGT1JNKE1B
QykKKworI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKKyNpbmNsdWRlIDxzeXMvc3lz
Y3RsLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgSEFWRShBUFBMRV9H
UkFQSElDU19DT05UUk9MKQorCitlbnVtIHsKKyAgICBrQUdDT3BlbiwKKyAgICBrQUdDQ2xvc2UK
K307CisKK3N0YXRpYyBpb19jb25uZWN0X3QgYXR0YWNoVG9BcHBsZUdyYXBoaWNzQ29udHJvbCgp
Cit7CisgICAgbWFjaF9wb3J0X3QgbWFzdGVyUG9ydCA9IE1BQ0hfUE9SVF9OVUxMOworICAgIAor
ICAgIGlmIChJT01hc3RlclBvcnQoTUFDSF9QT1JUX05VTEwsICZtYXN0ZXJQb3J0KSAhPSBLRVJO
X1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBNQUNIX1BPUlRfTlVMTDsKKyAgICAKKyAgICBDRkRp
Y3Rpb25hcnlSZWYgY2xhc3NUb01hdGNoID0gSU9TZXJ2aWNlTWF0Y2hpbmcoIkFwcGxlR3JhcGhp
Y3NDb250cm9sIik7CisgICAgaWYgKCFjbGFzc1RvTWF0Y2gpCisgICAgICAgIHJldHVybiBNQUNI
X1BPUlRfTlVMTDsKKyAgICAKKyAgICBrZXJuX3JldHVybl90IGtlcm5SZXN1bHQ7CisgICAgaW9f
aXRlcmF0b3JfdCBpdGVyYXRvcjsKKyAgICBpZiAoKGtlcm5SZXN1bHQgPSBJT1NlcnZpY2VHZXRN
YXRjaGluZ1NlcnZpY2VzKG1hc3RlclBvcnQsIGNsYXNzVG9NYXRjaCwgJml0ZXJhdG9yKSkgIT0g
S0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gTUFDSF9QT1JUX05VTEw7CisgICAgCisgICAg
aW9fc2VydmljZV90IHNlcnZpY2VPYmplY3QgPSBJT0l0ZXJhdG9yTmV4dChpdGVyYXRvcik7Cisg
ICAgSU9PYmplY3RSZWxlYXNlKGl0ZXJhdG9yKTsKKyAgICBpZiAoIXNlcnZpY2VPYmplY3QpCisg
ICAgICAgIHJldHVybiBNQUNIX1BPUlRfTlVMTDsKKyAgICAKKyAgICBpb19jb25uZWN0X3QgZGF0
YVBvcnQ7CisgICAgSU9PYmplY3RSZXRhaW4oc2VydmljZU9iamVjdCk7CisgICAga2VyblJlc3Vs
dCA9IElPU2VydmljZU9wZW4oc2VydmljZU9iamVjdCwgbWFjaF90YXNrX3NlbGYoKSwgMCwgJmRh
dGFQb3J0KTsKKyAgICBJT09iamVjdFJlbGVhc2Uoc2VydmljZU9iamVjdCk7CisgICAgCisgICAg
cmV0dXJuIChrZXJuUmVzdWx0ID09IEtFUk5fU1VDQ0VTUykgPyBkYXRhUG9ydCA6IE1BQ0hfUE9S
VF9OVUxMOworfQorCitzdGF0aWMgYm9vbCBoYXNNdXhDYXBhYmlsaXR5KCkKK3sKKyAgICBpb19j
b25uZWN0X3QgZGF0YVBvcnQgPSBhdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKCk7CisgICAg
CisgICAgaWYgKGRhdGFQb3J0ID09IE1BQ0hfUE9SVF9OVUxMKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgYm9vbCByZXN1bHQ7CisgICAgaWYgKElPQ29ubmVjdENhbGxTY2FsYXJN
ZXRob2QoZGF0YVBvcnQsIGtBR0NPcGVuLCBudWxscHRyLCAwLCBudWxscHRyLCBudWxscHRyKSA9
PSBLRVJOX1NVQ0NFU1MpIHsKKyAgICAgICAgSU9Db25uZWN0Q2FsbFNjYWxhck1ldGhvZChkYXRh
UG9ydCwga0FHQ0Nsb3NlLCBudWxscHRyLCAwLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAg
cmVzdWx0ID0gdHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAg
CisgICAgSU9TZXJ2aWNlQ2xvc2UoZGF0YVBvcnQpOworICAgIAorICAgIGlmIChyZXN1bHQpIHsK
KyAgICAgICAgLy8gVGhpcyBpcyBkZXRlY3RpbmcgTWFjIGhhcmR3YXJlIHdpdGggYW4gSW50ZWwg
ZzU3NSBHUFUsIHdoaWNoCisgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gbWFrZSBhdmFpbGFi
bGUgdG8gbXV4aW5nLgorICAgICAgICAvLyBCYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIEFwcGxl
J3MgT3BlbkdMIHRlYW0sIHN1Y2ggZGV2aWNlcworICAgICAgICAvLyBoYXZlIGZvdXIgb3IgZmV3
ZXIgcHJvY2Vzc29ycy4KKyAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzMwMDYwMzc4PgorICAg
ICAgICBpbnQgbmFtZXNbMl0gPSB7IENUTF9IVywgSFdfTkNQVSB9OworICAgICAgICBpbnQgY3B1
Q291bnQ7CisgICAgICAgIHNpemVfdCBjcHVDb3VudExlbmd0aCA9IHNpemVvZihjcHVDb3VudCk7
CisgICAgICAgIHN5c2N0bChuYW1lcywgMiwgJmNwdUNvdW50LCAmY3B1Q291bnRMZW5ndGgsIG51
bGxwdHIsIDApOworICAgICAgICByZXN1bHQgPSBjcHVDb3VudCA+IDQ7CisgICAgfQorICAgIAor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZiAvLyBIQVZFKEFQUExFX0dSQVBISUNTX0NP
TlRST0wpCisKK2Jvb2wgaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpCit7CisjaWYgSEFWRShBUFBM
RV9HUkFQSElDU19DT05UUk9MKQorICAgIHN0YXRpYyBib29sIGNhbk11eCA9IGhhc011eENhcGFi
aWxpdHkoKTsKKyAgICByZXR1cm4gY2FuTXV4OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDaGVja3NNYWMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTQ1
NmQwYmFmZGY2MDJlOTYxOTQ0NGNiNTBmOTg1N2QzNmU1NGRkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmgK
QEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisgICAgCitXRUJDT1JFX0VYUE9SVCBib29sIGhhc0xvd0FuZEhpZ2hQb3dlckdQ
VXMoKTsKKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1Njb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YzIxZmQ3OTQwMTlhMzFhODA1NzM0NGYyZGEyZGM0YmFhZTEyOGU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1Njb3Bl
ZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJHcmFwaGljc0NoZWNrc01hYy5oIgorI2luY2x1
ZGUgIlN3aXRjaGluZ0dQVUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QgeworcHVibGljOgorICAgIFNjb3BlZEhp
Z2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QoKSA9IGRlZmF1bHQ7CisgICAgU2NvcGVkSGlnaFBlcmZv
cm1hbmNlR1BVUmVxdWVzdChTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0JiYgb3RoZXIp
CisgICAgICAgIDogbV9yZXF1ZXN0ZWQoc3RkOjpleGNoYW5nZShvdGhlci5tX3JlcXVlc3RlZCwg
ZmFsc2UpKQorICAgIHsKKyAgICB9CisgICAgflNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVl
c3QoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JlcXVlc3RlZCkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgU3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygpLT5yZWxl
YXNlSGlnaFBlcmZvcm1hbmNlR1BVKCk7CisgICAgfQorICAgIFNjb3BlZEhpZ2hQZXJmb3JtYW5j
ZUdQVVJlcXVlc3QmIG9wZXJhdG9yPShTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0JiYg
b3RoZXIpCisgICAgeworICAgICAgICBpZiAobV9yZXF1ZXN0ZWQpCisgICAgICAgICAgICBTd2l0
Y2hpbmdHUFVDbGllbnQ6OnNpbmdsZXRvbklmRXhpc3RzKCktPnJlbGVhc2VIaWdoUGVyZm9ybWFu
Y2VHUFUoKTsKKyAgICAgICAgbV9yZXF1ZXN0ZWQgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fcmVx
dWVzdGVkLCBmYWxzZSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgc3RhdGlj
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QgYWNxdWlyZSgpCisgICAgeworICAgICAg
ICBpZiAoIWhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07
CisgICAgICAgIGF1dG8gY2xpZW50ID0gU3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4
aXN0cygpOworICAgICAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgICAgIHJldHVybiB7IH07Cisg
ICAgICAgIGNsaWVudC0+cmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSgpOworICAgICAgICByZXR1
cm4geyAwIH07CisgICAgfQorcHJpdmF0ZToKKyAgICBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVS
ZXF1ZXN0KGludCkKKyAgICAgICAgOiBtX3JlcXVlc3RlZCh0cnVlKQorICAgIHsKKyAgICB9Cisg
ICAgYm9vbCBtX3JlcXVlc3RlZCB7IGZhbHNlIH07Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU3dpdGNoaW5nR1BVQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU3dpdGNoaW5nR1BVQ2xpZW50LmgK
aW5kZXggNDk5YTI4N2E0NWM5NjhkODMzZGVjZmU1MzMzMTFkMGNlYjMxNzA3OC4uNDUyMzY3ODFi
OGUxMDhlMjg2ZmRlMjE0ZTg1MWEzYTgyYjMwMWM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Td2l0Y2hpbmdHUFVDbGllbnQuaApAQCAt
MjksMTYgKzI5LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3dpdGNoaW5nR1BV
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3dpdGNoaW5nR1BV
Q2xpZW50KiBzaW5nbGV0b25JZkV4aXN0cygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHNldFNpbmdsZXRvbihTd2l0Y2hpbmdHUFVDbGllbnQmKTsKIAogICAgIHZpcnR1YWwgflN3
aXRjaGluZ0dQVUNsaWVudCgpID0gZGVmYXVsdDsKLQorcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgU3dpdGNoaW5nR1BVQ2xpZW50KiBzaW5nbGV0b25JZkV4aXN0cygpOwogICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCByZWxlYXNlSGlnaFBlcmZvcm1hbmNlR1BVKCkgPSAwOwotICAgIAotcHJpdmF0ZToK
KwogICAgIHN0YXRpYyBTd2l0Y2hpbmdHUFVDbGllbnQqIG1fc2luZ2xldG9uOworICAgIGZyaWVu
ZCBjbGFzcyBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0OwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBlZTcxOTQ2MzlhODg0ODExN2NkMjE4MGVl
NzkxMjJmOGNlMDQ1NWE2Li5iN2FiZmVlMzMwZWFjN2I1MmU3MmIwNzRmOGM0OTQxMTkxY2ViMjc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNjksNiArNjksMTAgQEAg
Y2xhc3MgR0NHTExheWVyOwogfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVk
ZSAiU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEV4dGVuc2lvbnNHTDsKICNpZiBVU0UoQU5HTEUpCkBAIC0yNTYs
NyArMjYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CiAgICAgdm9pZCB0
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7
CiAgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7IAorICAgIHZvaWQgY29t
cHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFs
OwogICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKICAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9m
ZnNldCkgZmluYWw7CiAKQEAgLTQ1NSwxNCArNDU5LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHBy
aW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiBQTEFURk9STShNQUMpCi0gICAgdm9pZCB1cGRhdGVDR0xDb250ZXh0KCk7CisjaWYg
UExBVEZPUk0oTUFDKQorICAgIHZvaWQgZGlzcGxheVdhc1JlY29uZmlndXJlZCgpOwogI2VuZGlm
CiAKICAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOwogCi0gICAgR3Jh
cGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRp
b247IH0KLQogICAgIC8vIFN1cHBvcnQgZm9yIGJ1ZmZlciBjcmVhdGlvbiBhbmQgZGVsZXRpb24K
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZlcigpIGZpbmFsOwogICAgIFBsYXRmb3Jt
R0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBmaW5hbDsKQEAgLTQ5MSwxMSArNDkzLDYgQEAg
cHVibGljOgogCiAgICAgdW5zaWduZWQgdGV4dHVyZVNlZWQoR0NHTHVpbnQgdGV4dHVyZSkgeyBy
ZXR1cm4gbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmNvdW50KHRleHR1cmUpOyB9CiAKLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJfdDsKLSAg
ICB2b2lkIHNjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCk7Ci0jZW5kaWYKLQogICAg
IHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKIAogI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEFWRk9VTkRBVElPTikKQEAgLTUyMyw3ICs1MjAsNyBAQCBwcml2YXRlOgogICAgIC8vIGlt
cGxlbWVudGF0aW9uLgogICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciog
cGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRl
cygpOwotICAgIAorCiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xz
aXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFk
aW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CiAKICAgICAvLyBEaWQgdGhlIG1vc3QgcmVjZW50IGRy
YXdpbmcgb3BlcmF0aW9uIGxlYXZlIHRoZSBHUFUgaW4gYW4gYWNjZXB0YWJsZSBzdGF0ZT8KQEAg
LTU0MSw3ICs1MzgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgYXR0YWNoRGVwdGhBbmRTdGVuY2ls
QnVmZmVySWZOZWVkZWQoR0NHTHVpbnQgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQsIGludCB3
aWR0aCwgaW50IGhlaWdodCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIGFsbG93
T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0OwogICAgIGJvb2wgcmVzaGFwZURpc3BsYXlCdWZmZXJC
YWNraW5nKCk7CiAgICAgYm9vbCBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygp
OwogICAgIGJvb2wgYmluZERpc3BsYXlCdWZmZXJCYWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+IGJhY2tpbmcsIHZvaWQqIHBidWZmZXIpOwpAQCAtNTc3LDcgKzU3Myw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAsIGlzVmFsaWQoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQot
ICAgICAgICAKKwogICAgICAgICBTaGFkZXJTeW1ib2xNYXAmIHN5bWJvbE1hcChlbnVtIEFOR0xF
U2hhZGVyU3ltYm9sVHlwZSBzeW1ib2xUeXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NF
UlQoc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFIHx8IHN5bWJvbFR5
cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0gfHwgc3ltYm9sVHlwZSA9PSBTSEFERVJf
U1lNQk9MX1RZUEVfVkFSWUlORyk7CkBAIC02NDIsNyArNjM4LDYgQEAgcHJpdmF0ZToKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uc0dMT3BlbkdMPiBtX2V4dGVuc2lvbnM7CiAjZW5kaWYK
IAotICAgIEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIG1fcG93ZXJQcmVmZXJlbmNl
VXNlZEZvckNyZWF0aW9uIHsgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1
bHQgfTsKICAgICBWZWN0b3I8VmVjdG9yPGZsb2F0Pj4gbV92ZXJ0ZXhBcnJheTsKIAogI2lmICFV
U0UoQU5HTEUpCkBAIC02NzIsNyArNjY3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB1c2luZyBC
b3VuZFRleHR1cmVNYXAgPSBIYXNoTWFwPEdDR0xlbnVtLAogICAgICAgICAgICAgc3RkOjpwYWly
PEdDR0x1aW50LCBHQ0dMZW51bT4sCi0gICAgICAgICAgICBXVEY6OkludEhhc2g8R0NHTGVudW0+
LCAKKyAgICAgICAgICAgIFdURjo6SW50SGFzaDxHQ0dMZW51bT4sCiAgICAgICAgICAgICBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50PiwKICAgICAgICAgICAgIFdU
Rjo6UGFpckhhc2hUcmFpdHM8V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dM
dWludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+PgogICAg
ICAgICA+OwpAQCAtNzUzLDggKzc0OCwxMCBAQCBwcml2YXRlOgogICAgIC8vIFdoZW4gcHJlc2Vy
dmVEcmF3aW5nQnVmZmVyID09IHRydWUsIHRoaXMgaXMgYmxpdHRlZCB0byBkdXJpbmcgZGlzcGxh
eSBwcmVwYXJlLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IG1fZGlzcGxheUJ1ZmZl
ckJhY2tpbmc7CiAgICAgdm9pZCogbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciB7IG51bGxwdHIgfTsK
LQotICAgIGJvb2wgbV9oYXNTd2l0Y2hlZFRvSGlnaFBlcmZvcm1hbmNlR1BVIHsgZmFsc2UgfTsK
KyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBib29sIG1fc3VwcG9ydHNQb3dlclByZWZl
cmVuY2UgeyBmYWxzZSB9OworICAgIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QgbV9o
aWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0OwogI2VuZGlmCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRHTENW
PiBtX2N2OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNw
cAppbmRleCA0MWFiNTBjYmVmMmVhNjQyOTNiYTBjOTliZThiMDVmYzk3MDc3ZGU2Li4wYmY3ZTIx
MGI3ZjBmYjZjN2JlNzNlNTkyMmM2YWY1MWE5YjQ1NmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcApAQCAtMzEsOTEgKzMxLDggQEAKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAot
I2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKLSNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+
Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJTd2l0Y2hpbmdHUFVDbGll
bnQuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBIQVZFKEFQUExFX0dS
QVBISUNTX0NPTlRST0wpCi0KLWVudW0gewotICAgIGtBR0NPcGVuLAotICAgIGtBR0NDbG9zZQot
fTsKLQotc3RhdGljIGlvX2Nvbm5lY3RfdCBhdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKCkK
LXsKLSAgICBtYWNoX3BvcnRfdCBtYXN0ZXJQb3J0ID0gTUFDSF9QT1JUX05VTEw7Ci0gICAgCi0g
ICAgaWYgKElPTWFzdGVyUG9ydChNQUNIX1BPUlRfTlVMTCwgJm1hc3RlclBvcnQpICE9IEtFUk5f
U1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOwotICAgIAotICAgIENGRGlj
dGlvbmFyeVJlZiBjbGFzc1RvTWF0Y2ggPSBJT1NlcnZpY2VNYXRjaGluZygiQXBwbGVHcmFwaGlj
c0NvbnRyb2wiKTsKLSAgICBpZiAoIWNsYXNzVG9NYXRjaCkKLSAgICAgICAgcmV0dXJuIE1BQ0hf
UE9SVF9OVUxMOwotICAgIAotICAgIGtlcm5fcmV0dXJuX3Qga2VyblJlc3VsdDsKLSAgICBpb19p
dGVyYXRvcl90IGl0ZXJhdG9yOwotICAgIGlmICgoa2VyblJlc3VsdCA9IElPU2VydmljZUdldE1h
dGNoaW5nU2VydmljZXMobWFzdGVyUG9ydCwgY2xhc3NUb01hdGNoLCAmaXRlcmF0b3IpKSAhPSBL
RVJOX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBNQUNIX1BPUlRfTlVMTDsKLSAgICAKLSAgICBp
b19zZXJ2aWNlX3Qgc2VydmljZU9iamVjdCA9IElPSXRlcmF0b3JOZXh0KGl0ZXJhdG9yKTsKLSAg
ICBJT09iamVjdFJlbGVhc2UoaXRlcmF0b3IpOwotICAgIGlmICghc2VydmljZU9iamVjdCkKLSAg
ICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOwotICAgIAotICAgIGlvX2Nvbm5lY3RfdCBkYXRh
UG9ydDsKLSAgICBJT09iamVjdFJldGFpbihzZXJ2aWNlT2JqZWN0KTsKLSAgICBrZXJuUmVzdWx0
ID0gSU9TZXJ2aWNlT3BlbihzZXJ2aWNlT2JqZWN0LCBtYWNoX3Rhc2tfc2VsZigpLCAwLCAmZGF0
YVBvcnQpOwotICAgIElPT2JqZWN0UmVsZWFzZShzZXJ2aWNlT2JqZWN0KTsKLSAgICAKLSAgICBy
ZXR1cm4gKGtlcm5SZXN1bHQgPT0gS0VSTl9TVUNDRVNTKSA/IGRhdGFQb3J0IDogTUFDSF9QT1JU
X05VTEw7Ci19Ci0KLXN0YXRpYyBib29sIGhhc011eENhcGFiaWxpdHkoKQotewotICAgIGlvX2Nv
bm5lY3RfdCBkYXRhUG9ydCA9IGF0dGFjaFRvQXBwbGVHcmFwaGljc0NvbnRyb2woKTsKLSAgICAK
LSAgICBpZiAoZGF0YVBvcnQgPT0gTUFDSF9QT1JUX05VTEwpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKLSAgICBib29sIHJlc3VsdDsKLSAgICBpZiAoSU9Db25uZWN0Q2FsbFNjYWxhck1l
dGhvZChkYXRhUG9ydCwga0FHQ09wZW4sIG51bGxwdHIsIDAsIG51bGxwdHIsIG51bGxwdHIpID09
IEtFUk5fU1VDQ0VTUykgewotICAgICAgICBJT0Nvbm5lY3RDYWxsU2NhbGFyTWV0aG9kKGRhdGFQ
b3J0LCBrQUdDQ2xvc2UsIG51bGxwdHIsIDAsIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICBy
ZXN1bHQgPSB0cnVlOwotICAgIH0gZWxzZQotICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAK
LSAgICBJT1NlcnZpY2VDbG9zZShkYXRhUG9ydCk7Ci0gICAgCi0gICAgaWYgKHJlc3VsdCkgewot
ICAgICAgICAvLyBUaGlzIGlzIGRldGVjdGluZyBNYWMgaGFyZHdhcmUgd2l0aCBhbiBJbnRlbCBn
NTc1IEdQVSwgd2hpY2gKLSAgICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byBtYWtlIGF2YWlsYWJs
ZSB0byBtdXhpbmcuCi0gICAgICAgIC8vIEJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gQXBwbGUn
cyBPcGVuR0wgdGVhbSwgc3VjaCBkZXZpY2VzCi0gICAgICAgIC8vIGhhdmUgZm91ciBvciBmZXdl
ciBwcm9jZXNzb3JzLgotICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzAwNjAzNzg+Ci0gICAg
ICAgIGludCBuYW1lc1syXSA9IHsgQ1RMX0hXLCBIV19OQ1BVIH07Ci0gICAgICAgIGludCBjcHVD
b3VudDsKLSAgICAgICAgc2l6ZV90IGNwdUNvdW50TGVuZ3RoID0gc2l6ZW9mKGNwdUNvdW50KTsK
LSAgICAgICAgc3lzY3RsKG5hbWVzLCAyLCAmY3B1Q291bnQsICZjcHVDb3VudExlbmd0aCwgbnVs
bHB0ciwgMCk7Ci0gICAgICAgIHJlc3VsdCA9IGNwdUNvdW50ID4gNDsKLSAgICB9Ci0gICAgCi0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotYm9vbCBoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkKLXsK
LSAgICBzdGF0aWMgYm9vbCBjYW5NdXggPSBoYXNNdXhDYXBhYmlsaXR5KCk7Ci0gICAgcmV0dXJu
IGNhbk11eDsKLX0KLSNlbmRpZiAvLyBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCi0KIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlciYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyPiBzX21hbmFnZXI7CkBAIC0xMjcsMzMgKzQ0LDE3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1
cmVkKENHRGlyZWN0RGlzcGxheUlELCBDCiB7CiAgICAgTE9HKFdlYkdMLCAiR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkIik7CiAgICAgaWYgKGZs
YWdzICYga0NHRGlzcGxheVNldE1vZGVGbGFnKQotICAgICAgICBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS51cGRhdGVBbGxDb250ZXh0cygpOwotfQotI2Vu
ZGlmCi0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjp1cGRhdGVBbGxDb250
ZXh0cygpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGZvciAoY29uc3QgYXV0byYgY29udGV4
dCA6IG1fY29udGV4dHMpIHsKLSAgICAgICAgY29udGV4dC0+dXBkYXRlQ0dMQ29udGV4dCgpOwot
ICAgICAgICBjb250ZXh0LT5kaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCk7Ci0g
ICAgfQotI2VuZGlmCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcigpLmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoKTsKIH0KIAotI2lmIFBMQVRGT1JN
KE1BQykKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzY3JlZW5EaWRDaGFu
Z2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBjb25zdCBIb3N0V2luZG93KiB3aW5kb3cp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6ZGlzcGxheVdhc1JlY29uZmln
dXJlZCgpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBjb250ZXh0QW5kV2luZG93IDogbV9jb250
ZXh0V2luZG93TWFwKSB7Ci0gICAgICAgIGlmIChjb250ZXh0QW5kV2luZG93LnZhbHVlID09IHdp
bmRvdykgewotICAgICAgICAgICAgY29udGV4dEFuZFdpbmRvdy5rZXktPnNjcmVlbkRpZENoYW5n
ZShkaXNwbGF5SUQpOwotICAgICAgICAgICAgTE9HKFdlYkdMLCAiQ2hhbmdpbmcgY29udGV4dCAo
JXApIHRvIGRpc3BsYXkgKCVkKS4iLCBjb250ZXh0QW5kV2luZG93LmtleSwgZGlzcGxheUlEKTsK
LSAgICAgICAgfQotICAgIH0KKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHQgOiBtX2NvbnRl
eHRzKQorICAgICAgICBjb250ZXh0LT5kaXNwbGF5V2FzUmVjb25maWd1cmVkKCk7CiB9CiAjZW5k
aWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmFkZENvbnRleHQoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIEhvc3RXaW5kb3cqIHdpbmRvdykKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjphZGRDb250ZXh0KEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0KQogewogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBpZiAoIWNv
bnRleHQpCkBAIC0xNjYsNyArNjcsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFu
YWdlcjo6YWRkQ29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dAogCiAgICAg
QVNTRVJUKCFtX2NvbnRleHRzLmNvbnRhaW5zKGNvbnRleHQpKTsKICAgICBtX2NvbnRleHRzLmFw
cGVuZChjb250ZXh0KTsKLSAgICBtX2NvbnRleHRXaW5kb3dNYXAuc2V0KGNvbnRleHQsIHdpbmRv
dyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpyZW1vdmVDb250
ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQpAQCAtMTc0LDk3ICs3NCwxMiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6cmVtb3ZlQ29udGV4dChHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogY29udAogICAgIGlmICghbV9jb250ZXh0cy5jb250YWlucyhj
b250ZXh0KSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4dHMucmVtb3ZlRmlyc3QoY29u
dGV4dCk7Ci0gICAgbV9jb250ZXh0V2luZG93TWFwLnJlbW92ZShjb250ZXh0KTsKLSAgICByZW1v
dmVDb250ZXh0UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKGNvbnRleHQpOwotICAgIAogI2lmIFBM
QVRGT1JNKE1BQykgJiYgIUVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykK
ICAgICBpZiAoIW1fY29udGV4dHMuc2l6ZSgpKQogICAgICAgICBDR0Rpc3BsYXlSZW1vdmVSZWNv
bmZpZ3VyYXRpb25DYWxsYmFjayhkaXNwbGF5V2FzUmVjb25maWd1cmVkLCBudWxscHRyKTsKICNl
bmRpZgogfQogCi1Ib3N0V2luZG93KiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6Omhv
c3RXaW5kb3dGb3JDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KSBjb25z
dAotewotICAgIEFTU0VSVChtX2NvbnRleHRXaW5kb3dNYXAuY29udGFpbnMoY29udGV4dCkpOwot
ICAgIHJldHVybiBtX2NvbnRleHRXaW5kb3dNYXAuZ2V0KGNvbnRleHQpOwotfQotCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dFJlcXVpcmluZ0hpZ2hQZXJm
b3JtYW5jZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQo
Y29udGV4dCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
QVNTRVJUKG1fY29udGV4dHMuY29udGFpbnMoY29udGV4dCkpOwotICAgIEFTU0VSVCghbV9jb250
ZXh0c1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZS5jb250YWlucyhjb250ZXh0KSk7Ci0gICAgCi0g
ICAgTE9HKFdlYkdMLCAiVGhpcyBjb250ZXh0ICglcCkgcmVxdWlyZXMgdGhlIGhpZ2gtcGVyZm9y
bWFuY2UgR1BVLiIsIGNvbnRleHQpOwotICAgIG1fY29udGV4dHNSZXF1aXJpbmdIaWdoUGVyZm9y
bWFuY2UuYWRkKGNvbnRleHQpOwotICAgIAotICAgIHVwZGF0ZUhpZ2hQZXJmb3JtYW5jZVN0YXRl
KCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpyZW1vdmVDb250
ZXh0UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250
ZXh0KQotewotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFt
X2NvbnRleHRzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLmNvbnRhaW5zKGNvbnRleHQpKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgTE9HKFdlYkdMLCAiVGhpcyBjb250ZXh0ICglcCkgbm8g
bG9uZ2VyIHJlcXVpcmVzIHRoZSBoaWdoLXBlcmZvcm1hbmNlIEdQVS4iLCBjb250ZXh0KTsKLSAg
ICBtX2NvbnRleHRzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLnJlbW92ZShjb250ZXh0KTsKLSAg
ICAKLSAgICB1cGRhdGVIaWdoUGVyZm9ybWFuY2VTdGF0ZSgpOwotfQotCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlcjo6dXBkYXRlSGlnaFBlcmZvcm1hbmNlU3RhdGUoKQotewot
I2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIWhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmIChtX2NvbnRleHRzUmVxdWlyaW5nSGlnaFBlcmZv
cm1hbmNlLnNpemUoKSkgewotICAgICAgICAKLSAgICAgICAgaWYgKG1fZGlzYWJsZUhpZ2hQZXJm
b3JtYW5jZUdQVVRpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHTCwgIkNh
bmNlbCBwZW5kaW5nIHRpbWVyIGZvciB0dXJuaW5nIG9mZiBoaWdoLXBlcmZvcm1hbmNlIEdQVS4i
KTsKLSAgICAgICAgICAgIG1fZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVyLnN0b3AoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmICghbV9yZXF1ZXN0aW5nSGlnaFBlcmZvcm1hbmNlKSB7
Ci0gICAgICAgICAgICBMT0coV2ViR0wsICJSZXF1ZXN0IHRoZSBoaWdoLXBlcmZvcm1hbmNlIEdQ
VS4iKTsKLSAgICAgICAgICAgIG1fcmVxdWVzdGluZ0hpZ2hQZXJmb3JtYW5jZSA9IHRydWU7Ci0g
ICAgICAgICAgICBpZiAoYXV0byogc2luZ2xldG9uID0gU3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5n
bGV0b25JZkV4aXN0cygpKQotICAgICAgICAgICAgICAgIHNpbmdsZXRvbi0+cmVxdWVzdEhpZ2hQ
ZXJmb3JtYW5jZUdQVSgpOwotICAgICAgICB9Ci0KLSAgICB9IGVsc2UgewotICAgICAgICAvLyBE
b24ndCBpbW1lZGlhdGVseSB0dXJuIG9mZiB0aGUgaGlnaC1wZXJmb3JtYW5jZSBHUFUuIFRoZSB1
c2VyIG1pZ2h0IGJlCi0gICAgICAgIC8vIHN3YXBwaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4g
dGFicyBvciB3aW5kb3dzLCBhbmQgd2UgZG9uJ3Qgd2FudCB0byBjYXVzZQotICAgICAgICAvLyBj
aHVybiBpZiB3ZSBjYW4gYXZvaWQgaXQuCi0gICAgICAgIGlmICghbV9kaXNhYmxlSGlnaFBlcmZv
cm1hbmNlR1BVVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdMLCAiU2V0
IGEgdGltZXIgdG8gcmVsZWFzZSB0aGUgaGlnaC1wZXJmb3JtYW5jZSBHUFUuIik7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogRXhwb3NlIHRoaXMgdmFsdWUgYXMgYSBTZXR0aW5nLCB3aGljaCB3b3Vs
ZCByZXF1aXJlIHRoaXMgY2xhc3MKLSAgICAgICAgICAgIC8vIHRvIHJlZmVyZW5jZSBhIGZyYW1l
LCBwYWdlIG9yIGRvY3VtZW50LgotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFNlY29uZHMgdGlt
ZVRvS2VlcEhpZ2hQZXJmb3JtYW5jZUdQVUFsaXZlIHsgMTBfcyB9OwotICAgICAgICAgICAgbV9k
aXNhYmxlSGlnaFBlcmZvcm1hbmNlR1BVVGltZXIuc3RhcnRPbmVTaG90KHRpbWVUb0tlZXBIaWdo
UGVyZm9ybWFuY2VHUFVBbGl2ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmRpc2FibGVIaWdoUGVyZm9ybWFuY2VH
UFVUaW1lckZpcmVkKCkKLXsKLSAgICBpZiAobV9jb250ZXh0c1JlcXVpcmluZ0hpZ2hQZXJmb3Jt
YW5jZS5zaXplKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcmVxdWVzdGluZ0hpZ2hQZXJm
b3JtYW5jZSA9IGZhbHNlOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoYXV0byogc2luZ2xl
dG9uID0gU3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygpKQotICAgICAgICBz
aW5nbGV0b24tPnJlbGVhc2VIaWdoUGVyZm9ybWFuY2VHUFUoKTsKLSNlbmRpZgotfQotCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6cmVjeWNsZUNvbnRleHRJZk5lY2Vzc2Fy
eSgpCiB7CiAgICAgaWYgKGhhc1Rvb01hbnlDb250ZXh0cygpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgKaW5kZXggM2FmOGEwNTJhZThlMmExNWQ1YzA1
MTc4NGZiMDg1NDVlZTlhMWQ2NC4uYzAxMDc2Y2RhYWIyMTAzZThlYjFjMzg2YmU3NjAxMDA5Zjc3
MWFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaApA
QCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlRpbWVyLmgiCi0j
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtMzgsNTIgKzM2LDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNv
bnN0IHVuc2lnbmVkIE1heENvbnRleHRzID0gMTY7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOwotY2xhc3MgSG9zdFdpbmRvdzsKLQotdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1
aW50MzJfdDsKLQotI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKLVdFQkNPUkVfRVhQ
T1JUIGJvb2wgaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpOwotI2VuZGlmCiAKIGNsYXNzIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlciB7CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcj47CiBwdWJsaWM6CiAgICAgc3RhdGljIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlciYgc2hhcmVkTWFuYWdlcigpOwogICAgIAotICAgIHZv
aWQgYWRkQ29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIEhvc3RXaW5kb3cqKTsKKyAg
ICB2b2lkIGFkZENvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKICAgICB2b2lkIHJl
bW92ZUNvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKLQotICAgIEhvc3RXaW5kb3cq
IGhvc3RXaW5kb3dGb3JDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKikgY29uc3Q7Ci0g
ICAgCi0gICAgdm9pZCBhZGRDb250ZXh0UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKik7Ci0gICAgdm9pZCByZW1vdmVDb250ZXh0UmVxdWlyaW5nSGlnaFBl
cmZvcm1hbmNlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7CiAgICAgCiAgICAgdm9pZCByZWN5
Y2xlQ29udGV4dElmTmVjZXNzYXJ5KCk7CiAgICAgYm9vbCBoYXNUb29NYW55Q29udGV4dHMoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRleHRzLnNpemUoKSA+PSBNYXhDb250ZXh0czsgfQogICAgIAot
ICAgIHZvaWQgdXBkYXRlQWxsQ29udGV4dHMoKTsKLQogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2
b2lkIHNjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCwgY29uc3QgSG9zdFdpbmRvdyop
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQo
Q0dEaXJlY3REaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncywgdm9pZCopOwor
ICAgIHZvaWQgZGlzcGxheVdhc1JlY29uZmlndXJlZCgpOwogI2VuZGlmCiAgICAgCiBwcml2YXRl
OgotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcigpCi0gICAgICAgIDogbV9kaXNh
YmxlSGlnaFBlcmZvcm1hbmNlR1BVVGltZXIoKnRoaXMsICZHcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXI6OmRpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lckZpcmVkKQotICAgIHsKLSAg
ICB9Ci0KLSAgICB2b2lkIHVwZGF0ZUhpZ2hQZXJmb3JtYW5jZVN0YXRlKCk7Ci0gICAgdm9pZCBk
aXNhYmxlSGlnaFBlcmZvcm1hbmNlR1BVVGltZXJGaXJlZCgpOworICAgIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMTWFuYWdlcigpID0gZGVmYXVsdDsKIAogICAgIFZlY3RvcjxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCo+IG1fY29udGV4dHM7Ci0gICAgSGFzaE1hcDxHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCosIEhvc3RXaW5kb3cqPiBtX2NvbnRleHRXaW5kb3dNYXA7Ci0gICAgSGFzaFNldDxHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCo+IG1fY29udGV4dHNSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2U7
Ci0gICAgCi0gICAgVGltZXIgbV9kaXNhYmxlSGlnaFBlcmZvcm1hbmNlR1BVVGltZXI7Ci0gICAg
Ym9vbCBtX3JlcXVlc3RpbmdIaWdoUGVyZm9ybWFuY2UgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGY4YmQxMTNhOTg2YjAzNzg4N2I2MDFl
ZGZlZWNmNWE0MmQyYWNlNzIuLmQ0NWI5NWU5MzU4ODI4YTk0ZTBiYmJmNGEyYTc1ZDdkMzE5ZDdi
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTMxOSw3ICszMTksNyBA
QAogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDaGVja3NNYWMuaCIKICNpbmNs
dWRlICJOU1Njcm9sbGVySW1wRGV0YWlscy5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lTWFj
LmgiCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdo
UGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGln
aFBlcmZvcm1hbmNlR1BVTWFuYWdlci5oCmluZGV4IDU1NTZjYmQ0NGYwZjU0N2NkNjVkM2RlNDFl
NTIwNjVmODkzZDNhYWUuLmFjNjIxOTNhY2ZkNWMyYjY0MmE1NzVhZjM0N2Y1ZTUyZTAyZmU2NWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VH
UFVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQZXJmb3Jt
YW5jZUdQVU1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAog
I2luY2x1ZGUgPE9wZW5HTC9DR0xUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogCkBAIC00NCwxMyArNDUsMTMgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlUHJvY2Vzc1Jl
cXVpcmluZ0hpZ2hQZXJmb3JtYW5jZShXZWJQcm9jZXNzUHJveHkqKTsKIAogcHJpdmF0ZToKLSAg
ICBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyKCkgPSBkZWZhdWx0OworICAgIEhpZ2hQZXJmb3Jt
YW5jZUdQVU1hbmFnZXIoKTsKICAgICB+SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcigpOwotCiAg
ICAgdm9pZCB1cGRhdGVTdGF0ZSgpOwogCiAgICAgSGFzaFNldDxXZWJQcm9jZXNzUHJveHkqPiBt
X3Byb2Nlc3Nlc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZTsKICAgICBDR0xQaXhlbEZvcm1hdE9i
aiBtX3BpeGVsRm9ybWF0T2JqIHsgbnVsbHB0ciB9OworICAgIFdlYkNvcmU6OlRpbWVyIG1fdXBk
YXRlU3RhdGVUaW1lcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIubW0KaW5kZXggYTk2ZmMzZDExMzc5
OGU3OWFmYzBmZGI2MjY1ZmRkYWZkMDNkMGFlMC4uNTlkZmY4YjIzYzgwYzAyNjViZWU1MTlmODQ2
MDczODg0ZjYxNWM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hp
Z2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIubW0KQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBQ
TEFURk9STShNQUMpCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzQ2hlY2tzTWFjLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9PcGVuR0xTb2Z0TGlua0NvY29hLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsNiArNDQsMTMgQEAgSGlnaFBlcmZvcm1hbmNl
R1BVTWFuYWdlciYgSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6c2luZ2xldG9uKCkKICAgICBy
ZXR1cm4gc2hhcmVkTWFuYWdlcjsKIH0KIAorSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6SGln
aFBlcmZvcm1hbmNlR1BVTWFuYWdlcigpCisgICAgOiBtX3VwZGF0ZVN0YXRlVGltZXIoKnRoaXMs
ICZIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjp1cGRhdGVTdGF0ZSkKK3sKK30KKworSGlnaFBl
cmZvcm1hbmNlR1BVTWFuYWdlcjo6fkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIoKSA9IGRlZmF1
bHQ7CisKIHZvaWQgSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6YWRkUHJvY2Vzc1JlcXVpcmlu
Z0hpZ2hQZXJmb3JtYW5jZShXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiB7CiAgICAgaWYgKCFX
ZWJDb3JlOjpoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkpCkBAIC02NSw3ICs3Miw4IEBAIHZvaWQg
SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6cmVtb3ZlUHJvY2Vzc1JlcXVpcmluZ0hpZ2hQZXJm
b3JtYW5jZShXZWJQcm9jZXNzCiAKICAgICBpZiAobV9wcm9jZXNzZXNSZXF1aXJpbmdIaWdoUGVy
Zm9ybWFuY2UucmVtb3ZlKHByb2Nlc3MpKSB7CiAgICAgICAgIExPRyhXZWJHTCwgIkhpZ2hQZXJm
b3JtYW5jZUdQVU1hbmFnZXI6OnJlbW92ZVByb2Nlc3NSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2Uo
KSAtIHJlbW92aW5nIHByb2Nlc3MgJXAiLCBwcm9jZXNzKTsKLSAgICAgICAgdXBkYXRlU3RhdGUo
KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IFNlY29uZHMgdGltZVRvS2VlcEhpZ2hQZXJmb3JtYW5j
ZUdQVUFsaXZlIHsgMTBfcyB9OworICAgICAgICBtX3VwZGF0ZVN0YXRlVGltZXIuc3RhcnRPbmVT
aG90KHRpbWVUb0tlZXBIaWdoUGVyZm9ybWFuY2VHUFVBbGl2ZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTc0LDYgKzgyLDggQEAgdm9pZCBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2Vy
OjpyZW1vdmVQcm9jZXNzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKFdlYlByb2Nlc3MKIAogdm9p
ZCBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjp1cGRhdGVTdGF0ZSgpCiB7CisgICAgaWYgKG1f
dXBkYXRlU3RhdGVUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3VwZGF0ZVN0YXRlVGltZXIu
c3RvcCgpOwogICAgIGlmIChtX3Byb2Nlc3Nlc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZS5zaXpl
KCkpIHsKICAgICAgICAgaWYgKCFtX3BpeGVsRm9ybWF0T2JqKSB7CiAgICAgICAgICAgICBMT0co
V2ViR0wsICJIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyIC0gdHVybmluZyBvbiBoaWdoLXBlcmZv
cm1hbmNlIEdQVS4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNwcApp
bmRleCA0NGM2YjQzMmU3ZDVjNWRhYTc4ZDhkMDJhYjc3Yzc5MGMxNGE5MzRhLi5jMWMyYTJlYmRj
Nzc4NzdlMTdmN2MxOTI1MzM1OTM4NWRhZjc4NDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0
Y2hpbmdHUFVDbGllbnQuY3BwCkBAIC00MywxMiArNDMsMTkgQEAgV2ViU3dpdGNoaW5nR1BVQ2xp
ZW50JiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnNpbmdsZXRvbigpCiAKIHZvaWQgV2ViU3dpdGNo
aW5nR1BVQ2xpZW50OjpyZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCkKIHsKKyAgICBtX3JlcXVl
c3RzKys7CisgICAgaWYgKG1fcmVxdWVzdHMgIT0gMSkKKyAgICAgICAgcmV0dXJuOwogICAgIExP
RyhXZWJHTCwgIldlYlN3aXRjaGluZ0dQVUNsaWVudDo6cmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQ
VSgpIGZyb20gV2ViUHJvY2VzcyIpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6UmVx
dWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSgpLCAwKTsKIH0KIAogdm9pZCBXZWJTd2l0Y2hpbmdHUFVD
bGllbnQ6OnJlbGVhc2VIaWdoUGVyZm9ybWFuY2VHUFUoKQogeworICAgIEFTU0VSVChtX3JlcXVl
c3RzKTsKKyAgICBtX3JlcXVlc3RzLS07CisgICAgaWYgKG1fcmVxdWVzdHMpCisgICAgICAgIHJl
dHVybjsKICAgICBMT0coV2ViR0wsICJXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlbGVhc2VIaWdo
UGVyZm9ybWFuY2VHUFUoKSBmcm9tIFdlYlByb2Nlc3MiKTsKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OlJlbGVhc2VIaWdoUGVyZm9ybWFuY2VHUFUoKSwgMCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN3aXRjaGlu
Z0dQVUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuaAppbmRleCAyMGViMmVlMjU3MWZlYmEyZGE0ODRmMjE4
Nzc3OGIxMjk0MGFlNTMzLi5iYjgxZDhhNjA4YWIxZmRhNDVmMDdlYTdiMzhhNjM0NTE5ZTc4NDIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYlN3aXRjaGluZ0dQVUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmgKQEAgLTMyLDkgKzMyLDEw
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViU3dpdGNoaW5nR1BVQ2xpZW50IDogcHVi
bGljIFdlYkNvcmU6OlN3aXRjaGluZ0dQVUNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdl
YlN3aXRjaGluZ0dQVUNsaWVudCYgc2luZ2xldG9uKCk7Ci0gICAgCitwcml2YXRlOgogICAgIHZv
aWQgcmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVsZWFz
ZUhpZ2hQZXJmb3JtYW5jZUdQVSgpIG92ZXJyaWRlOworICAgIHVuc2lnbmVkIG1fcmVxdWVzdHMg
eyAwIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0luZm8ucGxp
c3QgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0luZm8ucGxpc3QKaW5kZXggZDMzNjUzZmQxMDBiODgz
ZGNhMjViZDRlYzZmMWRiODFmODcxOGM1YS4uNzQ3NDFlMjk2NWFiNjVkOWExMGJiODNlYmQ1NzY1
NmJiNWFiNzY5OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmZvLnBsaXN0Cisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5mby5wbGlzdApAQCAtMzEsNSArMzEsNyBAQAogCTxz
dHJpbmc+JHtQUk9EVUNUX05BTUV9PC9zdHJpbmc+CiAJPGtleT5DRkJ1bmRsZUlkZW50aWZpZXI8
L2tleT4KIAk8c3RyaW5nPiR7UFJPRFVDVF9CVU5ETEVfSURFTlRJRklFUn08L3N0cmluZz4KKwk8
a2V5Pk5TU3VwcG9ydHNBdXRvbWF0aWNHcmFwaGljc1N3aXRjaGluZzwva2V5PgorCTx0cnVlLz4K
IDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dl
YktpdFRlc3RSdW5uZXJBcHAvV2ViS2l0VGVzdFJ1bm5lckFwcC1JbmZvLnBsaXN0IGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyQXBwL1dlYktpdFRlc3RSdW5uZXJBcHAt
SW5mby5wbGlzdAppbmRleCBjOGIxYmJhNWQ4YWUyZDU1YjhmMjM3ZGQ5YWRlYzVmZjgxZjA3M2Qx
Li45OTAwOWMyNWU2YjgyY2YwNDkwZmIwMWI0M2RiMTYzNDRkNjE5MmQxIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXJBcHAvV2ViS2l0VGVzdFJ1bm5l
ckFwcC1JbmZvLnBsaXN0CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1
bm5lckFwcC9XZWJLaXRUZXN0UnVubmVyQXBwLUluZm8ucGxpc3QKQEAgLTQ4LDUgKzQ4LDcgQEAK
IAkJPHN0cmluZz5VSUludGVyZmFjZU9yaWVudGF0aW9uTGFuZHNjYXBlTGVmdDwvc3RyaW5nPgog
CQk8c3RyaW5nPlVJSW50ZXJmYWNlT3JpZW50YXRpb25MYW5kc2NhcGVSaWdodDwvc3RyaW5nPgog
CTwvYXJyYXk+CisJPGtleT5OU1N1cHBvcnRzQXV0b21hdGljR3JhcGhpY3NTd2l0Y2hpbmc8L2tl
eT4KKwk8dHJ1ZS8+CiA8L2RpY3Q+CiA8L3BsaXN0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418129</attachid>
            <date>2021-01-22 02:59:28 -0800</date>
            <delta_ts>2021-01-22 03:14:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220843-20210122125926.patch</filename>
            <type>text/plain</type>
            <size>60153</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTBlMTg1NzBmN2QyNTI1
MWZiMTY2MzllOGI1YTdjM2Q1OTU4MDRmMS4uMzc5YjNmMDQwODZjZDliNzFmODkzZDZiMDljNWFj
MmJiNzdhY2Y3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTAxLTIyICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgcG93ZXIg
cHJlZmVyZW5jZSBhbmQgZGlzY3JldGUvaW50ZXJuYWwgZ3B1IHNlbGVjdGlvbiBpbXBsZW1lbnRl
ZCBpbmNvcnJlY3RseSB3aXRoIEFOR0xFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjA4NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgQU5HTEUgZXh0ZW5zaW9uIEVHTF9BTkdMRV9wb3dlcl9wcmVm
ZXJlbmNlIHRvIHNpZ25hbCB0byBBTkdMRSB0aGF0IHRoZSB1bmRlcmx5aW5nCisgICAgICAgIENH
TCBjb250ZXh0IHNob3VsZCBiZSB1cGRhdGVkIGFzIGEgcmVzcG9uc2UgdG8gZGlzcGxheSByZWNv
bmZpZ3VyYXRpb24gc2lnbmFsLgorICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCBBTkdMRSBzdGF0
ZSBzdGF5cyBjb25zaXN0ZW50IHdpdGggdGhlIGFjdHVhbCBDR0wgY29udGV4dCBiZWhhdmlvciwg
YXMKKyAgICAgICAgd2UgZG9uJ3QgY2hhbmdlIHRoZSBjb250ZXh0IGJlaGluZCBBTkdMRSdzIGJh
Y2suCisKKyAgICAgICAgUmVtb3ZlIHRoZSBmZWF0dXJlIHdoZXJlIHRoZSBjb250ZXh0IEdQVSBp
cyBzZWxlY3RlZCBiYXNlZCBvbiB0aGUgZGlzcGxheSB0aGUgd2luZG93IGlzCisgICAgICAgIG9u
LiBUaGlzIGNhbm5vdCB3b3JrIHdpdGggdGhlIGxvZ2ljIG9mICJwb3dlclByZWZlcmVuY2UgPSAi
aGlnaC1wZXJmb3JtYW5jZSIgZ29lcyB0bworICAgICAgICBkaXNjcmV0ZSBHUFUiLiBBbHNvLCB0
aGlzIGNhbm5vdCB3b3JrIHdpdGggQU5HTEUgYXQgYWxsLCBzaW5jZSBhbGwgY29udGV4dHMgYXJl
IGJhY2tlZAorICAgICAgICBieSBhIHNpbmdsZSBwbGF0Zm9ybSBjb250ZXh0LiBUaHVzIGFsbCBj
b250ZXh0cyB3aWxsIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIEdQVS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgZHVlIHRvIHRoZSB0ZXN0IHJ1bm5lciBtaXNzaW5nIGZlYXR1cmVzLiBUaGUgYnVn
IGJsb2NrZXJzIHRyYWNrIHRoZSB0ZXN0aW5nLgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21h
a2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0hpZ2hQZXJmb3JtYW5jZUNv
bnRleHQpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250
ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZGlzcGxheVdhc1JlY29uZmlndXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjphdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6
Omhhc011eENhcGFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6aGFzTG93QW5kSGlnaFBvd2Vy
R1BVcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFj
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1Njb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oLgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6U2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0Ojp+U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0OjpvcGVyYXRv
cj0pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6
YWNxdWlyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNs
aWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnJlbW92ZUNv
bnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisK
IDIwMjEtMDEtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IFZhbGlkYXRlIEl0ZW1IYW5kbGVzIHdoZW4gZGVjb2RpbmcgdGhlbSBpbiBHUFVQcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDk3ODkwZWI1Y2NhYTEyODhhMWRjNjVjODc1OWQ1ZGY1YmNhMDlhMDkuLjM1MmIx
ZjdlZDhkMTk4ZmQwYjI5ZTQ3ZWZhN2E1YTIzOTNmNzliYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjMgQEAKKzIwMjEtMDEtMjIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWJHTCBwb3dlciBwcmVmZXJlbmNlIGFuZCBkaXNjcmV0ZS9pbnRlcm5hbCBn
cHUgc2VsZWN0aW9uIGltcGxlbWVudGVkIGluY29ycmVjdGx5IHdpdGggQU5HTEUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDg0MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIGhpZ2gtcGVy
Zm9ybWFuY2UgR1BVIHNodXRkb3duIHRpbWVyIGZyb20gaW5kaXZpZHVhbCB3ZWIgcHJvY2Vzc2Vz
IHRvIHRoZSBtYWluIGNsYXNzCisgICAgICAgIGluIHRoZSB1aSBwcm9jZXNzLiBUaGlzIHNpbXBs
aWZpZXMgdGhlIGltcGxlbWVudGF0aW9uIGFuZCByZWR1Y2VzIHRoZSBudW1iZXIgb2YgdGltZXJz
LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpIaWdoUGVyZm9ybWFu
Y2VHUFVNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdl
cjo6cmVtb3ZlUHJvY2Vzc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZSk6CisgICAgICAgIChXZWJL
aXQ6OkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlcXVlc3RIaWdoUGVyZm9y
bWFuY2VHUFUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlbGVh
c2VIaWdoUGVyZm9ybWFuY2VHUFUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5oOgorCiAyMDIxLTAxLTIxICBQZW5nIExpdSAg
PHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgUGlQIHZpZGVvIHN1YnRpdGxlcyBzdG9w
IHVwZGF0aW5nIHdoZW4gU2FmYXJpIGlzIGJhY2tncm91bmRlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQppbmRleCBhYzcwMTU0OTk3OTllNGZiNGVlMmEwZGUwMWI0MzUxMmIwOWExZjhlLi5jYWQy
NjQ0OWM3NGM4NWNhY2I5NjViMzljOGZiNzUyOTAxZmNhNmYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtMzQwLDYgKzM0MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0Zsb2F0U2l6ZU1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0NoZWNrc01hYy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9JbnRQb2ludE1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggM2JlMTc1
OGNkODc1NTM5YWM3ZDJjNmRhYTA3OGYwY2IzMDJjODcxMy4uZTg3ZDRkZDA3OWE1NWY2OWQyMTcz
YmRmMTEyYzJlZjlmOWE2ZWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MTgsNiAr
NDE4LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRmxvYXRTaXplTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01h
Yy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSW1hZ2VNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRQb2ludE1hYy5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM4MzgwZTFiNTZhODg1OTJmMzk0YjdmNjM4ZTM4YWUzY2Y1ODk0N2MuLmJmNjViZGEzOTkx
ZTYwZGQxOWY2ZmRlNzg5YWYyODBkNGVhZjYwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIyNTksNiArMjI1OSw5IEBACiAJ
CTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5
MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JC
MzRBMTcyNTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2
MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi87
IH07CiAJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJh
Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTdCQjY4MEIyMjVCQTBENEEwMDJCODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2
ODBCMDI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCQjY4
MEI2MjVCQTFBRTIwMDJCODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2ODBCNDI1
QkExQUUxMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyB9
OworCQk3QkI2ODBCQTI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjY4MEI4MjVCQTFC
RTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkwNkZCQjRGMEYyQyAvKiBK
U1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpTU1ZHR3JhcGhpY3NFbGVt
ZW50LmggKi87IH07CiAJCTdDMDI5QzZFMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAyOUM2RDI0
OTNDOEY4MDAyNjgyMDQgLyogQ29sb3JUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMTg0M0ZFMUM4QjcyODMwMDJFQjk3MyAvKiBBdXRv
ZmlsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mx
ODQzRkMxQzhCNzI4MzAwMkVCOTczIC8qIEF1dG9maWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjk0LDYgKzEwMjk3LDEwIEBACiAJCTdC
QjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDUyNTM3
NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250
ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JC
NjgwQjAyNUJBMEQ0QTAwMkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNl
R1BVUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkI2ODBCNDI1QkEx
QUUxMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQjY4MEI3MjVCQTFCRTMwMDJCODcz
OCAvKiBHcmFwaGljc0NoZWNrc01hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCQjY4MEI4MjVCQTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1QjI1NzYzQjhEMDBFODVEOTggLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzAxMUYzRDI0RkFEMzYwMDA1QkVGMTAgLyogU2V0dGluZ3MuY3BwLmVyYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBT
ZXR0aW5ncy5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAxMUYzRTI0
RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI2NDk2LDExICsyNjUwMywxNSBAQAogCQkJCUIyNzUzNTREMEIwNTM4MTQwMDJD
RTY0RiAvKiBGbG9hdFNpemVNYWMubW0gKi8sCiAJCQkJQjJBRkZDNzUwRDAwQTVDMTAwMzAwNzRE
IC8qIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwICovLAogCQkJCUIyQUZGQzc2MEQwMEE1QzEw
MDMwMDc0RCAvKiBGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggKi8sCisJCQkJN0JCNjgwQjcyNUJB
MUJFMzAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmNwcCAqLywKKwkJCQk3QkI2ODBCODI1
QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLywKIAkJCQlCMjc1MzU4RDBC
MDUzQTY2MDAyQ0U2NEYgLyogSWNvbk1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RTBCMDUzODE0MDAy
Q0U2NEYgLyogSW1hZ2VNYWMubW0gKi8sCiAJCQkJQjI3NTM1NEYwQjA1MzgxNDAwMkNFNjRGIC8q
IEludFBvaW50TWFjLm1tICovLAogCQkJCUIyNzUzNTUxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRT
aXplTWFjLm1tICovLAogCQkJCTJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAvKiBQREZEb2N1bWVu
dEltYWdlTWFjLm1tICovLAorCQkJCTdCQjY4MEI0MjVCQTFBRTEwMDJCODczOCAvKiBTY29wZWRI
aWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8sCisJCQkJN0JCNjgwQjAyNUJBMEQ0QTAwMkI4
NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLywKIAkJCQkxNjNFODhG
NTExOEEzOUQyMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgKi8sCiAJCQkJ
QzExQTlFRDIyMTQwNTc4QjAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi8sCiAJ
CQkJQzExQTlFQ0QyMTQwM0E1QzAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5oICovLApA
QCAtMzIyMzMsNiArMzIyNDQsNyBAQAogCQkJCUJDNTNDNUY1MERBNTZCOTIwMDIxRUI1RCAvKiBH
cmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjQwRDAwQkYyMjAwNzFCNzgyIC8q
IEdyYWRpZW50QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0ODFGMDQxNDZCNUM2
QjAwQUE3ODM0IC8qIEdyYWRpZW50SW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCQjY4MEJB
MjVCQTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjJBMDE1QTkwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM0OTA3RTQxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENH
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTNERTg3MDIzQTk2OTczMDA4RkM0N0IgLyogR3JhcGhp
Y3NDb250ZXh0R0wuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ0NTUsNiArMzQ0NjcsOCBAQAogCQkJ
CTQ5RTkxMUNCMEVGODZENDcwMDlEMENBRiAvKiBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNURGRThGNTcwRDE2NDc3QzAwNzZFOTM3IC8qIFNjaGVkdWxlZEFj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJEMEJGOTMxMkE0MkJGNTAwNzJGRDQzIC8qIFNj
b3BlZEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCQjY4MEI2MjVCQTFBRTIwMDJC
ODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk3QkI2ODBCMjI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BV
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQzAxQkUwQzI3NERBQzAwOUY0RUM5IC8q
IFNjcmVlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzFFMUQyMzYyMDNERjE1NDAwNTg0NjY1IC8q
IFNjcmVlblByb3BlcnRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NEQ4MkMxMTFEMzQ3NDgw
MDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAppbmRleCA1NzhlMDIxODBjNDZmM2RiYzRmZmZkMGFmMGMzNTNmMzk0ODIwZGJl
Li5lNzdkODBhODUyZmI1YWM1ZGQ3MWNlM2Y5N2NjZjY2NjQ2MWNlNTZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcApAQCAtNjQyLDcgKzY0Miw3IEBAIHByaXZhdGU6CiAKIHN0YXRpYyBib29sIGlzSGlnaFBl
cmZvcm1hbmNlQ29udGV4dChjb25zdCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+JiBjb250ZXh0
KQogewotICAgIHJldHVybiBjb250ZXh0LT5wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24o
KSA9PSBXZWJHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOworICAgIHJldHVybiBj
b250ZXh0LT5jb250ZXh0QXR0cmlidXRlcygpLnBvd2VyUHJlZmVyZW5jZSA9PSBXZWJHTFBvd2Vy
UHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKENh
bnZhc0Jhc2UmIGNhbnZhcywgV2ViR0xDb250ZXh0QXR0cmlidXRlcyYgYXR0cmlidXRlcywgV2Vi
R0xWZXJzaW9uIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggYjcxMGU3MTVhNjZkY2Fj
NTY3NDJkYjZiYmVhNzQxZDZmODYzNDJiMy4uNGE1NWY5ZGExYzViNTFmNmMyNGEwYjBlNWM1YzZm
YmIzZjU0OWM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtNjcsMTAgKzY3LDYgQEAKICNp
bmNsdWRlICJEYXRlVGltZUNob29zZXIuaCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoV0VCR0wpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
LmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwpAQCAtNTQ4LDEwICs1NDQsNiBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlk
Q2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3BhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJ
RCwgbm9taW5hbEZyYW1lSW50ZXJ2YWwpOwotCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
V0VCR0wpCi0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2Vy
KCkuc2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCwgdGhpcyk7Ci0jZW5kaWYKIH0KIAogYm9vbCBD
aHJvbWU6OnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4
IGEzMGNlZTVmYWI2NDc5MmFjYjhjNDVlMWVlNTBlMDBjZDIyYzJkZjQuLjJhZDE0N2Y2ZWFiOTRj
ZjNiZGYwM2JjNmZkYzIxMTdkNGFlMDA1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMTI2Myw4ICsxMjYzLDYg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wp
ID0gMDsKIAotICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93
ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgPSAwOwotCiAgICAgdmlydHVhbCBi
b29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCA9IDA7CiAKICAgICAvLyBTeW50aGVzaXplcyBh
biBPcGVuR0wgZXJyb3Igd2hpY2ggd2lsbCBiZSByZXR1cm5lZCBmcm9tIGEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAppbmRleCA1NTJkODUzOWI2OTUwMGNmMTE2OTY4
MGQ0YjVjNjI4NTg1OGI3NzM3Li5lNTBmOGZiNGM1YzM2NzA0NjFjODEzNDVlNDQzNzNjNmE0ZGEx
MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC00OSwx
MiArNDksNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRDb250
ZXh0VmlzaWJpbGl0eShib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLUdyYXBoaWNz
Q29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Ojpwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdAotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQogYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFdF
QkdMMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCmluZGV4IDI0NzFkNGUy
NWM5YWEyMDBlYzc0M2IxZmUwYzY0NjhiMGM5YTUwODMuLjI4OGMyZWE4YWQzOWU4OWI2OTY5ZmQw
YjIxNmI4YjY3YjBiZWRhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
aApAQCAtNjEsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IGZpbmFsOwogICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZp
bmFsOwogICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7Ci0gICAgR3Jh
cGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0
aW9uKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKICAgICBib29sIGxheWVy
Q29tcG9zaXRlZCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW0KaW5kZXggNjU5ZmZmZjEyODRjMDJhMjIzMjIxMjA2ZWI4ZjE2ZjJhODEyYjVh
Yy4uNDkwYTU5YjJjNGJiOTJmZGMyMjliMzhhYzU4NzFhNmVhOTg1YzNjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgpAQCAtMzIsOSArMzIsNyBAQAog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgogI2ltcG9ydCAiR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgogI2ltcG9ydCAi
TG9nZ2luZy5oIgotI2ltcG9ydCAiT3BlbkdMU29mdExpbmtDb2NvYS5oIgogI2ltcG9ydCAiUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkLmgiCiAjaW1w
b3J0ICJXZWJHTExheWVyLmgiCkBAIC00MiwxMSArNDAsNiBAQAogI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBM
QVRGT1JNKE1BQykKLSNpbXBvcnQgIlNjcmVlblByb3BlcnRpZXMuaCIKLSNpbXBvcnQgPE9wZW5H
TC9DR0xSZW5kZXJlcnMuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQ1YuaCIKICNlbmRpZgpAQCAt
MTUxLDE3ICsxNDQsMTcgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEcKICAgICBpZiAoIWNvbnRl
eHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRl
eHQuZ2V0KCksIGhvc3RXaW5kb3cpOworICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5nZXQoKSk7CiAKICAgICByZXR1
cm4gY29udGV4dDsKIH0KIAogUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFy
ZWRDb250ZXh0KQogewotICAgIGF1dG8gaG9zdFdpbmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhvc3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRD
b250ZXh0KTsKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywg
JnNoYXJlZENvbnRleHQsIG51bGxwdHIpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5wdHIoKSwgaG9zdFdp
bmRvdyk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTChzaGFyZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIG51bGxwdHIsICZzaGFy
ZWRDb250ZXh0LCBudWxscHRyKSk7CisKKyAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRleHQucHRyKCkpOwogCiAgICAgcmV0
dXJuIGNvbnRleHQ7CiB9CkBAIC0xNzEsNjcgKzE2NCwxMSBAQCBSZWY8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGNv
bnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0
cnMsIG51bGxwdHIsIG51bGxwdHIsIHN3YXBDaGFpbikpOwogfQogCi0jaWYgUExBVEZPUk0oTUFD
KSAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGQgYmUganVzdCBlbmFibGVkIC0gc2VlIDxy
ZGFyOi8vNTMwNjI3OTQ+LgotCi1zdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29u
dGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiwgSU9S
ZWdpc3RyeUdQVUlEIHByZWZlcnJlZEdQVUlEKQotewotICAgIC8vIFdoZW4gdGhlIFdlYlByb2Nl
c3MgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIFdpbmRvd1NlcnZlciwgdGhlcmUgaXMgbm8g
d2F5IGZvciBPcGVuR0wgdG8gdGVsbCB3aGljaCBHUFUgaXMgY29ubmVjdGVkIHRvIGEgZGlzcGxh
eS4KLSAgICAvLyBPbiAxMC4xMyssIGZpbmQgdGhlIHZpcnR1YWwgc2NyZWVuIHRoYXQgY29ycmVz
cG9uZHMgdG8gdGhlIHByZWZlcnJlZCBHUFUgYnkgaXRzIHJlZ2lzdHJ5SUQuCi0gICAgLy8gQ0dM
U2V0VmlydHVhbFNjcmVlbiBjYW4gdGhlbiBiZSB1c2VkIHRvIHRlbGwgT3BlbkdMIHdoaWNoIEdQ
VSBpdCBzaG91bGQgYmUgdXNpbmcuCi0KLSAgICBpZiAoIWNvbnRleHRPYmogfHwgIXByZWZlcnJl
ZEdQVUlEKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHTGludCB2aXJ0dWFsU2NyZWVuQ291bnQg
PSAwOwotICAgIENHTEVycm9yIGVycm9yID0gQ0dMRGVzY3JpYmVQaXhlbEZvcm1hdChwaXhlbEZv
cm1hdE9iaiwgMCwga0NHTFBGQVZpcnR1YWxTY3JlZW5Db3VudCwgJnZpcnR1YWxTY3JlZW5Db3Vu
dCk7Ci0gICAgQVNTRVJUKGVycm9yID09IGtDR0xOb0Vycm9yKTsKLQotICAgIEdMaW50IGZpcnN0
QWNjZWxlcmF0ZWRTY3JlZW4gPSAtMTsKLQotICAgIGZvciAoR0xpbnQgdmlydHVhbFNjcmVlbiA9
IDA7IHZpcnR1YWxTY3JlZW4gPCB2aXJ0dWFsU2NyZWVuQ291bnQ7ICsrdmlydHVhbFNjcmVlbikg
ewotICAgICAgICBHTGludCBkaXNwbGF5TWFzayA9IDA7Ci0gICAgICAgIGVycm9yID0gQ0dMRGVz
Y3JpYmVQaXhlbEZvcm1hdChwaXhlbEZvcm1hdE9iaiwgdmlydHVhbFNjcmVlbiwga0NHTFBGQURp
c3BsYXlNYXNrLCAmZGlzcGxheU1hc2spOwotICAgICAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5v
RXJyb3IpOwotCi0gICAgICAgIGF1dG8gZ3B1SUQgPSBncHVJREZvckRpc3BsYXlNYXNrKGRpc3Bs
YXlNYXNrKTsKLQotICAgICAgICBpZiAoZ3B1SUQgPT0gcHJlZmVycmVkR1BVSUQpIHsKLSAgICAg
ICAgICAgIGVycm9yID0gQ0dMU2V0VmlydHVhbFNjcmVlbihjb250ZXh0T2JqLCB2aXJ0dWFsU2Ny
ZWVuKTsKLSAgICAgICAgICAgIEFTU0VSVChlcnJvciA9PSBrQ0dMTm9FcnJvcik7Ci0gICAgICAg
ICAgICBMT0coV2ViR0wsICJDb250ZXh0ICglcCkgc2V0IHRvIEdQVSB3aXRoIElEOiAoJWxsZCku
IiwgY29udGV4dE9iaiwgZ3B1SUQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKGZpcnN0QWNjZWxlcmF0ZWRTY3JlZW4gPCAwKSB7Ci0gICAgICAgICAgICBH
TGludCBpc0FjY2VsZXJhdGVkID0gMDsKLSAgICAgICAgICAgIGVycm9yID0gQ0dMRGVzY3JpYmVQ
aXhlbEZvcm1hdChwaXhlbEZvcm1hdE9iaiwgdmlydHVhbFNjcmVlbiwga0NHTFBGQUFjY2VsZXJh
dGVkLCAmaXNBY2NlbGVyYXRlZCk7Ci0gICAgICAgICAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5v
RXJyb3IpOwotICAgICAgICAgICAgaWYgKGlzQWNjZWxlcmF0ZWQpCi0gICAgICAgICAgICAgICAg
Zmlyc3RBY2NlbGVyYXRlZFNjcmVlbiA9IHZpcnR1YWxTY3JlZW47Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICAvLyBObyByZWdpc3RyeUlEIG1hdGNoIGZvdW5kOyBzZXQgdG8gZmlyc3QgaGFyZHdh
cmUtYWNjZWxlcmF0ZWQgdmlydHVhbCBzY3JlZW4uCi0gICAgaWYgKGZpcnN0QWNjZWxlcmF0ZWRT
Y3JlZW4gPj0gMCkgewotICAgICAgICBlcnJvciA9IENHTFNldFZpcnR1YWxTY3JlZW4oY29udGV4
dE9iaiwgZmlyc3RBY2NlbGVyYXRlZFNjcmVlbik7Ci0gICAgICAgIEFTU0VSVChlcnJvciA9PSBr
Q0dMTm9FcnJvcik7Ci0gICAgICAgIExPRyhXZWJHTCwgIlJlZ2lzdHJ5SUQgKCVsbGQpIG5vdCBt
YXRjaGVkOyBDb250ZXh0ICglcCkgc2V0IHRvIHZpcnR1YWwgc2NyZWVuICglZCkuIiwgcHJlZmVy
cmVkR1BVSUQsIGNvbnRleHRPYmosIGZpcnN0QWNjZWxlcmF0ZWRTY3JlZW4pOwotICAgIH0KLX0K
LQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLQotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENv
bnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2FwQ2hhaW4pCitH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiwgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIHNoYXJlZENvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
KiBzd2FwQ2hhaW4pCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgRGVzdGluYXRpb246
Ok9mZnNjcmVlbiwgc2hhcmVkQ29udGV4dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0gYXR0cnMu
d2ViR0xWZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJHTDI7CiAK
LSNpZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCi0gICAgbV9wb3dlclByZWZlcmVuY2VV
c2VkRm9yQ3JlYXRpb24gPSAoaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpICYmIGF0dHJzLnBvd2Vy
UHJlZmVyZW5jZSA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZv
cm1hbmNlKSA/IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFu
Y2UgOiBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKLSNlbHNlCi0g
ICAgbV9wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24gPSBHcmFwaGljc0NvbnRleHRHTFBv
d2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKLSNlbmRpZgotCiAgICAgbV9kaXNwbGF5T2JqID0gSW5p
dGlhbGl6ZUVHTERpc3BsYXkoYXR0cnMpOwogICAgIGlmIChtX2Rpc3BsYXlPYmogPT0gRUdMX05P
X0RJU1BMQVkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5MCwxMSArMjI3LDE1IEBAIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgYXR0CiAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9DT05U
RVhUX0JJTkRfR0VORVJBVEVTX1JFU09VUkNFX0NIUk9NSVVNKTsKICAgICBlZ2xDb250ZXh0QXR0
cmlidXRlcy5hcHBlbmQoRUdMX0ZBTFNFKTsKIAotICAgIGlmIChzdHJzdHIoZGlzcGxheUV4dGVu
c2lvbnMsICJFR0xfQU5HTEVfcG93ZXJfcHJlZmVyZW5jZSIpKSB7Ci0gICAgICAgIGVnbENvbnRl
eHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfUE9XRVJfUFJFRkVSRU5DRV9BTkdMRSk7Ci0gICAgICAg
IC8vIEVHTF9MT1dfUE9XRVJfQU5HTEUgaXMgdGhlIGRlZmF1bHQuIENoYW5nZSB0bwotICAgICAg
ICAvLyBFR0xfSElHSF9QT1dFUl9BTkdMRSBpZiBkZXNpcmVkLgotICAgICAgICBlZ2xDb250ZXh0
QXR0cmlidXRlcy5hcHBlbmQoRUdMX0xPV19QT1dFUl9BTkdMRSk7CisgICAgYm9vbCBzdXBwb3J0
c1Bvd2VyUHJlZmVyZW5jZSA9IGZhbHNlOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBtX3N1cHBv
cnRzUG93ZXJQcmVmZXJlbmNlID0gc3Ryc3RyKGRpc3BsYXlFeHRlbnNpb25zLCAiRUdMX0FOR0xF
X3Bvd2VyX3ByZWZlcmVuY2UiKTsKKyAgICBzdXBwb3J0c1Bvd2VyUHJlZmVyZW5jZSA9IG1fc3Vw
cG9ydHNQb3dlclByZWZlcmVuY2U7CisjZW5kaWYKKyAgICBpZiAoIXN1cHBvcnRzUG93ZXJQcmVm
ZXJlbmNlKSB7CisgICAgICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAg
ICAgICBhdHRycy5wb3dlclByZWZlcmVuY2UgPSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVy
ZW5jZTo6RGVmYXVsdDsKKyAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOwogICAg
IH0KICAgICBlZ2xDb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX05PTkUpOwogCkBAIC0zMzIs
MjEgKzI3Myw2IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAgICAgIH0KICAgICAgICAg
ZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7CiAgICAgfQotI2lmIFBMQVRGT1JN
KE1BQykKLSAgICAvLyBGSVhNRTogSXQncyB1bmNsZWFyIGlmIE1BQ0NBVEFMWVNUIHNob3VsZCB0
YWtlIHRoZXNlIHN0ZXBzIGFzIHdlbGwsIGJ1dCB0aGF0Ci0gICAgLy8gd291bGQgcmVxdWlyZSB0
aGUgUGxhdGZvcm1TY3JlZW5NYWMgY29kZSB0byBiZSBleHBvc2VkIHRvIENhdGFseXN0IHRvby4K
LSAgICBFR0xEZXZpY2VFWFQgZGV2aWNlID0gbnVsbHB0cjsKLSAgICBFR0xfUXVlcnlEaXNwbGF5
QXR0cmliRVhUKG1fZGlzcGxheU9iaiwgRUdMX0RFVklDRV9FWFQsIHJlaW50ZXJwcmV0X2Nhc3Q8
RUdMQXR0cmliKj4oJmRldmljZSkpOwotICAgIENHTENvbnRleHRPYmogY2dsQ29udGV4dCA9IG51
bGxwdHI7Ci0gICAgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXQgPSBudWxscHRyOwotICAg
IEVHTF9RdWVyeURldmljZUF0dHJpYkVYVChkZXZpY2UsIEVHTF9DR0xfQ09OVEVYVF9BTkdMRSwg
cmVpbnRlcnByZXRfY2FzdDxFR0xBdHRyaWIqPigmY2dsQ29udGV4dCkpOwotICAgIEVHTF9RdWVy
eURldmljZUF0dHJpYkVYVChkZXZpY2UsIEVHTF9DR0xfUElYRUxfRk9STUFUX0FOR0xFLCByZWlu
dGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZwaXhlbEZvcm1hdCkpOwotICAgIGF1dG8gZ3B1SUQg
PSAoaG9zdFdpbmRvdyAmJiBob3N0V2luZG93LT5kaXNwbGF5SUQoKSkgPyBncHVJREZvckRpc3Bs
YXkoaG9zdFdpbmRvdy0+ZGlzcGxheUlEKCkpIDogcHJpbWFyeUdQVUlEKCk7Ci0gICAgc2V0R1BV
QnlSZWdpc3RyeUlEKGNnbENvbnRleHQsIHBpeGVsRm9ybWF0LCBncHVJRCk7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKLSNlbmRpZgotCiAgICAgdmFsaWRhdGVBdHRyaWJ1
dGVzKCk7CiAgICAgYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOyAvLyBUaGV5IG1heSBoYXZl
IGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKQEAgLTU2MSwzMCArNDg3LDI3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNoZWNrR1BVU3RhdHVzKCkKIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCBpc1Zpc2libGUpCiB7
Ci0gICAgaWYgKG1fcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uID09IEdyYXBoaWNzQ29u
dGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2UpIHsKLSAgICAgICAgaWYgKGlz
VmlzaWJsZSkKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcigpLmFkZENvbnRleHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UodGhpcyk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6
c2hhcmVkTWFuYWdlcigpLnJlbW92ZUNvbnRleHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UodGhp
cyk7Ci0gICAgfQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMo
KS5wb3dlclByZWZlcmVuY2UgIT0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6Okhp
Z2hQZXJmb3JtYW5jZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChpc1Zpc2libGUpCisgICAg
ICAgIG1faGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCA9IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQ
VVJlcXVlc3Q6OmFjcXVpcmUoKTsKKyAgICBlbHNlCisgICAgICAgIG1faGlnaFBlcmZvcm1hbmNl
R1BVUmVxdWVzdCA9IHsgfTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlzVmlzaWJsZSk7Cisj
ZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVwZGF0ZUNHTENvbnRleHQoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGlz
cGxheVdhc1JlY29uZmlndXJlZCgpCiB7Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
KyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCFtX3N1cHBvcnRzUG93ZXJQcmVmZXJlbmNlKQog
ICAgICAgICByZXR1cm47Ci0gICAgTE9HKFdlYkdMLCAiRGV0ZWN0ZWQgYSBtdXggc3dpdGNoIG9y
IGRpc3BsYXkgcmVjb25maWd1cmF0aW9uLiBDYWxsIENHTFVwZGF0ZUNvbnRleHQuICglcCkiLCB0
aGlzKTsKLQotICAgIEVHTERldmljZUVYVCBkZXZpY2UgPSBudWxscHRyOwotICAgIEVHTF9RdWVy
eURpc3BsYXlBdHRyaWJFWFQobV9kaXNwbGF5T2JqLCBFR0xfREVWSUNFX0VYVCwgcmVpbnRlcnBy
ZXRfY2FzdDxFR0xBdHRyaWIqPigmZGV2aWNlKSk7Ci0gICAgQ0dMQ29udGV4dE9iaiBjZ2xDb250
ZXh0ID0gbnVsbHB0cjsKLSAgICBFR0xfUXVlcnlEZXZpY2VBdHRyaWJFWFQoZGV2aWNlLCBFR0xf
Q0dMX0NPTlRFWFRfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJmNnbENvbnRl
eHQpKTsKLQotICAgIENHTFVwZGF0ZUNvbnRleHQoY2dsQ29udGV4dCk7Ci0gICAgbV9oYXNTd2l0
Y2hlZFRvSGlnaFBlcmZvcm1hbmNlR1BVID0gdHJ1ZTsKLX0KKyAgICBFR0xfSGFuZGxlR1BVU3dp
dGNoQU5HTEUobV9kaXNwbGF5T2JqKTsKKyAgICBkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZp
Y2F0aW9uKCk7CiAjZW5kaWYKK30KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKIHsKQEAgLTY1NCw1MCArNTc3LDggQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKQogewotICAg
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnVwZGF0ZUFs
bENvbnRleHRzKCk7Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG93T2Zm
bGluZVJlbmRlcmVycygpIGNvbnN0Ci17Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VC
UFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCi0gICAgLy8gV2hlbiBXaW5kb3dTZXJ2ZXIg
YWNjZXNzIGlzIGJsb2NrZWQgaW4gdGhlIFdlYlByb2Nlc3MsIHRoZXJlIGlzIG5vIHdheQotICAg
IC8vIGZvciBPcGVuR0wgdG8gZGVjaWRlIHdoaWNoIEdQVSBpcyBjb25uZWN0ZWQgdG8gYSBkaXNw
bGF5IChvbmxpbmUvb2ZmbGluZSkuCi0gICAgLy8gT3BlbkdMIHdpbGwgdGhlbiBjb25zaWRlciBh
bGwgR1BVcywgb3IgcmVuZGVyZXJzLCBhcyBvZmZsaW5lLCB3aGljaCBtZWFucwotICAgIC8vIGFs
bCBvZmZsaW5lIHJlbmRlcmVycyBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgd2hlbiBmaW5kaW5nIGEg
cGl4ZWwgZm9ybWF0LgotICAgIC8vIEluIFdlYktpdCBsZWdhY3ksIHRoZXJlIHdpbGwgc3RpbGwg
YmUgYSBXaW5kd1NlcnZlciBjb25uZWN0aW9uLCBhbmQKLSAgICAvLyBtX2Rpc3BsYXlNYXNrIHdp
bGwgbm90IGJlIHNldCBpbiB0aGlzIGNhc2UuCi0gICAgaWYgKHByaW1hcnlPcGVuR0xEaXNwbGF5
TWFzaygpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbGlmIFBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQotICAgIC8vIEZJWE1FOiA8cmRhcjovLzUzMDYyNzk0PiBXZSdyZSB2ZXJ5IGluY29uc2lzdGVu
dCBhYm91dCBXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORwotICAgIC8vIGFuZCBNQUMv
TUFDQ0FUQUxZU1QgYW5kIE9QRU5HTC9PUEVOR0xFUy4KLSAgICByZXR1cm4gdHJ1ZTsKLSNlbmRp
ZgotICAgICAgICAKLSNpZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCi0gICAgaWYgKGhh
c0xvd0FuZEhpZ2hQb3dlckdQVXMoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLSAg
ICAKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLSNpZiBQTEFURk9STShNQUMpCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpzY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlEKQotewotICAgIGlmICghbV9jb250ZXh0T2JqKQotICAgICAgICByZXR1cm47Ci0gICAg
aWYgKCFtX2hhc1N3aXRjaGVkVG9IaWdoUGVyZm9ybWFuY2VHUFUpIHsKLSAgICAgICAgRUdMRGV2
aWNlRVhUIGRldmljZSA9IG51bGxwdHI7Ci0gICAgICAgIEVHTF9RdWVyeURpc3BsYXlBdHRyaWJF
WFQobV9kaXNwbGF5T2JqLCBFR0xfREVWSUNFX0VYVCwgcmVpbnRlcnByZXRfY2FzdDxFR0xBdHRy
aWIqPigmZGV2aWNlKSk7Ci0gICAgICAgIENHTENvbnRleHRPYmogY2dsQ29udGV4dCA9IG51bGxw
dHI7Ci0gICAgICAgIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVsRm9ybWF0ID0gbnVsbHB0cjsKLSAg
ICAgICAgRUdMX1F1ZXJ5RGV2aWNlQXR0cmliRVhUKGRldmljZSwgRUdMX0NHTF9DT05URVhUX0FO
R0xFLCByZWludGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZjZ2xDb250ZXh0KSk7Ci0gICAgICAg
IEVHTF9RdWVyeURldmljZUF0dHJpYkVYVChkZXZpY2UsIEVHTF9DR0xfUElYRUxfRk9STUFUX0FO
R0xFLCByZWludGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZwaXhlbEZvcm1hdCkpOwotICAgICAg
ICBzZXRHUFVCeVJlZ2lzdHJ5SUQoY2dsQ29udGV4dCwgcGl4ZWxGb3JtYXQsIGdwdUlERm9yRGlz
cGxheShkaXNwbGF5SUQpKTsKLSAgICB9CisgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkuZGlzcGxheVdhc1JlY29uZmlndXJlZCgpOwogfQotI2VuZGlm
IC8vICFQTEFURk9STShNQUMpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBh
cmVGb3JEaXNwbGF5KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDaGVja3NNYWMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxYjg4ZDMz
NTg2MTMxOWQyZGE1MjI3YTU0NjAyMzgyZjJiNGFlYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDaGVja3NNYWMuY3BwCkBA
IC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzQ2hlY2tzTWFjLmgiCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpZiBIQVZF
KEFQUExFX0dSQVBISUNTX0NPTlRST0wpCisjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJP
TCkKKworZW51bSB7CisgICAga0FHQ09wZW4sCisgICAga0FHQ0Nsb3NlCit9OworCitzdGF0aWMg
aW9fY29ubmVjdF90IGF0dGFjaFRvQXBwbGVHcmFwaGljc0NvbnRyb2woKQoreworICAgIG1hY2hf
cG9ydF90IG1hc3RlclBvcnQgPSBNQUNIX1BPUlRfTlVMTDsKKyAgICAKKyAgICBpZiAoSU9NYXN0
ZXJQb3J0KE1BQ0hfUE9SVF9OVUxMLCAmbWFzdGVyUG9ydCkgIT0gS0VSTl9TVUNDRVNTKQorICAg
ICAgICByZXR1cm4gTUFDSF9QT1JUX05VTEw7CisgICAgCisgICAgQ0ZEaWN0aW9uYXJ5UmVmIGNs
YXNzVG9NYXRjaCA9IElPU2VydmljZU1hdGNoaW5nKCJBcHBsZUdyYXBoaWNzQ29udHJvbCIpOwor
ICAgIGlmICghY2xhc3NUb01hdGNoKQorICAgICAgICByZXR1cm4gTUFDSF9QT1JUX05VTEw7Cisg
ICAgCisgICAga2Vybl9yZXR1cm5fdCBrZXJuUmVzdWx0OworICAgIGlvX2l0ZXJhdG9yX3QgaXRl
cmF0b3I7CisgICAgaWYgKChrZXJuUmVzdWx0ID0gSU9TZXJ2aWNlR2V0TWF0Y2hpbmdTZXJ2aWNl
cyhtYXN0ZXJQb3J0LCBjbGFzc1RvTWF0Y2gsICZpdGVyYXRvcikpICE9IEtFUk5fU1VDQ0VTUykK
KyAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOworICAgIAorICAgIGlvX3NlcnZpY2VfdCBz
ZXJ2aWNlT2JqZWN0ID0gSU9JdGVyYXRvck5leHQoaXRlcmF0b3IpOworICAgIElPT2JqZWN0UmVs
ZWFzZShpdGVyYXRvcik7CisgICAgaWYgKCFzZXJ2aWNlT2JqZWN0KQorICAgICAgICByZXR1cm4g
TUFDSF9QT1JUX05VTEw7CisgICAgCisgICAgaW9fY29ubmVjdF90IGRhdGFQb3J0OworICAgIElP
T2JqZWN0UmV0YWluKHNlcnZpY2VPYmplY3QpOworICAgIGtlcm5SZXN1bHQgPSBJT1NlcnZpY2VP
cGVuKHNlcnZpY2VPYmplY3QsIG1hY2hfdGFza19zZWxmKCksIDAsICZkYXRhUG9ydCk7CisgICAg
SU9PYmplY3RSZWxlYXNlKHNlcnZpY2VPYmplY3QpOworICAgIAorICAgIHJldHVybiAoa2VyblJl
c3VsdCA9PSBLRVJOX1NVQ0NFU1MpID8gZGF0YVBvcnQgOiBNQUNIX1BPUlRfTlVMTDsKK30KKwor
c3RhdGljIGJvb2wgaGFzTXV4Q2FwYWJpbGl0eSgpCit7CisgICAgaW9fY29ubmVjdF90IGRhdGFQ
b3J0ID0gYXR0YWNoVG9BcHBsZUdyYXBoaWNzQ29udHJvbCgpOworICAgIAorICAgIGlmIChkYXRh
UG9ydCA9PSBNQUNIX1BPUlRfTlVMTCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IGJvb2wgcmVzdWx0OworICAgIGlmIChJT0Nvbm5lY3RDYWxsU2NhbGFyTWV0aG9kKGRhdGFQb3J0
LCBrQUdDT3BlbiwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgbnVsbHB0cikgPT0gS0VSTl9TVUNDRVNT
KSB7CisgICAgICAgIElPQ29ubmVjdENhbGxTY2FsYXJNZXRob2QoZGF0YVBvcnQsIGtBR0NDbG9z
ZSwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgIHJlc3VsdCA9IHRydWU7
CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgIAorICAgIElPU2Vydmlj
ZUNsb3NlKGRhdGFQb3J0KTsKKyAgICAKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIC8vIFRo
aXMgaXMgZGV0ZWN0aW5nIE1hYyBoYXJkd2FyZSB3aXRoIGFuIEludGVsIGc1NzUgR1BVLCB3aGlj
aAorICAgICAgICAvLyB3ZSBkb24ndCB3YW50IHRvIG1ha2UgYXZhaWxhYmxlIHRvIG11eGluZy4K
KyAgICAgICAgLy8gQmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSBBcHBsZSdzIE9wZW5HTCB0ZWFt
LCBzdWNoIGRldmljZXMKKyAgICAgICAgLy8gaGF2ZSBmb3VyIG9yIGZld2VyIHByb2Nlc3NvcnMu
CisgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMDA2MDM3OD4KKyAgICAgICAgaW50IG5hbWVz
WzJdID0geyBDVExfSFcsIEhXX05DUFUgfTsKKyAgICAgICAgaW50IGNwdUNvdW50OworICAgICAg
ICBzaXplX3QgY3B1Q291bnRMZW5ndGggPSBzaXplb2YoY3B1Q291bnQpOworICAgICAgICBzeXNj
dGwobmFtZXMsIDIsICZjcHVDb3VudCwgJmNwdUNvdW50TGVuZ3RoLCBudWxscHRyLCAwKTsKKyAg
ICAgICAgcmVzdWx0ID0gY3B1Q291bnQgPiA0OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCisjZW5kaWYgLy8gSEFWRShBUFBMRV9HUkFQSElDU19DT05UUk9MKQorCitib29s
IGhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKQoreworI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09O
VFJPTCkKKyAgICBzdGF0aWMgYm9vbCBjYW5NdXggPSBoYXNNdXhDYXBhYmlsaXR5KCk7CisgICAg
cmV0dXJuIGNhbk11eDsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK30K
KworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc0NoZWNrc01hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE0NTZkMGJhZmRmNjAyZTk2
MTk0NDRjYjUwZjk4NTdkMzZlNTRkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01hYy5oCkBAIC0wLDAgKzEsMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAg
IAorV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCk7CisKK30KKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1Njb3BlZEhp
Z2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9TY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMy
MWZkNzk0MDE5YTMxYTgwNTczNDRmMmRhMmRjNGJhYWUxMjhlNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TY29wZWRIaWdoUGVyZm9ybWFu
Y2VHUFVSZXF1ZXN0LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiR3JhcGhpY3NDaGVja3NNYWMuaCIKKyNpbmNsdWRlICJTd2l0Y2hpbmdH
UFVDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY29wZWRIaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICBTY29wZWRIaWdoUGVyZm9ybWFuY2VH
UFVSZXF1ZXN0KCkgPSBkZWZhdWx0OworICAgIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVl
c3QoU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCYmIG90aGVyKQorICAgICAgICA6IG1f
cmVxdWVzdGVkKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9yZXF1ZXN0ZWQsIGZhbHNlKSkKKyAgICB7
CisgICAgfQorICAgIH5TY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0KCkKKyAgICB7Cisg
ICAgICAgIGlmICghbV9yZXF1ZXN0ZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFN3
aXRjaGluZ0dQVUNsaWVudDo6c2luZ2xldG9uSWZFeGlzdHMoKS0+cmVsZWFzZUhpZ2hQZXJmb3Jt
YW5jZUdQVSgpOworICAgIH0KKyAgICBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0JiBv
cGVyYXRvcj0oU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCYmIG90aGVyKQorICAgIHsK
KyAgICAgICAgaWYgKG1fcmVxdWVzdGVkKQorICAgICAgICAgICAgU3dpdGNoaW5nR1BVQ2xpZW50
OjpzaW5nbGV0b25JZkV4aXN0cygpLT5yZWxlYXNlSGlnaFBlcmZvcm1hbmNlR1BVKCk7CisgICAg
ICAgIG1fcmVxdWVzdGVkID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3JlcXVlc3RlZCwgZmFsc2Up
OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIHN0YXRpYyBTY29wZWRIaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0IGFjcXVpcmUoKQorICAgIHsKKyAgICAgICAgaWYgKCFoYXNMb3dB
bmRIaWdoUG93ZXJHUFVzKCkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBhdXRv
IGNsaWVudCA9IFN3aXRjaGluZ0dQVUNsaWVudDo6c2luZ2xldG9uSWZFeGlzdHMoKTsKKyAgICAg
ICAgaWYgKCFjbGllbnQpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBjbGllbnQt
PnJlcXVlc3RIaWdoUGVyZm9ybWFuY2VHUFUoKTsKKyAgICAgICAgcmV0dXJuIHsgMCB9OworICAg
IH0KK3ByaXZhdGU6CisgICAgU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdChpbnQpCisg
ICAgICAgIDogbV9yZXF1ZXN0ZWQodHJ1ZSkKKyAgICB7CisgICAgfQorICAgIGJvb2wgbV9yZXF1
ZXN0ZWQgeyBmYWxzZSB9OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oCmluZGV4IDQ5OWEyODdh
NDVjOTY4ZDgzM2RlY2ZlNTMzMzExZDBjZWIzMTcwNzguLjQ1MjM2NzgxYjhlMTA4ZTI4NmZkZTIx
NGU4NTFhM2E4MmIzMDFjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Td2l0Y2hpbmdHUFVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvU3dpdGNoaW5nR1BVQ2xpZW50LmgKQEAgLTI5LDE2ICsyOSwxNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN3aXRjaGluZ0dQVUNsaWVudCB7CiBwdWJs
aWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN3aXRjaGluZ0dQVUNsaWVudCogc2luZ2xl
dG9uSWZFeGlzdHMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTaW5nbGV0
b24oU3dpdGNoaW5nR1BVQ2xpZW50Jik7CiAKICAgICB2aXJ0dWFsIH5Td2l0Y2hpbmdHUFVDbGll
bnQoKSA9IGRlZmF1bHQ7Ci0KK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN3
aXRjaGluZ0dQVUNsaWVudCogc2luZ2xldG9uSWZFeGlzdHMoKTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFz
ZUhpZ2hQZXJmb3JtYW5jZUdQVSgpID0gMDsKLSAgICAKLXByaXZhdGU6CisKICAgICBzdGF0aWMg
U3dpdGNoaW5nR1BVQ2xpZW50KiBtX3NpbmdsZXRvbjsKKyAgICBmcmllbmQgY2xhc3MgU2NvcGVk
SGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmgKaW5kZXggZjUyYmRkNjZmZDBjNjdiMTI1ZDhiNTExZTI5Y2Y5MmZjMmZjZjVl
MC4uZjZhMWEwMjQwOGJhZDg1ZDgyZjBjY2MzOTk4MDI4M2Q2Y2Q2NjkwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTY5LDYgKzY5LDEwIEBAIGNsYXNzIEdDR0xMYXll
cjsKIH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIlNjb3BlZEhpZ2hQ
ZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBFeHRlbnNpb25zR0w7CiAjaWYgVVNFKEFOR0xFKQpAQCAtMjU2LDcgKzI2MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOwogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogICAgIHZvaWQgY29t
cHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IGRhdGEpIGZpbmFsOwotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOyAKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKICAgICB2b2lkIGNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CiAgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwog
CkBAIC00NjEsMTQgKzQ2NSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmltaXRpdmVSZXN0YXJ0
SW5kZXgoR0NHTHVpbnQpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgUExBVEZP
Uk0oTUFDKQotICAgIHZvaWQgdXBkYXRlQ0dMQ29udGV4dCgpOworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICB2b2lkIGRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoKTsKICNlbmRpZgogCiAgICAgdm9pZCBz
ZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBmaW5hbDsKIAotICAgIEdyYXBoaWNzQ29udGV4dEdM
UG93ZXJQcmVmZXJlbmNlIHBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uOyB9Ci0KICAgICAv
LyBTdXBwb3J0IGZvciBidWZmZXIgY3JlYXRpb24gYW5kIGRlbGV0aW9uCiAgICAgUGxhdGZvcm1H
TE9iamVjdCBjcmVhdGVCdWZmZXIoKSBmaW5hbDsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0
ZUZyYW1lYnVmZmVyKCkgZmluYWw7CkBAIC00OTcsMTEgKzQ5OSw2IEBAIHB1YmxpYzoKIAogICAg
IHVuc2lnbmVkIHRleHR1cmVTZWVkKEdDR0x1aW50IHRleHR1cmUpIHsgcmV0dXJuIG1fc3RhdGUu
dGV4dHVyZVNlZWRDb3VudC5jb3VudCh0ZXh0dXJlKTsgfQogCi0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIHVzaW5nIFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7Ci0gICAgdm9pZCBzY3JlZW5E
aWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQpOwotI2VuZGlmCi0KICAgICB2b2lkIHByZXBhcmVG
b3JEaXNwbGF5KCkgZmluYWw7CiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJ
T04pCkBAIC01MjksNyArNTI2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4K
ICAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3Rl
bmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKLSAgICAKKwog
ICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMs
IEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZm
ZXJPYmplY3QpOwogCiAgICAgLy8gRGlkIHRoZSBtb3N0IHJlY2VudCBkcmF3aW5nIG9wZXJhdGlv
biBsZWF2ZSB0aGUgR1BVIGluIGFuIGFjY2VwdGFibGUgc3RhdGU/CkBAIC01NDcsNyArNTQ0LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGF0dGFjaERlcHRoQW5kU3RlbmNpbEJ1ZmZlcklmTmVlZGVk
KEdDR0x1aW50IGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWln
aHQpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBhbGxvd09mZmxpbmVSZW5kZXJl
cnMoKSBjb25zdDsKICAgICBib29sIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpOwogICAg
IGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKICAgICBib29sIGJp
bmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5n
LCB2b2lkKiBwYnVmZmVyKTsKQEAgLTU4Myw3ICs1NzksNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgLCBpc1ZhbGlkKGZhbHNlKQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAg
ICAgICAgU2hhZGVyU3ltYm9sTWFwJiBzeW1ib2xNYXAoZW51bSBBTkdMRVNoYWRlclN5bWJvbFR5
cGUgc3ltYm9sVHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHN5bWJvbFR5cGUg
PT0gU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSB8fCBzeW1ib2xUeXBlID09IFNIQURFUl9T
WU1CT0xfVFlQRV9VTklGT1JNIHx8IHN5bWJvbFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX1ZB
UllJTkcpOwpAQCAtNjQ4LDcgKzY0NCw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEV4dGVuc2lvbnNHTE9wZW5HTD4gbV9leHRlbnNpb25zOwogI2VuZGlmCiAKLSAgICBHcmFwaGlj
c0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZSBtX3Bvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biB7IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0IH07CiAgICAgVmVj
dG9yPFZlY3RvcjxmbG9hdD4+IG1fdmVydGV4QXJyYXk7CiAKICNpZiAhVVNFKEFOR0xFKQpAQCAt
NjgwLDcgKzY3NSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdXNpbmcgQm91bmRUZXh0dXJlTWFw
ID0gSGFzaE1hcDxHQ0dMZW51bSwKICAgICAgICAgICAgIHN0ZDo6cGFpcjxHQ0dMdWludCwgR0NH
TGVudW0+LAotICAgICAgICAgICAgV1RGOjpJbnRIYXNoPEdDR0xlbnVtPiwgCisgICAgICAgICAg
ICBXVEY6OkludEhhc2g8R0NHTGVudW0+LAogICAgICAgICAgICAgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4sCiAgICAgICAgICAgICBXVEY6OlBhaXJIYXNoVHJh
aXRzPFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+LCBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50Pj4KICAgICAgICAgPjsKQEAgLTc2
MSw4ICs3NTYsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBXaGVuIHByZXNlcnZlRHJhd2luZ0J1ZmZl
ciA9PSB0cnVlLCB0aGlzIGlzIGJsaXR0ZWQgdG8gZHVyaW5nIGRpc3BsYXkgcHJlcGFyZS4KICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBtX2Rpc3BsYXlCdWZmZXJCYWNraW5nOwogICAg
IHZvaWQqIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIgeyBudWxscHRyIH07Ci0KLSAgICBib29sIG1f
aGFzU3dpdGNoZWRUb0hpZ2hQZXJmb3JtYW5jZUdQVSB7IGZhbHNlIH07CisjZW5kaWYKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgYm9vbCBtX3N1cHBvcnRzUG93ZXJQcmVmZXJlbmNlIHsgZmFsc2Ug
fTsKKyAgICBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0IG1faGlnaFBlcmZvcm1hbmNl
R1BVUmVxdWVzdDsKICNlbmRpZgogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElP
TikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0R0xDVj4gbV9jdjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHAKaW5kZXggNDFhYjUw
Y2JlZjJlYTY0MjkzYmEwYzk5YmU4YjA1ZmM5NzA3N2RlNi4uMGJmN2UyMTBiN2YwZmI2YzdiZTcz
ZTU5MjJjNmFmNTFhOWI0NTZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlci5jcHAKQEAgLTMxLDkxICszMSw4IEBACiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAKLSNpZiBIQVZFKEFQUExF
X0dSQVBISUNTX0NPTlRST0wpCi0jaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgotI2VuZGlmCi0KLSNp
ZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAiU3dpdGNoaW5nR1BVQ2xpZW50LmgiCi0jZW5kaWYK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgSEFWRShBUFBMRV9HUkFQSElDU19DT05UUk9M
KQotCi1lbnVtIHsKLSAgICBrQUdDT3BlbiwKLSAgICBrQUdDQ2xvc2UKLX07Ci0KLXN0YXRpYyBp
b19jb25uZWN0X3QgYXR0YWNoVG9BcHBsZUdyYXBoaWNzQ29udHJvbCgpCi17Ci0gICAgbWFjaF9w
b3J0X3QgbWFzdGVyUG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwotICAgIAotICAgIGlmIChJT01hc3Rl
clBvcnQoTUFDSF9QT1JUX05VTEwsICZtYXN0ZXJQb3J0KSAhPSBLRVJOX1NVQ0NFU1MpCi0gICAg
ICAgIHJldHVybiBNQUNIX1BPUlRfTlVMTDsKLSAgICAKLSAgICBDRkRpY3Rpb25hcnlSZWYgY2xh
c3NUb01hdGNoID0gSU9TZXJ2aWNlTWF0Y2hpbmcoIkFwcGxlR3JhcGhpY3NDb250cm9sIik7Ci0g
ICAgaWYgKCFjbGFzc1RvTWF0Y2gpCi0gICAgICAgIHJldHVybiBNQUNIX1BPUlRfTlVMTDsKLSAg
ICAKLSAgICBrZXJuX3JldHVybl90IGtlcm5SZXN1bHQ7Ci0gICAgaW9faXRlcmF0b3JfdCBpdGVy
YXRvcjsKLSAgICBpZiAoKGtlcm5SZXN1bHQgPSBJT1NlcnZpY2VHZXRNYXRjaGluZ1NlcnZpY2Vz
KG1hc3RlclBvcnQsIGNsYXNzVG9NYXRjaCwgJml0ZXJhdG9yKSkgIT0gS0VSTl9TVUNDRVNTKQot
ICAgICAgICByZXR1cm4gTUFDSF9QT1JUX05VTEw7Ci0gICAgCi0gICAgaW9fc2VydmljZV90IHNl
cnZpY2VPYmplY3QgPSBJT0l0ZXJhdG9yTmV4dChpdGVyYXRvcik7Ci0gICAgSU9PYmplY3RSZWxl
YXNlKGl0ZXJhdG9yKTsKLSAgICBpZiAoIXNlcnZpY2VPYmplY3QpCi0gICAgICAgIHJldHVybiBN
QUNIX1BPUlRfTlVMTDsKLSAgICAKLSAgICBpb19jb25uZWN0X3QgZGF0YVBvcnQ7Ci0gICAgSU9P
YmplY3RSZXRhaW4oc2VydmljZU9iamVjdCk7Ci0gICAga2VyblJlc3VsdCA9IElPU2VydmljZU9w
ZW4oc2VydmljZU9iamVjdCwgbWFjaF90YXNrX3NlbGYoKSwgMCwgJmRhdGFQb3J0KTsKLSAgICBJ
T09iamVjdFJlbGVhc2Uoc2VydmljZU9iamVjdCk7Ci0gICAgCi0gICAgcmV0dXJuIChrZXJuUmVz
dWx0ID09IEtFUk5fU1VDQ0VTUykgPyBkYXRhUG9ydCA6IE1BQ0hfUE9SVF9OVUxMOwotfQotCi1z
dGF0aWMgYm9vbCBoYXNNdXhDYXBhYmlsaXR5KCkKLXsKLSAgICBpb19jb25uZWN0X3QgZGF0YVBv
cnQgPSBhdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKCk7Ci0gICAgCi0gICAgaWYgKGRhdGFQ
b3J0ID09IE1BQ0hfUE9SVF9OVUxMKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAg
Ym9vbCByZXN1bHQ7Ci0gICAgaWYgKElPQ29ubmVjdENhbGxTY2FsYXJNZXRob2QoZGF0YVBvcnQs
IGtBR0NPcGVuLCBudWxscHRyLCAwLCBudWxscHRyLCBudWxscHRyKSA9PSBLRVJOX1NVQ0NFU1Mp
IHsKLSAgICAgICAgSU9Db25uZWN0Q2FsbFNjYWxhck1ldGhvZChkYXRhUG9ydCwga0FHQ0Nsb3Nl
LCBudWxscHRyLCAwLCBudWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgcmVzdWx0ID0gdHJ1ZTsK
LSAgICB9IGVsc2UKLSAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgCi0gICAgSU9TZXJ2aWNl
Q2xvc2UoZGF0YVBvcnQpOwotICAgIAotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgLy8gVGhp
cyBpcyBkZXRlY3RpbmcgTWFjIGhhcmR3YXJlIHdpdGggYW4gSW50ZWwgZzU3NSBHUFUsIHdoaWNo
Ci0gICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gbWFrZSBhdmFpbGFibGUgdG8gbXV4aW5nLgot
ICAgICAgICAvLyBCYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIEFwcGxlJ3MgT3BlbkdMIHRlYW0s
IHN1Y2ggZGV2aWNlcwotICAgICAgICAvLyBoYXZlIGZvdXIgb3IgZmV3ZXIgcHJvY2Vzc29ycy4K
LSAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzMwMDYwMzc4PgotICAgICAgICBpbnQgbmFtZXNb
Ml0gPSB7IENUTF9IVywgSFdfTkNQVSB9OwotICAgICAgICBpbnQgY3B1Q291bnQ7Ci0gICAgICAg
IHNpemVfdCBjcHVDb3VudExlbmd0aCA9IHNpemVvZihjcHVDb3VudCk7Ci0gICAgICAgIHN5c2N0
bChuYW1lcywgMiwgJmNwdUNvdW50LCAmY3B1Q291bnRMZW5ndGgsIG51bGxwdHIsIDApOwotICAg
ICAgICByZXN1bHQgPSBjcHVDb3VudCA+IDQ7Ci0gICAgfQotICAgIAotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLWJvb2wgaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpCi17Ci0gICAgc3RhdGljIGJv
b2wgY2FuTXV4ID0gaGFzTXV4Q2FwYWJpbGl0eSgpOwotICAgIHJldHVybiBjYW5NdXg7Ci19Ci0j
ZW5kaWYgLy8gSEFWRShBUFBMRV9HUkFQSElDU19DT05UUk9MKQotCiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTE1hbmFnZXImIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlcj4gc19tYW5hZ2VyOwpAQCAtMTI3LDMzICs0NCwxNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlcjo6ZGlzcGxheVdhc1JlY29uZmlndXJlZChDR0RpcmVjdERp
c3BsYXlJRCwgQwogewogICAgIExPRyhXZWJHTCwgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFu
YWdlcjo6ZGlzcGxheVdhc1JlY29uZmlndXJlZCIpOwogICAgIGlmIChmbGFncyAmIGtDR0Rpc3Bs
YXlTZXRNb2RlRmxhZykKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpz
aGFyZWRNYW5hZ2VyKCkudXBkYXRlQWxsQ29udGV4dHMoKTsKLX0KLSNlbmRpZgotCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6dXBkYXRlQWxsQ29udGV4dHMoKQotewotI2lm
IFBMQVRGT1JNKE1BQykKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHQgOiBtX2NvbnRleHRz
KSB7Ci0gICAgICAgIGNvbnRleHQtPnVwZGF0ZUNHTENvbnRleHQoKTsKLSAgICAgICAgY29udGV4
dC0+ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpOwotICAgIH0KLSNlbmRpZgor
ICAgICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5k
aXNwbGF5V2FzUmVjb25maWd1cmVkKCk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlz
cGxheUlEIGRpc3BsYXlJRCwgY29uc3QgSG9zdFdpbmRvdyogd2luZG93KQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoKQogewotICAg
IGZvciAoY29uc3QgYXV0byYgY29udGV4dEFuZFdpbmRvdyA6IG1fY29udGV4dFdpbmRvd01hcCkg
ewotICAgICAgICBpZiAoY29udGV4dEFuZFdpbmRvdy52YWx1ZSA9PSB3aW5kb3cpIHsKLSAgICAg
ICAgICAgIGNvbnRleHRBbmRXaW5kb3cua2V5LT5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlEKTsK
LSAgICAgICAgICAgIExPRyhXZWJHTCwgIkNoYW5naW5nIGNvbnRleHQgKCVwKSB0byBkaXNwbGF5
ICglZCkuIiwgY29udGV4dEFuZFdpbmRvdy5rZXksIGRpc3BsYXlJRCk7Ci0gICAgICAgIH0KLSAg
ICB9CisgICAgZm9yIChjb25zdCBhdXRvJiBjb250ZXh0IDogbV9jb250ZXh0cykKKyAgICAgICAg
Y29udGV4dC0+ZGlzcGxheVdhc1JlY29uZmlndXJlZCgpOwogfQogI2VuZGlmCiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjphZGRDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKiBjb250ZXh0LCBIb3N0V2luZG93KiB3aW5kb3cpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29u
dGV4dCkKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtMTY2
LDcgKzY3LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmFkZENvbnRl
eHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQKIAogICAgIEFTU0VSVCghbV9jb250
ZXh0cy5jb250YWlucyhjb250ZXh0KSk7CiAgICAgbV9jb250ZXh0cy5hcHBlbmQoY29udGV4dCk7
Ci0gICAgbV9jb250ZXh0V2luZG93TWFwLnNldChjb250ZXh0LCB3aW5kb3cpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6cmVtb3ZlQ29udGV4dChHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCogY29udGV4dCkKQEAgLTE3NCw5NyArNzQsMTIgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnJlbW92ZUNvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIGNvbnQKICAgICBpZiAoIW1fY29udGV4dHMuY29udGFpbnMoY29udGV4dCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBtX2NvbnRleHRzLnJlbW92ZUZpcnN0KGNvbnRleHQpOwotICAgIG1f
Y29udGV4dFdpbmRvd01hcC5yZW1vdmUoY29udGV4dCk7Ci0gICAgcmVtb3ZlQ29udGV4dFJlcXVp
cmluZ0hpZ2hQZXJmb3JtYW5jZShjb250ZXh0KTsKLSAgICAKICNpZiBQTEFURk9STShNQUMpICYm
ICFFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCiAgICAgaWYgKCFtX2Nv
bnRleHRzLnNpemUoKSkKICAgICAgICAgQ0dEaXNwbGF5UmVtb3ZlUmVjb25maWd1cmF0aW9uQ2Fs
bGJhY2soZGlzcGxheVdhc1JlY29uZmlndXJlZCwgbnVsbHB0cik7CiAjZW5kaWYKIH0KIAotSG9z
dFdpbmRvdyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpob3N0V2luZG93Rm9yQ29u
dGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCkgY29uc3QKLXsKLSAgICBBU1NF
UlQobV9jb250ZXh0V2luZG93TWFwLmNvbnRhaW5zKGNvbnRleHQpKTsKLSAgICByZXR1cm4gbV9j
b250ZXh0V2luZG93TWFwLmdldChjb250ZXh0KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTE1hbmFnZXI6OmFkZENvbnRleHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotICAg
IGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIEFTU0VSVChtX2NvbnRl
eHRzLmNvbnRhaW5zKGNvbnRleHQpKTsKLSAgICBBU1NFUlQoIW1fY29udGV4dHNSZXF1aXJpbmdI
aWdoUGVyZm9ybWFuY2UuY29udGFpbnMoY29udGV4dCkpOwotICAgIAotICAgIExPRyhXZWJHTCwg
IlRoaXMgY29udGV4dCAoJXApIHJlcXVpcmVzIHRoZSBoaWdoLXBlcmZvcm1hbmNlIEdQVS4iLCBj
b250ZXh0KTsKLSAgICBtX2NvbnRleHRzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLmFkZChjb250
ZXh0KTsKLSAgICAKLSAgICB1cGRhdGVIaWdoUGVyZm9ybWFuY2VTdGF0ZSgpOwotfQotCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6cmVtb3ZlQ29udGV4dFJlcXVpcmluZ0hp
Z2hQZXJmb3JtYW5jZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCkKLXsKLSAgICBp
ZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9jb250ZXh0c1JlcXVp
cmluZ0hpZ2hQZXJmb3JtYW5jZS5jb250YWlucyhjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIExPRyhXZWJHTCwgIlRoaXMgY29udGV4dCAoJXApIG5vIGxvbmdlciByZXF1aXJl
cyB0aGUgaGlnaC1wZXJmb3JtYW5jZSBHUFUuIiwgY29udGV4dCk7Ci0gICAgbV9jb250ZXh0c1Jl
cXVpcmluZ0hpZ2hQZXJmb3JtYW5jZS5yZW1vdmUoY29udGV4dCk7Ci0gICAgCi0gICAgdXBkYXRl
SGlnaFBlcmZvcm1hbmNlU3RhdGUoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXI6OnVwZGF0ZUhpZ2hQZXJmb3JtYW5jZVN0YXRlKCkKLXsKLSNpZiBQTEFURk9STShN
QUMpCi0gICAgaWYgKCFoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkpCi0gICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBpZiAobV9jb250ZXh0c1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZS5zaXplKCkp
IHsKLSAgICAgICAgCi0gICAgICAgIGlmIChtX2Rpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1l
ci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR0wsICJDYW5jZWwgcGVuZGluZyB0
aW1lciBmb3IgdHVybmluZyBvZmYgaGlnaC1wZXJmb3JtYW5jZSBHUFUuIik7Ci0gICAgICAgICAg
ICBtX2Rpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lci5zdG9wKCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoIW1fcmVxdWVzdGluZ0hpZ2hQZXJmb3JtYW5jZSkgewotICAgICAgICAgICAg
TE9HKFdlYkdMLCAiUmVxdWVzdCB0aGUgaGlnaC1wZXJmb3JtYW5jZSBHUFUuIik7Ci0gICAgICAg
ICAgICBtX3JlcXVlc3RpbmdIaWdoUGVyZm9ybWFuY2UgPSB0cnVlOwotICAgICAgICAgICAgaWYg
KGF1dG8qIHNpbmdsZXRvbiA9IFN3aXRjaGluZ0dQVUNsaWVudDo6c2luZ2xldG9uSWZFeGlzdHMo
KSkKLSAgICAgICAgICAgICAgICBzaW5nbGV0b24tPnJlcXVlc3RIaWdoUGVyZm9ybWFuY2VHUFUo
KTsKLSAgICAgICAgfQotCi0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gRG9uJ3QgaW1tZWRpYXRl
bHkgdHVybiBvZmYgdGhlIGhpZ2gtcGVyZm9ybWFuY2UgR1BVLiBUaGUgdXNlciBtaWdodCBiZQot
ICAgICAgICAvLyBzd2FwcGluZyBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIHRhYnMgb3Igd2luZG93
cywgYW5kIHdlIGRvbid0IHdhbnQgdG8gY2F1c2UKLSAgICAgICAgLy8gY2h1cm4gaWYgd2UgY2Fu
IGF2b2lkIGl0LgotICAgICAgICBpZiAoIW1fZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVy
LmlzQWN0aXZlKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHTCwgIlNldCBhIHRpbWVyIHRvIHJl
bGVhc2UgdGhlIGhpZ2gtcGVyZm9ybWFuY2UgR1BVLiIpOwotICAgICAgICAgICAgLy8gRklYTUU6
IEV4cG9zZSB0aGlzIHZhbHVlIGFzIGEgU2V0dGluZywgd2hpY2ggd291bGQgcmVxdWlyZSB0aGlz
IGNsYXNzCi0gICAgICAgICAgICAvLyB0byByZWZlcmVuY2UgYSBmcmFtZSwgcGFnZSBvciBkb2N1
bWVudC4KLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTZWNvbmRzIHRpbWVUb0tlZXBIaWdoUGVy
Zm9ybWFuY2VHUFVBbGl2ZSB7IDEwX3MgfTsKLSAgICAgICAgICAgIG1fZGlzYWJsZUhpZ2hQZXJm
b3JtYW5jZUdQVVRpbWVyLnN0YXJ0T25lU2hvdCh0aW1lVG9LZWVwSGlnaFBlcmZvcm1hbmNlR1BV
QWxpdmUpOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi19Ci0KLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNhYmxlSGlnaFBlcmZvcm1hbmNlR1BVVGltZXJGaXJlZCgp
Ci17Ci0gICAgaWYgKG1fY29udGV4dHNSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2Uuc2l6ZSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX3JlcXVlc3RpbmdIaWdoUGVyZm9ybWFuY2UgPSBmYWxz
ZTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKGF1dG8qIHNpbmdsZXRvbiA9IFN3aXRjaGlu
Z0dQVUNsaWVudDo6c2luZ2xldG9uSWZFeGlzdHMoKSkKLSAgICAgICAgc2luZ2xldG9uLT5yZWxl
YXNlSGlnaFBlcmZvcm1hbmNlR1BVKCk7Ci0jZW5kaWYKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXI6OnJlY3ljbGVDb250ZXh0SWZOZWNlc3NhcnkoKQogewogICAgIGlm
IChoYXNUb29NYW55Q29udGV4dHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlci5oCmluZGV4IDNhZjhhMDUyYWU4ZTJhMTVkNWMwNTE3ODRmYjA4NTQ1ZWU5
YTFkNjQuLmMwMTA3NmNkYWFiMjEwM2U4ZWIxYzM4NmJlNzYwMTAwOWY3NzFhZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgKQEAgLTI1LDggKzI1LDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykK
QEAgLTM4LDUyICszNiwyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjb25zdCB1bnNpZ25lZCBN
YXhDb250ZXh0cyA9IDE2OwogCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKLWNsYXNz
IEhvc3RXaW5kb3c7Ci0KLXVzaW5nIFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7Ci0KLSNp
ZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCi1XRUJDT1JFX0VYUE9SVCBib29sIGhhc0xv
d0FuZEhpZ2hQb3dlckdQVXMoKTsKLSNlbmRpZgogCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTE1hbmFnZXIgewogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxHcmFwaGljc0NvbnRleHRH
TE9wZW5HTE1hbmFnZXI+OwogcHVibGljOgogICAgIHN0YXRpYyBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTE1hbmFnZXImIHNoYXJlZE1hbmFnZXIoKTsKICAgICAKLSAgICB2b2lkIGFkZENvbnRleHQo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBIb3N0V2luZG93Kik7CisgICAgdm9pZCBhZGRDb250
ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7CiAgICAgdm9pZCByZW1vdmVDb250ZXh0KEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKik7Ci0KLSAgICBIb3N0V2luZG93KiBob3N0V2luZG93Rm9y
Q29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopIGNvbnN0OwotICAgIAotICAgIHZvaWQg
YWRkQ29udGV4dFJlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZShHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCopOwotICAgIHZvaWQgcmVtb3ZlQ29udGV4dFJlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZShHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCopOwogICAgIAogICAgIHZvaWQgcmVjeWNsZUNvbnRleHRJZk5l
Y2Vzc2FyeSgpOwogICAgIGJvb2wgaGFzVG9vTWFueUNvbnRleHRzKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZXh0cy5zaXplKCkgPj0gTWF4Q29udGV4dHM7IH0KICAgICAKLSAgICB2b2lkIHVwZGF0
ZUFsbENvbnRleHRzKCk7Ci0KICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBzY3JlZW5EaWRD
aGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQsIGNvbnN0IEhvc3RXaW5kb3cqKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwbGF5V2FzUmVjb25maWd1cmVkKENHRGlyZWN0RGlzcGxh
eUlELCBDR0Rpc3BsYXlDaGFuZ2VTdW1tYXJ5RmxhZ3MsIHZvaWQqKTsKKyAgICB2b2lkIGRpc3Bs
YXlXYXNSZWNvbmZpZ3VyZWQoKTsKICNlbmRpZgogICAgIAogcHJpdmF0ZToKLSAgICBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIoKQotICAgICAgICA6IG1fZGlzYWJsZUhpZ2hQZXJmb3Jt
YW5jZUdQVVRpbWVyKCp0aGlzLCAmR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNh
YmxlSGlnaFBlcmZvcm1hbmNlR1BVVGltZXJGaXJlZCkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9p
ZCB1cGRhdGVIaWdoUGVyZm9ybWFuY2VTdGF0ZSgpOwotICAgIHZvaWQgZGlzYWJsZUhpZ2hQZXJm
b3JtYW5jZUdQVVRpbWVyRmlyZWQoKTsKKyAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXIoKSA9IGRlZmF1bHQ7CiAKICAgICBWZWN0b3I8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPiBt
X2NvbnRleHRzOwotICAgIEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBIb3N0V2lu
ZG93Kj4gbV9jb250ZXh0V2luZG93TWFwOwotICAgIEhhc2hTZXQ8R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqPiBtX2NvbnRleHRzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlOwotICAgIAotICAgIFRp
bWVyIG1fZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVyOwotICAgIGJvb2wgbV9yZXF1ZXN0
aW5nSGlnaFBlcmZvcm1hbmNlIHsgZmFsc2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCBmZTcyMGU5MzVlZTlmMzJhY2M3ZDhkOGVjYjVmNTMxYWNiMWQ5
ZjIxLi4xZjk1MWI3ZTk0ZWY3YWU0NDA4ZjQ1YjFiYjE1NmEwZDM1N2E0YWIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zMjAsNyArMzIwLDcgQEAKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
ci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ2hlY2tzTWFjLmgiCiAjaW5jbHVkZSAiTlNTY3JvbGxl
ckltcERldGFpbHMuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZU1hYy5oIgogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BV
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQZXJmb3JtYW5jZUdQ
VU1hbmFnZXIuaAppbmRleCA1NTU2Y2JkNDRmMGY1NDdjZDY1ZDNkZTQxZTUyMDY1Zjg5M2QzYWFl
Li5hYzYyMTkzYWNmZDVjMmI2NDJhNTc1YWYzNDdmNWU1MmUwMmZlNjVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2Vy
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBQTEFURk9STShNQUMpCiAKICNpbmNsdWRlIDxPcGVu
R0wvQ0dMVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNDQsMTMg
KzQ1LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVByb2Nlc3NSZXF1aXJpbmdIaWdoUGVy
Zm9ybWFuY2UoV2ViUHJvY2Vzc1Byb3h5Kik7CiAKIHByaXZhdGU6Ci0gICAgSGlnaFBlcmZvcm1h
bmNlR1BVTWFuYWdlcigpID0gZGVmYXVsdDsKKyAgICBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2Vy
KCk7CiAgICAgfkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIoKTsKLQogICAgIHZvaWQgdXBkYXRl
U3RhdGUoKTsKIAogICAgIEhhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Kj4gbV9wcm9jZXNzZXNSZXF1
aXJpbmdIaWdoUGVyZm9ybWFuY2U7CiAgICAgQ0dMUGl4ZWxGb3JtYXRPYmogbV9waXhlbEZvcm1h
dE9iaiB7IG51bGxwdHIgfTsKKyAgICBXZWJDb3JlOjpUaW1lciBtX3VwZGF0ZVN0YXRlVGltZXI7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGlnaFBl
cmZvcm1hbmNlR1BVTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdo
UGVyZm9ybWFuY2VHUFVNYW5hZ2VyLm1tCmluZGV4IGE5NmZjM2QxMTM3OThlNzlhZmMwZmRiNjI2
NWZkZGFmZDAzZDBhZTAuLjU5ZGZmOGIyM2M4MGMwMjY1YmVlNTE5Zjg0NjA3Mzg4NGY2MTVjOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VH
UFVNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9y
bWFuY2VHUFVNYW5hZ2VyLm1tCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oTUFDKQog
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NoZWNrc01hYy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvT3BlbkdMU29mdExpbmtDb2NvYS5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTQ0LDYgKzQ0LDEzIEBAIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXImIEhp
Z2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnNpbmdsZXRvbigpCiAgICAgcmV0dXJuIHNoYXJlZE1h
bmFnZXI7CiB9CiAKK0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OkhpZ2hQZXJmb3JtYW5jZUdQ
VU1hbmFnZXIoKQorICAgIDogbV91cGRhdGVTdGF0ZVRpbWVyKCp0aGlzLCAmSGlnaFBlcmZvcm1h
bmNlR1BVTWFuYWdlcjo6dXBkYXRlU3RhdGUpCit7Cit9CisKK0hpZ2hQZXJmb3JtYW5jZUdQVU1h
bmFnZXI6On5IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyKCkgPSBkZWZhdWx0OworCiB2b2lkIEhp
Z2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OmFkZFByb2Nlc3NSZXF1aXJpbmdIaWdoUGVyZm9ybWFu
Y2UoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogewogICAgIGlmICghV2ViQ29yZTo6aGFzTG93
QW5kSGlnaFBvd2VyR1BVcygpKQpAQCAtNjUsNyArNzIsOCBAQCB2b2lkIEhpZ2hQZXJmb3JtYW5j
ZUdQVU1hbmFnZXI6OnJlbW92ZVByb2Nlc3NSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoV2ViUHJv
Y2VzcwogCiAgICAgaWYgKG1fcHJvY2Vzc2VzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLnJlbW92
ZShwcm9jZXNzKSkgewogICAgICAgICBMT0coV2ViR0wsICJIaWdoUGVyZm9ybWFuY2VHUFVNYW5h
Z2VyOjpyZW1vdmVQcm9jZXNzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKCkgLSByZW1vdmluZyBw
cm9jZXNzICVwIiwgcHJvY2Vzcyk7Ci0gICAgICAgIHVwZGF0ZVN0YXRlKCk7CisgICAgICAgIHN0
YXRpYyBjb25zdCBTZWNvbmRzIHRpbWVUb0tlZXBIaWdoUGVyZm9ybWFuY2VHUFVBbGl2ZSB7IDEw
X3MgfTsKKyAgICAgICAgbV91cGRhdGVTdGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCh0aW1lVG9LZWVw
SGlnaFBlcmZvcm1hbmNlR1BVQWxpdmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03
NCw2ICs4Miw4IEBAIHZvaWQgSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6cmVtb3ZlUHJvY2Vz
c1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZShXZWJQcm9jZXNzCiAKIHZvaWQgSGlnaFBlcmZvcm1h
bmNlR1BVTWFuYWdlcjo6dXBkYXRlU3RhdGUoKQogeworICAgIGlmIChtX3VwZGF0ZVN0YXRlVGlt
ZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV91cGRhdGVTdGF0ZVRpbWVyLnN0b3AoKTsKICAgICBp
ZiAobV9wcm9jZXNzZXNSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2Uuc2l6ZSgpKSB7CiAgICAgICAg
IGlmICghbV9waXhlbEZvcm1hdE9iaikgewogICAgICAgICAgICAgTE9HKFdlYkdMLCAiSGlnaFBl
cmZvcm1hbmNlR1BVTWFuYWdlciAtIHR1cm5pbmcgb24gaGlnaC1wZXJmb3JtYW5jZSBHUFUuIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAKaW5kZXggNDRjNmI0MzJl
N2Q1YzVkYWE3OGQ4ZDAyYWI3N2M3OTBjMTRhOTM0YS4uYzFjMmEyZWJkYzc3ODc3ZTE3ZjdjMTky
NTMzNTkzODVkYWY3ODQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50
LmNwcApAQCAtNDMsMTIgKzQzLDE5IEBAIFdlYlN3aXRjaGluZ0dQVUNsaWVudCYgV2ViU3dpdGNo
aW5nR1BVQ2xpZW50OjpzaW5nbGV0b24oKQogCiB2b2lkIFdlYlN3aXRjaGluZ0dQVUNsaWVudDo6
cmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSgpCiB7CisgICAgbV9yZXF1ZXN0cysrOworICAgIGlm
IChtX3JlcXVlc3RzICE9IDEpCisgICAgICAgIHJldHVybjsKICAgICBMT0coV2ViR0wsICJXZWJT
d2l0Y2hpbmdHUFVDbGllbnQ6OnJlcXVlc3RIaWdoUGVyZm9ybWFuY2VHUFUoKSBmcm9tIFdlYlBy
b2Nlc3MiKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlJlcXVlc3RIaWdoUGVyZm9y
bWFuY2VHUFUoKSwgMCk7CiB9CiAKIHZvaWQgV2ViU3dpdGNoaW5nR1BVQ2xpZW50OjpyZWxlYXNl
SGlnaFBlcmZvcm1hbmNlR1BVKCkKIHsKKyAgICBBU1NFUlQobV9yZXF1ZXN0cyk7CisgICAgbV9y
ZXF1ZXN0cy0tOworICAgIGlmIChtX3JlcXVlc3RzKQorICAgICAgICByZXR1cm47CiAgICAgTE9H
KFdlYkdMLCAiV2ViU3dpdGNoaW5nR1BVQ2xpZW50OjpyZWxlYXNlSGlnaFBlcmZvcm1hbmNlR1BV
KCkgZnJvbSBXZWJQcm9jZXNzIik7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpSZWxl
YXNlSGlnaFBlcmZvcm1hbmNlR1BVKCksIDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5n
R1BVQ2xpZW50LmgKaW5kZXggMjBlYjJlZTI1NzFmZWJhMmRhNDg0ZjIxODc3NzhiMTI5NDBhZTUz
My4uYmI4MWQ4YTYwOGFiMWZkYTQ1ZjA3ZWE3YjM4YTYzNDUxOWU3ODQyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdH
UFVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5oCkBAIC0zMiw5ICszMiwxMCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIGNsYXNzIFdlYlN3aXRjaGluZ0dQVUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpT
d2l0Y2hpbmdHUFVDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBXZWJTd2l0Y2hpbmdHUFVD
bGllbnQmIHNpbmdsZXRvbigpOwotICAgIAorcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RIaWdo
UGVyZm9ybWFuY2VHUFUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbGVhc2VIaWdoUGVyZm9ybWFu
Y2VHUFUoKSBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBtX3JlcXVlc3RzIHsgMCB9OwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmZvLnBsaXN0IGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9JbmZvLnBsaXN0CmluZGV4IGQzMzY1M2ZkMTAwYjg4M2RjYTI1YmQ0ZWM2ZjFk
YjgxZjg3MThjNWEuLjc0NzQxZTI5NjVhYjY1ZDlhMTBiYjgzZWJkNTc2NTZiYjVhYjc2OTggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5mby5wbGlzdAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0luZm8ucGxpc3QKQEAgLTMxLDUgKzMxLDcgQEAKIAk8c3RyaW5nPiR7UFJPRFVD
VF9OQU1FfTwvc3RyaW5nPgogCTxrZXk+Q0ZCdW5kbGVJZGVudGlmaWVyPC9rZXk+CiAJPHN0cmlu
Zz4ke1BST0RVQ1RfQlVORExFX0lERU5USUZJRVJ9PC9zdHJpbmc+CisJPGtleT5OU1N1cHBvcnRz
QXV0b21hdGljR3JhcGhpY3NTd2l0Y2hpbmc8L2tleT4KKwk8dHJ1ZS8+CiA8L2RpY3Q+CiA8L3Bs
aXN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVy
QXBwL1dlYktpdFRlc3RSdW5uZXJBcHAtSW5mby5wbGlzdCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvV2ViS2l0VGVzdFJ1bm5lckFwcC9XZWJLaXRUZXN0UnVubmVyQXBwLUluZm8ucGxpc3QKaW5k
ZXggYzhiMWJiYTVkOGFlMmQ1NWI4ZjIzN2RkOWFkZWM1ZmY4MWYwNzNkMS4uOTkwMDljMjVlNmI4
MmNmMDQ5MGZiMDFiNDNkYjE2MzQ0ZDYxOTJkMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyQXBwL1dlYktpdFRlc3RSdW5uZXJBcHAtSW5mby5wbGlz
dAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXJBcHAvV2ViS2l0
VGVzdFJ1bm5lckFwcC1JbmZvLnBsaXN0CkBAIC00OCw1ICs0OCw3IEBACiAJCTxzdHJpbmc+VUlJ
bnRlcmZhY2VPcmllbnRhdGlvbkxhbmRzY2FwZUxlZnQ8L3N0cmluZz4KIAkJPHN0cmluZz5VSUlu
dGVyZmFjZU9yaWVudGF0aW9uTGFuZHNjYXBlUmlnaHQ8L3N0cmluZz4KIAk8L2FycmF5PgorCTxr
ZXk+TlNTdXBwb3J0c0F1dG9tYXRpY0dyYXBoaWNzU3dpdGNoaW5nPC9rZXk+CisJPHRydWUvPgog
PC9kaWN0PgogPC9wbGlzdD4K
</data>
<flag name="commit-queue"
          id="436005"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418130</attachid>
            <date>2021-01-22 03:05:59 -0800</date>
            <delta_ts>2021-01-22 04:52:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220843-20210122130557.patch</filename>
            <type>text/plain</type>
            <size>59004</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTBlMTg1NzBmN2QyNTI1
MWZiMTY2MzllOGI1YTdjM2Q1OTU4MDRmMS4uMzc5YjNmMDQwODZjZDliNzFmODkzZDZiMDljNWFj
MmJiNzdhY2Y3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTAxLTIyICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgcG93ZXIg
cHJlZmVyZW5jZSBhbmQgZGlzY3JldGUvaW50ZXJuYWwgZ3B1IHNlbGVjdGlvbiBpbXBsZW1lbnRl
ZCBpbmNvcnJlY3RseSB3aXRoIEFOR0xFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjA4NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgQU5HTEUgZXh0ZW5zaW9uIEVHTF9BTkdMRV9wb3dlcl9wcmVm
ZXJlbmNlIHRvIHNpZ25hbCB0byBBTkdMRSB0aGF0IHRoZSB1bmRlcmx5aW5nCisgICAgICAgIENH
TCBjb250ZXh0IHNob3VsZCBiZSB1cGRhdGVkIGFzIGEgcmVzcG9uc2UgdG8gZGlzcGxheSByZWNv
bmZpZ3VyYXRpb24gc2lnbmFsLgorICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCBBTkdMRSBzdGF0
ZSBzdGF5cyBjb25zaXN0ZW50IHdpdGggdGhlIGFjdHVhbCBDR0wgY29udGV4dCBiZWhhdmlvciwg
YXMKKyAgICAgICAgd2UgZG9uJ3QgY2hhbmdlIHRoZSBjb250ZXh0IGJlaGluZCBBTkdMRSdzIGJh
Y2suCisKKyAgICAgICAgUmVtb3ZlIHRoZSBmZWF0dXJlIHdoZXJlIHRoZSBjb250ZXh0IEdQVSBp
cyBzZWxlY3RlZCBiYXNlZCBvbiB0aGUgZGlzcGxheSB0aGUgd2luZG93IGlzCisgICAgICAgIG9u
LiBUaGlzIGNhbm5vdCB3b3JrIHdpdGggdGhlIGxvZ2ljIG9mICJwb3dlclByZWZlcmVuY2UgPSAi
aGlnaC1wZXJmb3JtYW5jZSIgZ29lcyB0bworICAgICAgICBkaXNjcmV0ZSBHUFUiLiBBbHNvLCB0
aGlzIGNhbm5vdCB3b3JrIHdpdGggQU5HTEUgYXQgYWxsLCBzaW5jZSBhbGwgY29udGV4dHMgYXJl
IGJhY2tlZAorICAgICAgICBieSBhIHNpbmdsZSBwbGF0Zm9ybSBjb250ZXh0LiBUaHVzIGFsbCBj
b250ZXh0cyB3aWxsIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIEdQVS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgZHVlIHRvIHRoZSB0ZXN0IHJ1bm5lciBtaXNzaW5nIGZlYXR1cmVzLiBUaGUgYnVn
IGJsb2NrZXJzIHRyYWNrIHRoZSB0ZXN0aW5nLgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21h
a2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0hpZ2hQZXJmb3JtYW5jZUNv
bnRleHQpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250
ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZGlzcGxheVdhc1JlY29uZmlndXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjphdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6
Omhhc011eENhcGFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6aGFzTG93QW5kSGlnaFBvd2Vy
R1BVcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFj
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1Njb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oLgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6U2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0Ojp+U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0OjpvcGVyYXRv
cj0pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6
YWNxdWlyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNs
aWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnJlbW92ZUNv
bnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisK
IDIwMjEtMDEtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IFZhbGlkYXRlIEl0ZW1IYW5kbGVzIHdoZW4gZGVjb2RpbmcgdGhlbSBpbiBHUFVQcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDk3ODkwZWI1Y2NhYTEyODhhMWRjNjVjODc1OWQ1ZGY1YmNhMDlhMDkuLjM1MmIx
ZjdlZDhkMTk4ZmQwYjI5ZTQ3ZWZhN2E1YTIzOTNmNzliYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjMgQEAKKzIwMjEtMDEtMjIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWJHTCBwb3dlciBwcmVmZXJlbmNlIGFuZCBkaXNjcmV0ZS9pbnRlcm5hbCBn
cHUgc2VsZWN0aW9uIGltcGxlbWVudGVkIGluY29ycmVjdGx5IHdpdGggQU5HTEUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDg0MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIGhpZ2gtcGVy
Zm9ybWFuY2UgR1BVIHNodXRkb3duIHRpbWVyIGZyb20gaW5kaXZpZHVhbCB3ZWIgcHJvY2Vzc2Vz
IHRvIHRoZSBtYWluIGNsYXNzCisgICAgICAgIGluIHRoZSB1aSBwcm9jZXNzLiBUaGlzIHNpbXBs
aWZpZXMgdGhlIGltcGxlbWVudGF0aW9uIGFuZCByZWR1Y2VzIHRoZSBudW1iZXIgb2YgdGltZXJz
LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpIaWdoUGVyZm9ybWFu
Y2VHUFVNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdl
cjo6cmVtb3ZlUHJvY2Vzc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZSk6CisgICAgICAgIChXZWJL
aXQ6OkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlcXVlc3RIaWdoUGVyZm9y
bWFuY2VHUFUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlbGVh
c2VIaWdoUGVyZm9ybWFuY2VHUFUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5oOgorCiAyMDIxLTAxLTIxICBQZW5nIExpdSAg
PHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgUGlQIHZpZGVvIHN1YnRpdGxlcyBzdG9w
IHVwZGF0aW5nIHdoZW4gU2FmYXJpIGlzIGJhY2tncm91bmRlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQppbmRleCBhYzcwMTU0OTk3OTllNGZiNGVlMmEwZGUwMWI0MzUxMmIwOWExZjhlLi5jYWQy
NjQ0OWM3NGM4NWNhY2I5NjViMzljOGZiNzUyOTAxZmNhNmYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtMzQwLDYgKzM0MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0Zsb2F0U2l6ZU1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0NoZWNrc01hYy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9JbnRQb2ludE1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggM2JlMTc1
OGNkODc1NTM5YWM3ZDJjNmRhYTA3OGYwY2IzMDJjODcxMy4uZTg3ZDRkZDA3OWE1NWY2OWQyMTcz
YmRmMTEyYzJlZjlmOWE2ZWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MTgsNiAr
NDE4LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRmxvYXRTaXplTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01h
Yy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSW1hZ2VNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRQb2ludE1hYy5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM4MzgwZTFiNTZhODg1OTJmMzk0YjdmNjM4ZTM4YWUzY2Y1ODk0N2MuLmJmNjViZGEzOTkx
ZTYwZGQxOWY2ZmRlNzg5YWYyODBkNGVhZjYwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIyNTksNiArMjI1OSw5IEBACiAJ
CTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5
MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JC
MzRBMTcyNTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2
MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi87
IH07CiAJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJh
Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTdCQjY4MEIyMjVCQTBENEEwMDJCODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2
ODBCMDI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCQjY4
MEI2MjVCQTFBRTIwMDJCODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2ODBCNDI1
QkExQUUxMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyB9
OworCQk3QkI2ODBCQTI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjY4MEI4MjVCQTFC
RTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkwNkZCQjRGMEYyQyAvKiBK
U1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpTU1ZHR3JhcGhpY3NFbGVt
ZW50LmggKi87IH07CiAJCTdDMDI5QzZFMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAyOUM2RDI0
OTNDOEY4MDAyNjgyMDQgLyogQ29sb3JUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMTg0M0ZFMUM4QjcyODMwMDJFQjk3MyAvKiBBdXRv
ZmlsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mx
ODQzRkMxQzhCNzI4MzAwMkVCOTczIC8qIEF1dG9maWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjk0LDYgKzEwMjk3LDEwIEBACiAJCTdC
QjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDUyNTM3
NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250
ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JC
NjgwQjAyNUJBMEQ0QTAwMkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNl
R1BVUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkI2ODBCNDI1QkEx
QUUxMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQjY4MEI3MjVCQTFCRTMwMDJCODcz
OCAvKiBHcmFwaGljc0NoZWNrc01hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCQjY4MEI4MjVCQTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1QjI1NzYzQjhEMDBFODVEOTggLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzAxMUYzRDI0RkFEMzYwMDA1QkVGMTAgLyogU2V0dGluZ3MuY3BwLmVyYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBT
ZXR0aW5ncy5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAxMUYzRTI0
RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI2NDk2LDExICsyNjUwMywxNSBAQAogCQkJCUIyNzUzNTREMEIwNTM4MTQwMDJD
RTY0RiAvKiBGbG9hdFNpemVNYWMubW0gKi8sCiAJCQkJQjJBRkZDNzUwRDAwQTVDMTAwMzAwNzRE
IC8qIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwICovLAogCQkJCUIyQUZGQzc2MEQwMEE1QzEw
MDMwMDc0RCAvKiBGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggKi8sCisJCQkJN0JCNjgwQjcyNUJB
MUJFMzAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmNwcCAqLywKKwkJCQk3QkI2ODBCODI1
QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLywKIAkJCQlCMjc1MzU4RDBC
MDUzQTY2MDAyQ0U2NEYgLyogSWNvbk1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RTBCMDUzODE0MDAy
Q0U2NEYgLyogSW1hZ2VNYWMubW0gKi8sCiAJCQkJQjI3NTM1NEYwQjA1MzgxNDAwMkNFNjRGIC8q
IEludFBvaW50TWFjLm1tICovLAogCQkJCUIyNzUzNTUxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRT
aXplTWFjLm1tICovLAogCQkJCTJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAvKiBQREZEb2N1bWVu
dEltYWdlTWFjLm1tICovLAorCQkJCTdCQjY4MEI0MjVCQTFBRTEwMDJCODczOCAvKiBTY29wZWRI
aWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8sCisJCQkJN0JCNjgwQjAyNUJBMEQ0QTAwMkI4
NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLywKIAkJCQkxNjNFODhG
NTExOEEzOUQyMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgKi8sCiAJCQkJ
QzExQTlFRDIyMTQwNTc4QjAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi8sCiAJ
CQkJQzExQTlFQ0QyMTQwM0E1QzAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5oICovLApA
QCAtMzIyMzMsNiArMzIyNDQsNyBAQAogCQkJCUJDNTNDNUY1MERBNTZCOTIwMDIxRUI1RCAvKiBH
cmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjQwRDAwQkYyMjAwNzFCNzgyIC8q
IEdyYWRpZW50QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0ODFGMDQxNDZCNUM2
QjAwQUE3ODM0IC8qIEdyYWRpZW50SW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCQjY4MEJB
MjVCQTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjJBMDE1QTkwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM0OTA3RTQxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENH
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTNERTg3MDIzQTk2OTczMDA4RkM0N0IgLyogR3JhcGhp
Y3NDb250ZXh0R0wuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ0NTUsNiArMzQ0NjcsOCBAQAogCQkJ
CTQ5RTkxMUNCMEVGODZENDcwMDlEMENBRiAvKiBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNURGRThGNTcwRDE2NDc3QzAwNzZFOTM3IC8qIFNjaGVkdWxlZEFj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJEMEJGOTMxMkE0MkJGNTAwNzJGRDQzIC8qIFNj
b3BlZEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCQjY4MEI2MjVCQTFBRTIwMDJC
ODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk3QkI2ODBCMjI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BV
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQzAxQkUwQzI3NERBQzAwOUY0RUM5IC8q
IFNjcmVlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzFFMUQyMzYyMDNERjE1NDAwNTg0NjY1IC8q
IFNjcmVlblByb3BlcnRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NEQ4MkMxMTFEMzQ3NDgw
MDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAppbmRleCA1NzhlMDIxODBjNDZmM2RiYzRmZmZkMGFmMGMzNTNmMzk0ODIwZGJl
Li5lNzdkODBhODUyZmI1YWM1ZGQ3MWNlM2Y5N2NjZjY2NjQ2MWNlNTZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcApAQCAtNjQyLDcgKzY0Miw3IEBAIHByaXZhdGU6CiAKIHN0YXRpYyBib29sIGlzSGlnaFBl
cmZvcm1hbmNlQ29udGV4dChjb25zdCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+JiBjb250ZXh0
KQogewotICAgIHJldHVybiBjb250ZXh0LT5wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24o
KSA9PSBXZWJHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOworICAgIHJldHVybiBj
b250ZXh0LT5jb250ZXh0QXR0cmlidXRlcygpLnBvd2VyUHJlZmVyZW5jZSA9PSBXZWJHTFBvd2Vy
UHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKENh
bnZhc0Jhc2UmIGNhbnZhcywgV2ViR0xDb250ZXh0QXR0cmlidXRlcyYgYXR0cmlidXRlcywgV2Vi
R0xWZXJzaW9uIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggYjcxMGU3MTVhNjZkY2Fj
NTY3NDJkYjZiYmVhNzQxZDZmODYzNDJiMy4uNGE1NWY5ZGExYzViNTFmNmMyNGEwYjBlNWM1YzZm
YmIzZjU0OWM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtNjcsMTAgKzY3LDYgQEAKICNp
bmNsdWRlICJEYXRlVGltZUNob29zZXIuaCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoV0VCR0wpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
LmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwpAQCAtNTQ4LDEwICs1NDQsNiBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlk
Q2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3BhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJ
RCwgbm9taW5hbEZyYW1lSW50ZXJ2YWwpOwotCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
V0VCR0wpCi0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2Vy
KCkuc2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCwgdGhpcyk7Ci0jZW5kaWYKIH0KIAogYm9vbCBD
aHJvbWU6OnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4
IGEzMGNlZTVmYWI2NDc5MmFjYjhjNDVlMWVlNTBlMDBjZDIyYzJkZjQuLjJhZDE0N2Y2ZWFiOTRj
ZjNiZGYwM2JjNmZkYzIxMTdkNGFlMDA1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMTI2Myw4ICsxMjYzLDYg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wp
ID0gMDsKIAotICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93
ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgPSAwOwotCiAgICAgdmlydHVhbCBi
b29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCA9IDA7CiAKICAgICAvLyBTeW50aGVzaXplcyBh
biBPcGVuR0wgZXJyb3Igd2hpY2ggd2lsbCBiZSByZXR1cm5lZCBmcm9tIGEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAppbmRleCA1NTJkODUzOWI2OTUwMGNmMTE2OTY4
MGQ0YjVjNjI4NTg1OGI3NzM3Li5lNTBmOGZiNGM1YzM2NzA0NjFjODEzNDVlNDQzNzNjNmE0ZGEx
MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC00OSwx
MiArNDksNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRDb250
ZXh0VmlzaWJpbGl0eShib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLUdyYXBoaWNz
Q29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Ojpwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdAotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQogYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFdF
QkdMMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCmluZGV4IDI0NzFkNGUy
NWM5YWEyMDBlYzc0M2IxZmUwYzY0NjhiMGM5YTUwODMuLjI4OGMyZWE4YWQzOWU4OWI2OTY5ZmQw
YjIxNmI4YjY3YjBiZWRhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
aApAQCAtNjEsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IGZpbmFsOwogICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZp
bmFsOwogICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7Ci0gICAgR3Jh
cGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0
aW9uKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKICAgICBib29sIGxheWVy
Q29tcG9zaXRlZCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW0KaW5kZXggNjU5ZmZmZjEyODRjMDJhMjIzMjIxMjA2ZWI4ZjE2ZjJhODEyYjVh
Yy4uNDkwYTU5YjJjNGJiOTJmZGMyMjliMzhhYzU4NzFhNmVhOTg1YzNjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgpAQCAtMzIsOSArMzIsNyBAQAog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgogI2ltcG9ydCAiR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgogI2ltcG9ydCAi
TG9nZ2luZy5oIgotI2ltcG9ydCAiT3BlbkdMU29mdExpbmtDb2NvYS5oIgogI2ltcG9ydCAiUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkLmgiCiAjaW1w
b3J0ICJXZWJHTExheWVyLmgiCkBAIC00MiwxMSArNDAsNiBAQAogI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBM
QVRGT1JNKE1BQykKLSNpbXBvcnQgIlNjcmVlblByb3BlcnRpZXMuaCIKLSNpbXBvcnQgPE9wZW5H
TC9DR0xSZW5kZXJlcnMuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQ1YuaCIKICNlbmRpZgpAQCAt
MTUxLDE3ICsxNDQsMTcgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEcKICAgICBpZiAoIWNvbnRl
eHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRl
eHQuZ2V0KCksIGhvc3RXaW5kb3cpOworICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5nZXQoKSk7CiAKICAgICByZXR1
cm4gY29udGV4dDsKIH0KIAogUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFy
ZWRDb250ZXh0KQogewotICAgIGF1dG8gaG9zdFdpbmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhvc3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRD
b250ZXh0KTsKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywg
JnNoYXJlZENvbnRleHQsIG51bGxwdHIpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5wdHIoKSwgaG9zdFdp
bmRvdyk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTChzaGFyZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIG51bGxwdHIsICZzaGFy
ZWRDb250ZXh0LCBudWxscHRyKSk7CisKKyAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRleHQucHRyKCkpOwogCiAgICAgcmV0
dXJuIGNvbnRleHQ7CiB9CkBAIC0xNzEsNjcgKzE2NCwxMSBAQCBSZWY8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGNv
bnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0
cnMsIG51bGxwdHIsIG51bGxwdHIsIHN3YXBDaGFpbikpOwogfQogCi0jaWYgUExBVEZPUk0oTUFD
KSAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGQgYmUganVzdCBlbmFibGVkIC0gc2VlIDxy
ZGFyOi8vNTMwNjI3OTQ+LgotCi1zdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29u
dGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiwgSU9S
ZWdpc3RyeUdQVUlEIHByZWZlcnJlZEdQVUlEKQotewotICAgIC8vIFdoZW4gdGhlIFdlYlByb2Nl
c3MgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIFdpbmRvd1NlcnZlciwgdGhlcmUgaXMgbm8g
d2F5IGZvciBPcGVuR0wgdG8gdGVsbCB3aGljaCBHUFUgaXMgY29ubmVjdGVkIHRvIGEgZGlzcGxh
eS4KLSAgICAvLyBPbiAxMC4xMyssIGZpbmQgdGhlIHZpcnR1YWwgc2NyZWVuIHRoYXQgY29ycmVz
cG9uZHMgdG8gdGhlIHByZWZlcnJlZCBHUFUgYnkgaXRzIHJlZ2lzdHJ5SUQuCi0gICAgLy8gQ0dM
U2V0VmlydHVhbFNjcmVlbiBjYW4gdGhlbiBiZSB1c2VkIHRvIHRlbGwgT3BlbkdMIHdoaWNoIEdQ
VSBpdCBzaG91bGQgYmUgdXNpbmcuCi0KLSAgICBpZiAoIWNvbnRleHRPYmogfHwgIXByZWZlcnJl
ZEdQVUlEKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHTGludCB2aXJ0dWFsU2NyZWVuQ291bnQg
PSAwOwotICAgIENHTEVycm9yIGVycm9yID0gQ0dMRGVzY3JpYmVQaXhlbEZvcm1hdChwaXhlbEZv
cm1hdE9iaiwgMCwga0NHTFBGQVZpcnR1YWxTY3JlZW5Db3VudCwgJnZpcnR1YWxTY3JlZW5Db3Vu
dCk7Ci0gICAgQVNTRVJUKGVycm9yID09IGtDR0xOb0Vycm9yKTsKLQotICAgIEdMaW50IGZpcnN0
QWNjZWxlcmF0ZWRTY3JlZW4gPSAtMTsKLQotICAgIGZvciAoR0xpbnQgdmlydHVhbFNjcmVlbiA9
IDA7IHZpcnR1YWxTY3JlZW4gPCB2aXJ0dWFsU2NyZWVuQ291bnQ7ICsrdmlydHVhbFNjcmVlbikg
ewotICAgICAgICBHTGludCBkaXNwbGF5TWFzayA9IDA7Ci0gICAgICAgIGVycm9yID0gQ0dMRGVz
Y3JpYmVQaXhlbEZvcm1hdChwaXhlbEZvcm1hdE9iaiwgdmlydHVhbFNjcmVlbiwga0NHTFBGQURp
c3BsYXlNYXNrLCAmZGlzcGxheU1hc2spOwotICAgICAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5v
RXJyb3IpOwotCi0gICAgICAgIGF1dG8gZ3B1SUQgPSBncHVJREZvckRpc3BsYXlNYXNrKGRpc3Bs
YXlNYXNrKTsKLQotICAgICAgICBpZiAoZ3B1SUQgPT0gcHJlZmVycmVkR1BVSUQpIHsKLSAgICAg
ICAgICAgIGVycm9yID0gQ0dMU2V0VmlydHVhbFNjcmVlbihjb250ZXh0T2JqLCB2aXJ0dWFsU2Ny
ZWVuKTsKLSAgICAgICAgICAgIEFTU0VSVChlcnJvciA9PSBrQ0dMTm9FcnJvcik7Ci0gICAgICAg
ICAgICBMT0coV2ViR0wsICJDb250ZXh0ICglcCkgc2V0IHRvIEdQVSB3aXRoIElEOiAoJWxsZCku
IiwgY29udGV4dE9iaiwgZ3B1SUQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKGZpcnN0QWNjZWxlcmF0ZWRTY3JlZW4gPCAwKSB7Ci0gICAgICAgICAgICBH
TGludCBpc0FjY2VsZXJhdGVkID0gMDsKLSAgICAgICAgICAgIGVycm9yID0gQ0dMRGVzY3JpYmVQ
aXhlbEZvcm1hdChwaXhlbEZvcm1hdE9iaiwgdmlydHVhbFNjcmVlbiwga0NHTFBGQUFjY2VsZXJh
dGVkLCAmaXNBY2NlbGVyYXRlZCk7Ci0gICAgICAgICAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5v
RXJyb3IpOwotICAgICAgICAgICAgaWYgKGlzQWNjZWxlcmF0ZWQpCi0gICAgICAgICAgICAgICAg
Zmlyc3RBY2NlbGVyYXRlZFNjcmVlbiA9IHZpcnR1YWxTY3JlZW47Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICAvLyBObyByZWdpc3RyeUlEIG1hdGNoIGZvdW5kOyBzZXQgdG8gZmlyc3QgaGFyZHdh
cmUtYWNjZWxlcmF0ZWQgdmlydHVhbCBzY3JlZW4uCi0gICAgaWYgKGZpcnN0QWNjZWxlcmF0ZWRT
Y3JlZW4gPj0gMCkgewotICAgICAgICBlcnJvciA9IENHTFNldFZpcnR1YWxTY3JlZW4oY29udGV4
dE9iaiwgZmlyc3RBY2NlbGVyYXRlZFNjcmVlbik7Ci0gICAgICAgIEFTU0VSVChlcnJvciA9PSBr
Q0dMTm9FcnJvcik7Ci0gICAgICAgIExPRyhXZWJHTCwgIlJlZ2lzdHJ5SUQgKCVsbGQpIG5vdCBt
YXRjaGVkOyBDb250ZXh0ICglcCkgc2V0IHRvIHZpcnR1YWwgc2NyZWVuICglZCkuIiwgcHJlZmVy
cmVkR1BVSUQsIGNvbnRleHRPYmosIGZpcnN0QWNjZWxlcmF0ZWRTY3JlZW4pOwotICAgIH0KLX0K
LQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLQotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENv
bnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2FwQ2hhaW4pCitH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiwgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIHNoYXJlZENvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
KiBzd2FwQ2hhaW4pCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgRGVzdGluYXRpb246
Ok9mZnNjcmVlbiwgc2hhcmVkQ29udGV4dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0gYXR0cnMu
d2ViR0xWZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJHTDI7CiAK
LSNpZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCi0gICAgbV9wb3dlclByZWZlcmVuY2VV
c2VkRm9yQ3JlYXRpb24gPSAoaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpICYmIGF0dHJzLnBvd2Vy
UHJlZmVyZW5jZSA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZv
cm1hbmNlKSA/IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFu
Y2UgOiBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKLSNlbHNlCi0g
ICAgbV9wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24gPSBHcmFwaGljc0NvbnRleHRHTFBv
d2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKLSNlbmRpZgotCiAgICAgbV9kaXNwbGF5T2JqID0gSW5p
dGlhbGl6ZUVHTERpc3BsYXkoYXR0cnMpOwogICAgIGlmIChtX2Rpc3BsYXlPYmogPT0gRUdMX05P
X0RJU1BMQVkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5MCwxMSArMjI3LDE1IEBAIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgYXR0CiAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9DT05U
RVhUX0JJTkRfR0VORVJBVEVTX1JFU09VUkNFX0NIUk9NSVVNKTsKICAgICBlZ2xDb250ZXh0QXR0
cmlidXRlcy5hcHBlbmQoRUdMX0ZBTFNFKTsKIAotICAgIGlmIChzdHJzdHIoZGlzcGxheUV4dGVu
c2lvbnMsICJFR0xfQU5HTEVfcG93ZXJfcHJlZmVyZW5jZSIpKSB7Ci0gICAgICAgIGVnbENvbnRl
eHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfUE9XRVJfUFJFRkVSRU5DRV9BTkdMRSk7Ci0gICAgICAg
IC8vIEVHTF9MT1dfUE9XRVJfQU5HTEUgaXMgdGhlIGRlZmF1bHQuIENoYW5nZSB0bwotICAgICAg
ICAvLyBFR0xfSElHSF9QT1dFUl9BTkdMRSBpZiBkZXNpcmVkLgotICAgICAgICBlZ2xDb250ZXh0
QXR0cmlidXRlcy5hcHBlbmQoRUdMX0xPV19QT1dFUl9BTkdMRSk7CisgICAgYm9vbCBzdXBwb3J0
c1Bvd2VyUHJlZmVyZW5jZSA9IGZhbHNlOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBtX3N1cHBv
cnRzUG93ZXJQcmVmZXJlbmNlID0gc3Ryc3RyKGRpc3BsYXlFeHRlbnNpb25zLCAiRUdMX0FOR0xF
X3Bvd2VyX3ByZWZlcmVuY2UiKTsKKyAgICBzdXBwb3J0c1Bvd2VyUHJlZmVyZW5jZSA9IG1fc3Vw
cG9ydHNQb3dlclByZWZlcmVuY2U7CisjZW5kaWYKKyAgICBpZiAoIXN1cHBvcnRzUG93ZXJQcmVm
ZXJlbmNlKSB7CisgICAgICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAg
ICAgICBhdHRycy5wb3dlclByZWZlcmVuY2UgPSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVy
ZW5jZTo6RGVmYXVsdDsKKyAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOwogICAg
IH0KICAgICBlZ2xDb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX05PTkUpOwogCkBAIC0zMzIs
MjEgKzI3Myw2IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAgICAgIH0KICAgICAgICAg
ZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7CiAgICAgfQotI2lmIFBMQVRGT1JN
KE1BQykKLSAgICAvLyBGSVhNRTogSXQncyB1bmNsZWFyIGlmIE1BQ0NBVEFMWVNUIHNob3VsZCB0
YWtlIHRoZXNlIHN0ZXBzIGFzIHdlbGwsIGJ1dCB0aGF0Ci0gICAgLy8gd291bGQgcmVxdWlyZSB0
aGUgUGxhdGZvcm1TY3JlZW5NYWMgY29kZSB0byBiZSBleHBvc2VkIHRvIENhdGFseXN0IHRvby4K
LSAgICBFR0xEZXZpY2VFWFQgZGV2aWNlID0gbnVsbHB0cjsKLSAgICBFR0xfUXVlcnlEaXNwbGF5
QXR0cmliRVhUKG1fZGlzcGxheU9iaiwgRUdMX0RFVklDRV9FWFQsIHJlaW50ZXJwcmV0X2Nhc3Q8
RUdMQXR0cmliKj4oJmRldmljZSkpOwotICAgIENHTENvbnRleHRPYmogY2dsQ29udGV4dCA9IG51
bGxwdHI7Ci0gICAgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXQgPSBudWxscHRyOwotICAg
IEVHTF9RdWVyeURldmljZUF0dHJpYkVYVChkZXZpY2UsIEVHTF9DR0xfQ09OVEVYVF9BTkdMRSwg
cmVpbnRlcnByZXRfY2FzdDxFR0xBdHRyaWIqPigmY2dsQ29udGV4dCkpOwotICAgIEVHTF9RdWVy
eURldmljZUF0dHJpYkVYVChkZXZpY2UsIEVHTF9DR0xfUElYRUxfRk9STUFUX0FOR0xFLCByZWlu
dGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZwaXhlbEZvcm1hdCkpOwotICAgIGF1dG8gZ3B1SUQg
PSAoaG9zdFdpbmRvdyAmJiBob3N0V2luZG93LT5kaXNwbGF5SUQoKSkgPyBncHVJREZvckRpc3Bs
YXkoaG9zdFdpbmRvdy0+ZGlzcGxheUlEKCkpIDogcHJpbWFyeUdQVUlEKCk7Ci0gICAgc2V0R1BV
QnlSZWdpc3RyeUlEKGNnbENvbnRleHQsIHBpeGVsRm9ybWF0LCBncHVJRCk7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKLSNlbmRpZgotCiAgICAgdmFsaWRhdGVBdHRyaWJ1
dGVzKCk7CiAgICAgYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOyAvLyBUaGV5IG1heSBoYXZl
IGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKQEAgLTU2MSwzMCArNDg3LDI3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNoZWNrR1BVU3RhdHVzKCkKIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCBpc1Zpc2libGUpCiB7
Ci0gICAgaWYgKG1fcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uID09IEdyYXBoaWNzQ29u
dGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2UpIHsKLSAgICAgICAgaWYgKGlz
VmlzaWJsZSkKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcigpLmFkZENvbnRleHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UodGhpcyk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6
c2hhcmVkTWFuYWdlcigpLnJlbW92ZUNvbnRleHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UodGhp
cyk7Ci0gICAgfQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMo
KS5wb3dlclByZWZlcmVuY2UgIT0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6Okhp
Z2hQZXJmb3JtYW5jZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChpc1Zpc2libGUpCisgICAg
ICAgIG1faGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCA9IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQ
VVJlcXVlc3Q6OmFjcXVpcmUoKTsKKyAgICBlbHNlCisgICAgICAgIG1faGlnaFBlcmZvcm1hbmNl
R1BVUmVxdWVzdCA9IHsgfTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlzVmlzaWJsZSk7Cisj
ZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVwZGF0ZUNHTENvbnRleHQoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGlz
cGxheVdhc1JlY29uZmlndXJlZCgpCiB7Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
KyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCFtX3N1cHBvcnRzUG93ZXJQcmVmZXJlbmNlKQog
ICAgICAgICByZXR1cm47Ci0gICAgTE9HKFdlYkdMLCAiRGV0ZWN0ZWQgYSBtdXggc3dpdGNoIG9y
IGRpc3BsYXkgcmVjb25maWd1cmF0aW9uLiBDYWxsIENHTFVwZGF0ZUNvbnRleHQuICglcCkiLCB0
aGlzKTsKLQotICAgIEVHTERldmljZUVYVCBkZXZpY2UgPSBudWxscHRyOwotICAgIEVHTF9RdWVy
eURpc3BsYXlBdHRyaWJFWFQobV9kaXNwbGF5T2JqLCBFR0xfREVWSUNFX0VYVCwgcmVpbnRlcnBy
ZXRfY2FzdDxFR0xBdHRyaWIqPigmZGV2aWNlKSk7Ci0gICAgQ0dMQ29udGV4dE9iaiBjZ2xDb250
ZXh0ID0gbnVsbHB0cjsKLSAgICBFR0xfUXVlcnlEZXZpY2VBdHRyaWJFWFQoZGV2aWNlLCBFR0xf
Q0dMX0NPTlRFWFRfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJmNnbENvbnRl
eHQpKTsKLQotICAgIENHTFVwZGF0ZUNvbnRleHQoY2dsQ29udGV4dCk7Ci0gICAgbV9oYXNTd2l0
Y2hlZFRvSGlnaFBlcmZvcm1hbmNlR1BVID0gdHJ1ZTsKLX0KKyAgICBFR0xfSGFuZGxlR1BVU3dp
dGNoQU5HTEUobV9kaXNwbGF5T2JqKTsKKyAgICBkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZp
Y2F0aW9uKCk7CiAjZW5kaWYKK30KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKIHsKQEAgLTY1NCw1MCArNTc3LDggQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKQogewotICAg
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnVwZGF0ZUFs
bENvbnRleHRzKCk7Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG93T2Zm
bGluZVJlbmRlcmVycygpIGNvbnN0Ci17Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VC
UFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCi0gICAgLy8gV2hlbiBXaW5kb3dTZXJ2ZXIg
YWNjZXNzIGlzIGJsb2NrZWQgaW4gdGhlIFdlYlByb2Nlc3MsIHRoZXJlIGlzIG5vIHdheQotICAg
IC8vIGZvciBPcGVuR0wgdG8gZGVjaWRlIHdoaWNoIEdQVSBpcyBjb25uZWN0ZWQgdG8gYSBkaXNw
bGF5IChvbmxpbmUvb2ZmbGluZSkuCi0gICAgLy8gT3BlbkdMIHdpbGwgdGhlbiBjb25zaWRlciBh
bGwgR1BVcywgb3IgcmVuZGVyZXJzLCBhcyBvZmZsaW5lLCB3aGljaCBtZWFucwotICAgIC8vIGFs
bCBvZmZsaW5lIHJlbmRlcmVycyBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgd2hlbiBmaW5kaW5nIGEg
cGl4ZWwgZm9ybWF0LgotICAgIC8vIEluIFdlYktpdCBsZWdhY3ksIHRoZXJlIHdpbGwgc3RpbGwg
YmUgYSBXaW5kd1NlcnZlciBjb25uZWN0aW9uLCBhbmQKLSAgICAvLyBtX2Rpc3BsYXlNYXNrIHdp
bGwgbm90IGJlIHNldCBpbiB0aGlzIGNhc2UuCi0gICAgaWYgKHByaW1hcnlPcGVuR0xEaXNwbGF5
TWFzaygpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbGlmIFBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQotICAgIC8vIEZJWE1FOiA8cmRhcjovLzUzMDYyNzk0PiBXZSdyZSB2ZXJ5IGluY29uc2lzdGVu
dCBhYm91dCBXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORwotICAgIC8vIGFuZCBNQUMv
TUFDQ0FUQUxZU1QgYW5kIE9QRU5HTC9PUEVOR0xFUy4KLSAgICByZXR1cm4gdHJ1ZTsKLSNlbmRp
ZgotICAgICAgICAKLSNpZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCi0gICAgaWYgKGhh
c0xvd0FuZEhpZ2hQb3dlckdQVXMoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLSAg
ICAKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLSNpZiBQTEFURk9STShNQUMpCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpzY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlEKQotewotICAgIGlmICghbV9jb250ZXh0T2JqKQotICAgICAgICByZXR1cm47Ci0gICAg
aWYgKCFtX2hhc1N3aXRjaGVkVG9IaWdoUGVyZm9ybWFuY2VHUFUpIHsKLSAgICAgICAgRUdMRGV2
aWNlRVhUIGRldmljZSA9IG51bGxwdHI7Ci0gICAgICAgIEVHTF9RdWVyeURpc3BsYXlBdHRyaWJF
WFQobV9kaXNwbGF5T2JqLCBFR0xfREVWSUNFX0VYVCwgcmVpbnRlcnByZXRfY2FzdDxFR0xBdHRy
aWIqPigmZGV2aWNlKSk7Ci0gICAgICAgIENHTENvbnRleHRPYmogY2dsQ29udGV4dCA9IG51bGxw
dHI7Ci0gICAgICAgIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVsRm9ybWF0ID0gbnVsbHB0cjsKLSAg
ICAgICAgRUdMX1F1ZXJ5RGV2aWNlQXR0cmliRVhUKGRldmljZSwgRUdMX0NHTF9DT05URVhUX0FO
R0xFLCByZWludGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZjZ2xDb250ZXh0KSk7Ci0gICAgICAg
IEVHTF9RdWVyeURldmljZUF0dHJpYkVYVChkZXZpY2UsIEVHTF9DR0xfUElYRUxfRk9STUFUX0FO
R0xFLCByZWludGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZwaXhlbEZvcm1hdCkpOwotICAgICAg
ICBzZXRHUFVCeVJlZ2lzdHJ5SUQoY2dsQ29udGV4dCwgcGl4ZWxGb3JtYXQsIGdwdUlERm9yRGlz
cGxheShkaXNwbGF5SUQpKTsKLSAgICB9CisgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkuZGlzcGxheVdhc1JlY29uZmlndXJlZCgpOwogfQotI2VuZGlm
IC8vICFQTEFURk9STShNQUMpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBh
cmVGb3JEaXNwbGF5KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDaGVja3NNYWMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0NTY1ZDAw
ZjNlYjMxODIwZTk4YzA2M2I2ZDg5YTgzYzVkYTA2NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDaGVja3NNYWMuY3BwCkBA
IC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzQ2hlY2tzTWFjLmgiCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpZiBIQVZF
KEFQUExFX0dSQVBISUNTX0NPTlRST0wpCisjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJP
TCkKKworZW51bSB7CisgICAga0FHQ09wZW4sCisgICAga0FHQ0Nsb3NlCit9OworCitzdGF0aWMg
aW9fY29ubmVjdF90IGF0dGFjaFRvQXBwbGVHcmFwaGljc0NvbnRyb2woKQoreworICAgIG1hY2hf
cG9ydF90IG1hc3RlclBvcnQgPSBNQUNIX1BPUlRfTlVMTDsKKworICAgIGlmIChJT01hc3RlclBv
cnQoTUFDSF9QT1JUX05VTEwsICZtYXN0ZXJQb3J0KSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAg
IHJldHVybiBNQUNIX1BPUlRfTlVMTDsKKworICAgIENGRGljdGlvbmFyeVJlZiBjbGFzc1RvTWF0
Y2ggPSBJT1NlcnZpY2VNYXRjaGluZygiQXBwbGVHcmFwaGljc0NvbnRyb2wiKTsKKyAgICBpZiAo
IWNsYXNzVG9NYXRjaCkKKyAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOworCisgICAga2Vy
bl9yZXR1cm5fdCBrZXJuUmVzdWx0OworICAgIGlvX2l0ZXJhdG9yX3QgaXRlcmF0b3I7CisgICAg
aWYgKChrZXJuUmVzdWx0ID0gSU9TZXJ2aWNlR2V0TWF0Y2hpbmdTZXJ2aWNlcyhtYXN0ZXJQb3J0
LCBjbGFzc1RvTWF0Y2gsICZpdGVyYXRvcikpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0
dXJuIE1BQ0hfUE9SVF9OVUxMOworCisgICAgaW9fc2VydmljZV90IHNlcnZpY2VPYmplY3QgPSBJ
T0l0ZXJhdG9yTmV4dChpdGVyYXRvcik7CisgICAgSU9PYmplY3RSZWxlYXNlKGl0ZXJhdG9yKTsK
KyAgICBpZiAoIXNlcnZpY2VPYmplY3QpCisgICAgICAgIHJldHVybiBNQUNIX1BPUlRfTlVMTDsK
KworICAgIGlvX2Nvbm5lY3RfdCBkYXRhUG9ydDsKKyAgICBJT09iamVjdFJldGFpbihzZXJ2aWNl
T2JqZWN0KTsKKyAgICBrZXJuUmVzdWx0ID0gSU9TZXJ2aWNlT3BlbihzZXJ2aWNlT2JqZWN0LCBt
YWNoX3Rhc2tfc2VsZigpLCAwLCAmZGF0YVBvcnQpOworICAgIElPT2JqZWN0UmVsZWFzZShzZXJ2
aWNlT2JqZWN0KTsKKworICAgIHJldHVybiAoa2VyblJlc3VsdCA9PSBLRVJOX1NVQ0NFU1MpID8g
ZGF0YVBvcnQgOiBNQUNIX1BPUlRfTlVMTDsKK30KKworc3RhdGljIGJvb2wgaGFzTXV4Q2FwYWJp
bGl0eSgpCit7CisgICAgaW9fY29ubmVjdF90IGRhdGFQb3J0ID0gYXR0YWNoVG9BcHBsZUdyYXBo
aWNzQ29udHJvbCgpOworCisgICAgaWYgKGRhdGFQb3J0ID09IE1BQ0hfUE9SVF9OVUxMKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHJlc3VsdDsKKyAgICBpZiAoSU9Db25uZWN0
Q2FsbFNjYWxhck1ldGhvZChkYXRhUG9ydCwga0FHQ09wZW4sIG51bGxwdHIsIDAsIG51bGxwdHIs
IG51bGxwdHIpID09IEtFUk5fU1VDQ0VTUykgeworICAgICAgICBJT0Nvbm5lY3RDYWxsU2NhbGFy
TWV0aG9kKGRhdGFQb3J0LCBrQUdDQ2xvc2UsIG51bGxwdHIsIDAsIG51bGxwdHIsIG51bGxwdHIp
OworICAgICAgICByZXN1bHQgPSB0cnVlOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQgPSBm
YWxzZTsKKworICAgIElPU2VydmljZUNsb3NlKGRhdGFQb3J0KTsKKworICAgIGlmIChyZXN1bHQp
IHsKKyAgICAgICAgLy8gVGhpcyBpcyBkZXRlY3RpbmcgTWFjIGhhcmR3YXJlIHdpdGggYW4gSW50
ZWwgZzU3NSBHUFUsIHdoaWNoCisgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gbWFrZSBhdmFp
bGFibGUgdG8gbXV4aW5nLgorICAgICAgICAvLyBCYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIEFw
cGxlJ3MgT3BlbkdMIHRlYW0sIHN1Y2ggZGV2aWNlcworICAgICAgICAvLyBoYXZlIGZvdXIgb3Ig
ZmV3ZXIgcHJvY2Vzc29ycy4KKyAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzMwMDYwMzc4Pgor
ICAgICAgICBpbnQgbmFtZXNbMl0gPSB7IENUTF9IVywgSFdfTkNQVSB9OworICAgICAgICBpbnQg
Y3B1Q291bnQ7CisgICAgICAgIHNpemVfdCBjcHVDb3VudExlbmd0aCA9IHNpemVvZihjcHVDb3Vu
dCk7CisgICAgICAgIHN5c2N0bChuYW1lcywgMiwgJmNwdUNvdW50LCAmY3B1Q291bnRMZW5ndGgs
IG51bGxwdHIsIDApOworICAgICAgICByZXN1bHQgPSBjcHVDb3VudCA+IDQ7CisgICAgfQorCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlmIC8vIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09O
VFJPTCkKKworYm9vbCBoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkKK3sKKyNpZiBIQVZFKEFQUExF
X0dSQVBISUNTX0NPTlRST0wpCisgICAgc3RhdGljIGJvb2wgY2FuTXV4ID0gaGFzTXV4Q2FwYWJp
bGl0eSgpOworICAgIHJldHVybiBjYW5NdXg7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNl
bmRpZgorfQorCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDaGVja3NNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01hYy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiYzVi
Nzk4MzJlMGUwOTEyMWI5MjRjNTZhNWJhY2YxOTczNjFlMmIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDaGVja3NNYWMuaApA
QCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCk7
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9T
Y29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRjMjFmZDc5NDAxOWEzMWE4MDU3MzQ0ZjJkYTJkYzRiYWFlMTI4ZTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2NvcGVkSGlnaFBl
cmZvcm1hbmNlR1BVUmVxdWVzdC5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkdyYXBoaWNzQ2hlY2tzTWFjLmgiCisjaW5jbHVkZSAiU3dp
dGNoaW5nR1BVQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NvcGVk
SGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCB7CitwdWJsaWM6CisgICAgU2NvcGVkSGlnaFBlcmZv
cm1hbmNlR1BVUmVxdWVzdCgpID0gZGVmYXVsdDsKKyAgICBTY29wZWRIaWdoUGVyZm9ybWFuY2VH
UFVSZXF1ZXN0KFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QmJiBvdGhlcikKKyAgICAg
ICAgOiBtX3JlcXVlc3RlZChzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fcmVxdWVzdGVkLCBmYWxzZSkp
CisgICAgeworICAgIH0KKyAgICB+U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCgpCisg
ICAgeworICAgICAgICBpZiAoIW1fcmVxdWVzdGVkKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBTd2l0Y2hpbmdHUFVDbGllbnQ6OnNpbmdsZXRvbklmRXhpc3RzKCktPnJlbGVhc2VIaWdo
UGVyZm9ybWFuY2VHUFUoKTsKKyAgICB9CisgICAgU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVx
dWVzdCYgb3BlcmF0b3I9KFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QmJiBvdGhlcikK
KyAgICB7CisgICAgICAgIGlmIChtX3JlcXVlc3RlZCkKKyAgICAgICAgICAgIFN3aXRjaGluZ0dQ
VUNsaWVudDo6c2luZ2xldG9uSWZFeGlzdHMoKS0+cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgp
OworICAgICAgICBtX3JlcXVlc3RlZCA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9yZXF1ZXN0ZWQs
IGZhbHNlKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICBzdGF0aWMgU2NvcGVk
SGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCBhY3F1aXJlKCkKKyAgICB7CisgICAgICAgIGlmICgh
aGFzTG93QW5kSGlnaFBvd2VyR1BVcygpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgYXV0byBjbGllbnQgPSBTd2l0Y2hpbmdHUFVDbGllbnQ6OnNpbmdsZXRvbklmRXhpc3RzKCk7
CisgICAgICAgIGlmICghY2xpZW50KQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAg
Y2xpZW50LT5yZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCk7CisgICAgICAgIHJldHVybiB7IDAg
fTsKKyAgICB9Citwcml2YXRlOgorICAgIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Qo
aW50KQorICAgICAgICA6IG1fcmVxdWVzdGVkKHRydWUpCisgICAgeworICAgIH0KKyAgICBib29s
IG1fcmVxdWVzdGVkIHsgZmFsc2UgfTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Td2l0Y2hpbmdHUFVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Td2l0Y2hpbmdHUFVDbGllbnQuaAppbmRleCA0
OTlhMjg3YTQ1Yzk2OGQ4MzNkZWNmZTUzMzMxMWQwY2ViMzE3MDc4Li40NTIzNjc4MWI4ZTEwOGUy
ODZmZGUyMTRlODUxYTNhODJiMzAxYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvU3dpdGNoaW5nR1BVQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oCkBAIC0yOSwxNiAr
MjksMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTd2l0Y2hpbmdHUFVDbGllbnQg
ewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTd2l0Y2hpbmdHUFVDbGllbnQq
IHNpbmdsZXRvbklmRXhpc3RzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0
U2luZ2xldG9uKFN3aXRjaGluZ0dQVUNsaWVudCYpOwogCiAgICAgdmlydHVhbCB+U3dpdGNoaW5n
R1BVQ2xpZW50KCkgPSBkZWZhdWx0OwotCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTd2l0Y2hpbmdHUFVDbGllbnQqIHNpbmdsZXRvbklmRXhpc3RzKCk7CiAgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RIaWdoUGVyZm9ybWFuY2VHUFUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJlbGVhc2VIaWdoUGVyZm9ybWFuY2VHUFUoKSA9IDA7Ci0gICAgCi1wcml2YXRlOgorCiAgICAg
c3RhdGljIFN3aXRjaGluZ0dQVUNsaWVudCogbV9zaW5nbGV0b247CisgICAgZnJpZW5kIGNsYXNz
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Q7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGY1MmJkZDY2ZmQwYzY3YjEyNWQ4YjUxMWUyOWNmOTJm
YzJmY2Y1ZTAuLmY2YTFhMDI0MDhiYWQ4NWQ4MmYwY2NjMzk5ODAyODNkNmNkNjY5MGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC02OSw2ICs2OSwxMCBAQCBjbGFzcyBH
Q0dMTGF5ZXI7CiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJTY29w
ZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgRXh0ZW5zaW9uc0dMOwogI2lmIFVTRShBTkdMRSkKQEAgLTI1Niw3ICsyNjAs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKICAgICB2b2lkIHRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKICAgICB2
b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsgCisgICAgdm9pZCBjb21wcmVzc2Vk
VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAgICAg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwogICAgIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBm
aW5hbDsKIApAQCAtNDYxLDE0ICs0NjUsMTIgQEAgcHVibGljOgogICAgIHZvaWQgcHJpbWl0aXZl
UmVzdGFydEluZGV4KEdDR0x1aW50KTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYm
IFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIHVwZGF0ZUNHTENvbnRleHQoKTsKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgdm9pZCBkaXNwbGF5V2FzUmVjb25maWd1cmVkKCk7CiAjZW5kaWYKIAogICAg
IHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CiAKLSAgICBHcmFwaGljc0Nv
bnRleHRHTFBvd2VyUHJlZmVyZW5jZSBwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Bvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbjsgfQot
CiAgICAgLy8gU3VwcG9ydCBmb3IgYnVmZmVyIGNyZWF0aW9uIGFuZCBkZWxldGlvbgogICAgIFBs
YXRmb3JtR0xPYmplY3QgY3JlYXRlQnVmZmVyKCkgZmluYWw7CiAgICAgUGxhdGZvcm1HTE9iamVj
dCBjcmVhdGVGcmFtZWJ1ZmZlcigpIGZpbmFsOwpAQCAtNDk3LDExICs0OTksNiBAQCBwdWJsaWM6
CiAKICAgICB1bnNpZ25lZCB0ZXh0dXJlU2VlZChHQ0dMdWludCB0ZXh0dXJlKSB7IHJldHVybiBt
X3N0YXRlLnRleHR1cmVTZWVkQ291bnQuY291bnQodGV4dHVyZSk7IH0KIAotI2lmIFBMQVRGT1JN
KE1BQykKLSAgICB1c2luZyBQbGF0Zm9ybURpc3BsYXlJRCA9IHVpbnQzMl90OwotICAgIHZvaWQg
c2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKLSNlbmRpZgotCiAgICAgdm9pZCBw
cmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQpAQCAtNTI5LDcgKzUyNiw3IEBAIHByaXZhdGU6CiAgICAgLy8gaW1wbGVtZW50
YXRpb24uCiAgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7Ci0g
ICAgCisKICAgICB2b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBj
b2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1Bp
eGVsQnVmZmVyT2JqZWN0KTsKIAogICAgIC8vIERpZCB0aGUgbW9zdCByZWNlbnQgZHJhd2luZyBv
cGVyYXRpb24gbGVhdmUgdGhlIEdQVSBpbiBhbiBhY2NlcHRhYmxlIHN0YXRlPwpAQCAtNTQ3LDcg
KzU0NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhdHRhY2hEZXB0aEFuZFN0ZW5jaWxCdWZmZXJJ
Zk5lZWRlZChHQ0dMdWludCBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCwgaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgYWxsb3dPZmZsaW5l
UmVuZGVyZXJzKCkgY29uc3Q7CiAgICAgYm9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmco
KTsKICAgICBib29sIGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiAgICAg
Ym9vbCBiaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4g
YmFja2luZywgdm9pZCogcGJ1ZmZlcik7CkBAIC01ODMsNyArNTc5LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICwgaXNWYWxpZChmYWxzZSkKICAgICAgICAgewogICAgICAgICB9Ci0gICAgICAg
IAorCiAgICAgICAgIFNoYWRlclN5bWJvbE1hcCYgc3ltYm9sTWFwKGVudW0gQU5HTEVTaGFkZXJT
eW1ib2xUeXBlIHN5bWJvbFR5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChzeW1i
b2xUeXBlID09IFNIQURFUl9TWU1CT0xfVFlQRV9BVFRSSUJVVEUgfHwgc3ltYm9sVHlwZSA9PSBT
SEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STSB8fCBzeW1ib2xUeXBlID09IFNIQURFUl9TWU1CT0xf
VFlQRV9WQVJZSU5HKTsKQEAgLTY0OCw3ICs2NDQsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxFeHRlbnNpb25zR0xPcGVuR0w+IG1fZXh0ZW5zaW9uczsKICNlbmRpZgogCi0gICAg
R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgbV9wb3dlclByZWZlcmVuY2VVc2VkRm9y
Q3JlYXRpb24geyBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdCB9Owog
ICAgIFZlY3RvcjxWZWN0b3I8ZmxvYXQ+PiBtX3ZlcnRleEFycmF5OwogCiAjaWYgIVVTRShBTkdM
RSkKQEAgLTY4MCw3ICs2NzUsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIHVzaW5nIEJvdW5kVGV4
dHVyZU1hcCA9IEhhc2hNYXA8R0NHTGVudW0sCiAgICAgICAgICAgICBzdGQ6OnBhaXI8R0NHTHVp
bnQsIEdDR0xlbnVtPiwKLSAgICAgICAgICAgIFdURjo6SW50SGFzaDxHQ0dMZW51bT4sIAorICAg
ICAgICAgICAgV1RGOjpJbnRIYXNoPEdDR0xlbnVtPiwKICAgICAgICAgICAgIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+LAogICAgICAgICAgICAgV1RGOjpQYWly
SGFzaFRyYWl0czxXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50Piwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4+CiAgICAgICAgID47
CkBAIC03NjEsOCArNzU2LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gV2hlbiBwcmVzZXJ2ZURyYXdp
bmdCdWZmZXIgPT0gdHJ1ZSwgdGhpcyBpcyBibGl0dGVkIHRvIGR1cmluZyBkaXNwbGF5IHByZXBh
cmUuCiAgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyQmFja2lu
ZzsKICAgICB2b2lkKiBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyIHsgbnVsbHB0ciB9OwotCi0gICAg
Ym9vbCBtX2hhc1N3aXRjaGVkVG9IaWdoUGVyZm9ybWFuY2VHUFUgeyBmYWxzZSB9OworI2VuZGlm
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGJvb2wgbV9zdXBwb3J0c1Bvd2VyUHJlZmVyZW5jZSB7
IGZhbHNlIH07CisgICAgU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCBtX2hpZ2hQZXJm
b3JtYW5jZUdQVVJlcXVlc3Q7CiAjZW5kaWYKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZP
VU5EQVRJT04pCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dEdMQ1Y+IG1fY3Y7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwCmluZGV4
IDQxYWI1MGNiZWYyZWE2NDI5M2JhMGM5OWJlOGIwNWZjOTcwNzdkZTYuLjBiZjdlMjEwYjdmMGZi
NmM3YmU3M2U1OTIyYzZhZjUxYTliNDU2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwCkBAIC0zMSw5MSArMzEsOCBAQAogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogCi0jaWYgSEFW
RShBUFBMRV9HUkFQSElDU19DT05UUk9MKQotI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KLSNlbmRp
ZgotCi0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgIlN3aXRjaGluZ0dQVUNsaWVudC5oIgot
I2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1Nf
Q09OVFJPTCkKLQotZW51bSB7Ci0gICAga0FHQ09wZW4sCi0gICAga0FHQ0Nsb3NlCi19OwotCi1z
dGF0aWMgaW9fY29ubmVjdF90IGF0dGFjaFRvQXBwbGVHcmFwaGljc0NvbnRyb2woKQotewotICAg
IG1hY2hfcG9ydF90IG1hc3RlclBvcnQgPSBNQUNIX1BPUlRfTlVMTDsKLSAgICAKLSAgICBpZiAo
SU9NYXN0ZXJQb3J0KE1BQ0hfUE9SVF9OVUxMLCAmbWFzdGVyUG9ydCkgIT0gS0VSTl9TVUNDRVNT
KQotICAgICAgICByZXR1cm4gTUFDSF9QT1JUX05VTEw7Ci0gICAgCi0gICAgQ0ZEaWN0aW9uYXJ5
UmVmIGNsYXNzVG9NYXRjaCA9IElPU2VydmljZU1hdGNoaW5nKCJBcHBsZUdyYXBoaWNzQ29udHJv
bCIpOwotICAgIGlmICghY2xhc3NUb01hdGNoKQotICAgICAgICByZXR1cm4gTUFDSF9QT1JUX05V
TEw7Ci0gICAgCi0gICAga2Vybl9yZXR1cm5fdCBrZXJuUmVzdWx0OwotICAgIGlvX2l0ZXJhdG9y
X3QgaXRlcmF0b3I7Ci0gICAgaWYgKChrZXJuUmVzdWx0ID0gSU9TZXJ2aWNlR2V0TWF0Y2hpbmdT
ZXJ2aWNlcyhtYXN0ZXJQb3J0LCBjbGFzc1RvTWF0Y2gsICZpdGVyYXRvcikpICE9IEtFUk5fU1VD
Q0VTUykKLSAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOwotICAgIAotICAgIGlvX3NlcnZp
Y2VfdCBzZXJ2aWNlT2JqZWN0ID0gSU9JdGVyYXRvck5leHQoaXRlcmF0b3IpOwotICAgIElPT2Jq
ZWN0UmVsZWFzZShpdGVyYXRvcik7Ci0gICAgaWYgKCFzZXJ2aWNlT2JqZWN0KQotICAgICAgICBy
ZXR1cm4gTUFDSF9QT1JUX05VTEw7Ci0gICAgCi0gICAgaW9fY29ubmVjdF90IGRhdGFQb3J0Owot
ICAgIElPT2JqZWN0UmV0YWluKHNlcnZpY2VPYmplY3QpOwotICAgIGtlcm5SZXN1bHQgPSBJT1Nl
cnZpY2VPcGVuKHNlcnZpY2VPYmplY3QsIG1hY2hfdGFza19zZWxmKCksIDAsICZkYXRhUG9ydCk7
Ci0gICAgSU9PYmplY3RSZWxlYXNlKHNlcnZpY2VPYmplY3QpOwotICAgIAotICAgIHJldHVybiAo
a2VyblJlc3VsdCA9PSBLRVJOX1NVQ0NFU1MpID8gZGF0YVBvcnQgOiBNQUNIX1BPUlRfTlVMTDsK
LX0KLQotc3RhdGljIGJvb2wgaGFzTXV4Q2FwYWJpbGl0eSgpCi17Ci0gICAgaW9fY29ubmVjdF90
IGRhdGFQb3J0ID0gYXR0YWNoVG9BcHBsZUdyYXBoaWNzQ29udHJvbCgpOwotICAgIAotICAgIGlm
IChkYXRhUG9ydCA9PSBNQUNIX1BPUlRfTlVMTCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IAotICAgIGJvb2wgcmVzdWx0OwotICAgIGlmIChJT0Nvbm5lY3RDYWxsU2NhbGFyTWV0aG9kKGRh
dGFQb3J0LCBrQUdDT3BlbiwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgbnVsbHB0cikgPT0gS0VSTl9T
VUNDRVNTKSB7Ci0gICAgICAgIElPQ29ubmVjdENhbGxTY2FsYXJNZXRob2QoZGF0YVBvcnQsIGtB
R0NDbG9zZSwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgIHJlc3VsdCA9
IHRydWU7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgIAotICAgIElP
U2VydmljZUNsb3NlKGRhdGFQb3J0KTsKLSAgICAKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAg
IC8vIFRoaXMgaXMgZGV0ZWN0aW5nIE1hYyBoYXJkd2FyZSB3aXRoIGFuIEludGVsIGc1NzUgR1BV
LCB3aGljaAotICAgICAgICAvLyB3ZSBkb24ndCB3YW50IHRvIG1ha2UgYXZhaWxhYmxlIHRvIG11
eGluZy4KLSAgICAgICAgLy8gQmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSBBcHBsZSdzIE9wZW5H
TCB0ZWFtLCBzdWNoIGRldmljZXMKLSAgICAgICAgLy8gaGF2ZSBmb3VyIG9yIGZld2VyIHByb2Nl
c3NvcnMuCi0gICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMDA2MDM3OD4KLSAgICAgICAgaW50
IG5hbWVzWzJdID0geyBDVExfSFcsIEhXX05DUFUgfTsKLSAgICAgICAgaW50IGNwdUNvdW50Owot
ICAgICAgICBzaXplX3QgY3B1Q291bnRMZW5ndGggPSBzaXplb2YoY3B1Q291bnQpOwotICAgICAg
ICBzeXNjdGwobmFtZXMsIDIsICZjcHVDb3VudCwgJmNwdUNvdW50TGVuZ3RoLCBudWxscHRyLCAw
KTsKLSAgICAgICAgcmVzdWx0ID0gY3B1Q291bnQgPiA0OwotICAgIH0KLSAgICAKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1ib29sIGhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKQotewotICAgIHN0
YXRpYyBib29sIGNhbk11eCA9IGhhc011eENhcGFiaWxpdHkoKTsKLSAgICByZXR1cm4gY2FuTXV4
OwotfQotI2VuZGlmIC8vIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKLQogR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNo
YXJlZE1hbmFnZXIoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXI+IHNfbWFuYWdlcjsKQEAgLTEyNywzMyArNDQsMTcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoQ0dE
aXJlY3REaXNwbGF5SUQsIEMKIHsKICAgICBMT0coV2ViR0wsICJHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTE1hbmFnZXI6OmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQiKTsKICAgICBpZiAoZmxhZ3MgJiBr
Q0dEaXNwbGF5U2V0TW9kZUZsYWcpCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFu
YWdlcjo6c2hhcmVkTWFuYWdlcigpLnVwZGF0ZUFsbENvbnRleHRzKCk7Ci19Ci0jZW5kaWYKLQot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnVwZGF0ZUFsbENvbnRleHRzKCkK
LXsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgZm9yIChjb25zdCBhdXRvJiBjb250ZXh0IDogbV9j
b250ZXh0cykgewotICAgICAgICBjb250ZXh0LT51cGRhdGVDR0xDb250ZXh0KCk7Ci0gICAgICAg
IGNvbnRleHQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKTsKLSAgICB9Ci0j
ZW5kaWYKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5h
Z2VyKCkuZGlzcGxheVdhc1JlY29uZmlndXJlZCgpOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNjcmVlbkRpZENoYW5nZShQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIGNvbnN0IEhvc3RXaW5kb3cqIHdpbmRvdykKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKCkK
IHsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHRBbmRXaW5kb3cgOiBtX2NvbnRleHRXaW5k
b3dNYXApIHsKLSAgICAgICAgaWYgKGNvbnRleHRBbmRXaW5kb3cudmFsdWUgPT0gd2luZG93KSB7
Ci0gICAgICAgICAgICBjb250ZXh0QW5kV2luZG93LmtleS0+c2NyZWVuRGlkQ2hhbmdlKGRpc3Bs
YXlJRCk7Ci0gICAgICAgICAgICBMT0coV2ViR0wsICJDaGFuZ2luZyBjb250ZXh0ICglcCkgdG8g
ZGlzcGxheSAoJWQpLiIsIGNvbnRleHRBbmRXaW5kb3cua2V5LCBkaXNwbGF5SUQpOwotICAgICAg
ICB9Ci0gICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgY29udGV4dCA6IG1fY29udGV4dHMpCisg
ICAgICAgIGNvbnRleHQtPmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoKTsKIH0KICNlbmRpZgogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dChHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCogY29udGV4dCwgSG9zdFdpbmRvdyogd2luZG93KQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmFkZENvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIGlmICghY29udGV4dCkK
QEAgLTE2Niw3ICs2Nyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjph
ZGRDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0CiAKICAgICBBU1NFUlQo
IW1fY29udGV4dHMuY29udGFpbnMoY29udGV4dCkpOwogICAgIG1fY29udGV4dHMuYXBwZW5kKGNv
bnRleHQpOwotICAgIG1fY29udGV4dFdpbmRvd01hcC5zZXQoY29udGV4dCwgd2luZG93KTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnJlbW92ZUNvbnRleHQoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQpCkBAIC0xNzQsOTcgKzc0LDEyIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpyZW1vdmVDb250ZXh0KEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiBjb250CiAgICAgaWYgKCFtX2NvbnRleHRzLmNvbnRhaW5zKGNvbnRleHQp
KQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZXh0cy5yZW1vdmVGaXJzdChjb250ZXh0KTsK
LSAgICBtX2NvbnRleHRXaW5kb3dNYXAucmVtb3ZlKGNvbnRleHQpOwotICAgIHJlbW92ZUNvbnRl
eHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoY29udGV4dCk7Ci0gICAgCiAjaWYgUExBVEZPUk0o
TUFDKSAmJiAhRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQogICAgIGlm
ICghbV9jb250ZXh0cy5zaXplKCkpCiAgICAgICAgIENHRGlzcGxheVJlbW92ZVJlY29uZmlndXJh
dGlvbkNhbGxiYWNrKGRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQsIG51bGxwdHIpOwogI2VuZGlmCiB9
CiAKLUhvc3RXaW5kb3cqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6aG9zdFdpbmRv
d0ZvckNvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKG1fY29udGV4dFdpbmRvd01hcC5jb250YWlucyhjb250ZXh0KSk7Ci0gICAgcmV0
dXJuIG1fY29udGV4dFdpbmRvd01hcC5nZXQoY29udGV4dCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjphZGRDb250ZXh0UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNl
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0
KTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBBU1NFUlQo
bV9jb250ZXh0cy5jb250YWlucyhjb250ZXh0KSk7Ci0gICAgQVNTRVJUKCFtX2NvbnRleHRzUmVx
dWlyaW5nSGlnaFBlcmZvcm1hbmNlLmNvbnRhaW5zKGNvbnRleHQpKTsKLSAgICAKLSAgICBMT0co
V2ViR0wsICJUaGlzIGNvbnRleHQgKCVwKSByZXF1aXJlcyB0aGUgaGlnaC1wZXJmb3JtYW5jZSBH
UFUuIiwgY29udGV4dCk7Ci0gICAgbV9jb250ZXh0c1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZS5h
ZGQoY29udGV4dCk7Ci0gICAgCi0gICAgdXBkYXRlSGlnaFBlcmZvcm1hbmNlU3RhdGUoKTsKLX0K
LQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnJlbW92ZUNvbnRleHRSZXF1
aXJpbmdIaWdoUGVyZm9ybWFuY2UoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQpCi17
Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fY29udGV4
dHNSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UuY29udGFpbnMoY29udGV4dCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBMT0coV2ViR0wsICJUaGlzIGNvbnRleHQgKCVwKSBubyBsb25nZXIg
cmVxdWlyZXMgdGhlIGhpZ2gtcGVyZm9ybWFuY2UgR1BVLiIsIGNvbnRleHQpOwotICAgIG1fY29u
dGV4dHNSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UucmVtb3ZlKGNvbnRleHQpOwotICAgIAotICAg
IHVwZGF0ZUhpZ2hQZXJmb3JtYW5jZVN0YXRlKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjp1cGRhdGVIaWdoUGVyZm9ybWFuY2VTdGF0ZSgpCi17Ci0jaWYgUExB
VEZPUk0oTUFDKQotICAgIGlmICghaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgaWYgKG1fY29udGV4dHNSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2Uu
c2l6ZSgpKSB7Ci0gICAgICAgIAotICAgICAgICBpZiAobV9kaXNhYmxlSGlnaFBlcmZvcm1hbmNl
R1BVVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdMLCAiQ2FuY2VsIHBl
bmRpbmcgdGltZXIgZm9yIHR1cm5pbmcgb2ZmIGhpZ2gtcGVyZm9ybWFuY2UgR1BVLiIpOwotICAg
ICAgICAgICAgbV9kaXNhYmxlSGlnaFBlcmZvcm1hbmNlR1BVVGltZXIuc3RvcCgpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKCFtX3JlcXVlc3RpbmdIaWdoUGVyZm9ybWFuY2UpIHsKLSAgICAg
ICAgICAgIExPRyhXZWJHTCwgIlJlcXVlc3QgdGhlIGhpZ2gtcGVyZm9ybWFuY2UgR1BVLiIpOwot
ICAgICAgICAgICAgbV9yZXF1ZXN0aW5nSGlnaFBlcmZvcm1hbmNlID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGlmIChhdXRvKiBzaW5nbGV0b24gPSBTd2l0Y2hpbmdHUFVDbGllbnQ6OnNpbmdsZXRvbklm
RXhpc3RzKCkpCi0gICAgICAgICAgICAgICAgc2luZ2xldG9uLT5yZXF1ZXN0SGlnaFBlcmZvcm1h
bmNlR1BVKCk7Ci0gICAgICAgIH0KLQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIERvbid0IGlt
bWVkaWF0ZWx5IHR1cm4gb2ZmIHRoZSBoaWdoLXBlcmZvcm1hbmNlIEdQVS4gVGhlIHVzZXIgbWln
aHQgYmUKLSAgICAgICAgLy8gc3dhcHBpbmcgYmFjayBhbmQgZm9ydGggYmV0d2VlbiB0YWJzIG9y
IHdpbmRvd3MsIGFuZCB3ZSBkb24ndCB3YW50IHRvIGNhdXNlCi0gICAgICAgIC8vIGNodXJuIGlm
IHdlIGNhbiBhdm9pZCBpdC4KLSAgICAgICAgaWYgKCFtX2Rpc2FibGVIaWdoUGVyZm9ybWFuY2VH
UFVUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR0wsICJTZXQgYSB0aW1l
ciB0byByZWxlYXNlIHRoZSBoaWdoLXBlcmZvcm1hbmNlIEdQVS4iKTsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBFeHBvc2UgdGhpcyB2YWx1ZSBhcyBhIFNldHRpbmcsIHdoaWNoIHdvdWxkIHJlcXVp
cmUgdGhpcyBjbGFzcwotICAgICAgICAgICAgLy8gdG8gcmVmZXJlbmNlIGEgZnJhbWUsIHBhZ2Ug
b3IgZG9jdW1lbnQuCi0gICAgICAgICAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB0aW1lVG9LZWVw
SGlnaFBlcmZvcm1hbmNlR1BVQWxpdmUgeyAxMF9zIH07Ci0gICAgICAgICAgICBtX2Rpc2FibGVI
aWdoUGVyZm9ybWFuY2VHUFVUaW1lci5zdGFydE9uZVNob3QodGltZVRvS2VlcEhpZ2hQZXJmb3Jt
YW5jZUdQVUFsaXZlKTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotfQotCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6ZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVy
RmlyZWQoKQotewotICAgIGlmIChtX2NvbnRleHRzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLnNp
emUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9yZXF1ZXN0aW5nSGlnaFBlcmZvcm1hbmNl
ID0gZmFsc2U7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChhdXRvKiBzaW5nbGV0b24gPSBT
d2l0Y2hpbmdHUFVDbGllbnQ6OnNpbmdsZXRvbklmRXhpc3RzKCkpCi0gICAgICAgIHNpbmdsZXRv
bi0+cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpOwotI2VuZGlmCi19Ci0KIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpyZWN5Y2xlQ29udGV4dElmTmVjZXNzYXJ5KCkKIHsK
ICAgICBpZiAoaGFzVG9vTWFueUNvbnRleHRzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTE1hbmFnZXIuaAppbmRleCAzYWY4YTA1MmFlOGUyYTE1ZDVjMDUxNzg0ZmIw
ODU0NWVlOWExZDY0Li5jMDEwNzZjZGFhYjIxMDNlOGViMWMzODZiZTc2MDEwMDlmNzcxYWQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oCkBAIC0yNSw4
ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKICNpZiBQTEFURk9S
TShNQUMpCkBAIC0zOCw1MiArMzYsMjcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY29uc3QgdW5z
aWduZWQgTWF4Q29udGV4dHMgPSAxNjsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7
Ci1jbGFzcyBIb3N0V2luZG93OwotCi11c2luZyBQbGF0Zm9ybURpc3BsYXlJRCA9IHVpbnQzMl90
OwotCi0jaWYgSEFWRShBUFBMRV9HUkFQSElDU19DT05UUk9MKQotV0VCQ09SRV9FWFBPUlQgYm9v
bCBoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCk7Ci0jZW5kaWYKIAogY2xhc3MgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xNYW5hZ2VyIHsKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyPjsKIHB1YmxpYzoKICAgICBzdGF0aWMgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xNYW5hZ2VyJiBzaGFyZWRNYW5hZ2VyKCk7CiAgICAgCi0gICAgdm9pZCBhZGRD
b250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgSG9zdFdpbmRvdyopOworICAgIHZvaWQg
YWRkQ29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopOwogICAgIHZvaWQgcmVtb3ZlQ29u
dGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopOwotCi0gICAgSG9zdFdpbmRvdyogaG9zdFdp
bmRvd0ZvckNvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKSBjb25zdDsKLSAgICAKLSAg
ICB2b2lkIGFkZENvbnRleHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqKTsKLSAgICB2b2lkIHJlbW92ZUNvbnRleHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFu
Y2UoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKICAgICAKICAgICB2b2lkIHJlY3ljbGVDb250
ZXh0SWZOZWNlc3NhcnkoKTsKICAgICBib29sIGhhc1Rvb01hbnlDb250ZXh0cygpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGV4dHMuc2l6ZSgpID49IE1heENvbnRleHRzOyB9CiAgICAgCi0gICAgdm9p
ZCB1cGRhdGVBbGxDb250ZXh0cygpOwotCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgc2Ny
ZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBjb25zdCBIb3N0V2luZG93Kik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGxheVdhc1JlY29uZmlndXJlZChDR0RpcmVj
dERpc3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzLCB2b2lkKik7CisgICAgdm9p
ZCBkaXNwbGF5V2FzUmVjb25maWd1cmVkKCk7CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyKCkKLSAgICAgICAgOiBtX2Rpc2FibGVIaWdo
UGVyZm9ybWFuY2VHUFVUaW1lcigqdGhpcywgJkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
cjo6ZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVyRmlyZWQpCi0gICAgewotICAgIH0KLQot
ICAgIHZvaWQgdXBkYXRlSGlnaFBlcmZvcm1hbmNlU3RhdGUoKTsKLSAgICB2b2lkIGRpc2FibGVI
aWdoUGVyZm9ybWFuY2VHUFVUaW1lckZpcmVkKCk7CisgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyKCkgPSBkZWZhdWx0OwogCiAgICAgVmVjdG9yPEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKj4gbV9jb250ZXh0czsKLSAgICBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwg
SG9zdFdpbmRvdyo+IG1fY29udGV4dFdpbmRvd01hcDsKLSAgICBIYXNoU2V0PEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKj4gbV9jb250ZXh0c1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZTsKLSAgICAK
LSAgICBUaW1lciBtX2Rpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lcjsKLSAgICBib29sIG1f
cmVxdWVzdGluZ0hpZ2hQZXJmb3JtYW5jZSB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZmU3MjBlOTM1ZWU5ZjMyYWNjN2Q4ZDhlY2I1ZjUz
MWFjYjFkOWYyMS4uMWY5NTFiN2U5NGVmN2FlNDQwOGY0NWIxYmIxNTZhMGQzNTdhNGFiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzIwLDcgKzMyMCw3IEBACiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NoZWNrc01hYy5oIgogI2luY2x1ZGUgIk5T
U2Nyb2xsZXJJbXBEZXRhaWxzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVNYWMuaCIKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQZXJmb3Jt
YW5jZUdQVU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9y
bWFuY2VHUFVNYW5hZ2VyLmgKaW5kZXggNTU1NmNiZDQ0ZjBmNTQ3Y2Q2NWQzZGU0MWU1MjA2NWY4
OTNkM2FhZS4uYWM2MjE5M2FjZmQ1YzJiNjQyYTU3NWFmMzQ3ZjVlNTJlMDJmZTY1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BV
TWFuYWdlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW5jbHVk
ZSA8T3BlbkdML0NHTFR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAg
LTQ0LDEzICs0NSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVQcm9jZXNzUmVxdWlyaW5n
SGlnaFBlcmZvcm1hbmNlKFdlYlByb2Nlc3NQcm94eSopOwogCiBwcml2YXRlOgotICAgIEhpZ2hQ
ZXJmb3JtYW5jZUdQVU1hbmFnZXIoKSA9IGRlZmF1bHQ7CisgICAgSGlnaFBlcmZvcm1hbmNlR1BV
TWFuYWdlcigpOwogICAgIH5IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyKCk7Ci0KICAgICB2b2lk
IHVwZGF0ZVN0YXRlKCk7CiAKICAgICBIYXNoU2V0PFdlYlByb2Nlc3NQcm94eSo+IG1fcHJvY2Vz
c2VzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlOwogICAgIENHTFBpeGVsRm9ybWF0T2JqIG1fcGl4
ZWxGb3JtYXRPYmogeyBudWxscHRyIH07CisgICAgV2ViQ29yZTo6VGltZXIgbV91cGRhdGVTdGF0
ZVRpbWVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5tbQppbmRleCBhOTZmYzNkMTEzNzk4ZTc5YWZj
MGZkYjYyNjVmZGRhZmQwM2QwYWUwLi41OWRmZjhiMjNjODBjMDI2NWJlZTUxOWY4NDYwNzM4ODRm
NjE1Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGlnaFBlcmZv
cm1hbmNlR1BVTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGln
aFBlcmZvcm1hbmNlR1BVTWFuYWdlci5tbQpAQCAtMjksNyArMjksNyBAQAogI2lmIFBMQVRGT1JN
KE1BQykKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDaGVj
a3NNYWMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL09wZW5HTFNvZnRMaW5rQ29jb2EuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC00NCw2ICs0NCwxMyBAQCBIaWdoUGVyZm9ybWFuY2VHUFVNYW5h
Z2VyJiBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpzaW5nbGV0b24oKQogICAgIHJldHVybiBz
aGFyZWRNYW5hZ2VyOwogfQogCitIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpIaWdoUGVyZm9y
bWFuY2VHUFVNYW5hZ2VyKCkKKyAgICA6IG1fdXBkYXRlU3RhdGVUaW1lcigqdGhpcywgJkhpZ2hQ
ZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnVwZGF0ZVN0YXRlKQoreworfQorCitIaWdoUGVyZm9ybWFu
Y2VHUFVNYW5hZ2VyOjp+SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcigpID0gZGVmYXVsdDsKKwog
dm9pZCBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjphZGRQcm9jZXNzUmVxdWlyaW5nSGlnaFBl
cmZvcm1hbmNlKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKIHsKICAgICBpZiAoIVdlYkNvcmU6
Omhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKSkKQEAgLTY1LDcgKzcyLDggQEAgdm9pZCBIaWdoUGVy
Zm9ybWFuY2VHUFVNYW5hZ2VyOjpyZW1vdmVQcm9jZXNzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNl
KFdlYlByb2Nlc3MKIAogICAgIGlmIChtX3Byb2Nlc3Nlc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5j
ZS5yZW1vdmUocHJvY2VzcykpIHsKICAgICAgICAgTE9HKFdlYkdMLCAiSGlnaFBlcmZvcm1hbmNl
R1BVTWFuYWdlcjo6cmVtb3ZlUHJvY2Vzc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZSgpIC0gcmVt
b3ZpbmcgcHJvY2VzcyAlcCIsIHByb2Nlc3MpOwotICAgICAgICB1cGRhdGVTdGF0ZSgpOworICAg
ICAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB0aW1lVG9LZWVwSGlnaFBlcmZvcm1hbmNlR1BVQWxp
dmUgeyAxMF9zIH07CisgICAgICAgIG1fdXBkYXRlU3RhdGVUaW1lci5zdGFydE9uZVNob3QodGlt
ZVRvS2VlcEhpZ2hQZXJmb3JtYW5jZUdQVUFsaXZlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtNzQsNiArODIsOCBAQCB2b2lkIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnJlbW92
ZVByb2Nlc3NSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoV2ViUHJvY2VzcwogCiB2b2lkIEhpZ2hQ
ZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnVwZGF0ZVN0YXRlKCkKIHsKKyAgICBpZiAobV91cGRhdGVT
dGF0ZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdXBkYXRlU3RhdGVUaW1lci5zdG9wKCk7
CiAgICAgaWYgKG1fcHJvY2Vzc2VzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLnNpemUoKSkgewog
ICAgICAgICBpZiAoIW1fcGl4ZWxGb3JtYXRPYmopIHsKICAgICAgICAgICAgIExPRyhXZWJHTCwg
IkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIgLSB0dXJuaW5nIG9uIGhpZ2gtcGVyZm9ybWFuY2Ug
R1BVLiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwCmluZGV4IDQ0
YzZiNDMyZTdkNWM1ZGFhNzhkOGQwMmFiNzdjNzkwYzE0YTkzNGEuLmMxYzJhMmViZGM3Nzg3N2Ux
N2Y3YzE5MjUzMzU5Mzg1ZGFmNzg0N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN3aXRjaGluZ0dQ
VUNsaWVudC5jcHAKQEAgLTQzLDEyICs0MywxOSBAQCBXZWJTd2l0Y2hpbmdHUFVDbGllbnQmIFdl
YlN3aXRjaGluZ0dQVUNsaWVudDo6c2luZ2xldG9uKCkKIAogdm9pZCBXZWJTd2l0Y2hpbmdHUFVD
bGllbnQ6OnJlcXVlc3RIaWdoUGVyZm9ybWFuY2VHUFUoKQogeworICAgIG1fcmVxdWVzdHMrKzsK
KyAgICBpZiAobV9yZXF1ZXN0cyAhPSAxKQorICAgICAgICByZXR1cm47CiAgICAgTE9HKFdlYkdM
LCAiV2ViU3dpdGNoaW5nR1BVQ2xpZW50OjpyZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCkgZnJv
bSBXZWJQcm9jZXNzIik7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpSZXF1ZXN0SGln
aFBlcmZvcm1hbmNlR1BVKCksIDApOwogfQogCiB2b2lkIFdlYlN3aXRjaGluZ0dQVUNsaWVudDo6
cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpCiB7CisgICAgQVNTRVJUKG1fcmVxdWVzdHMpOwor
ICAgIG1fcmVxdWVzdHMtLTsKKyAgICBpZiAobV9yZXF1ZXN0cykKKyAgICAgICAgcmV0dXJuOwog
ICAgIExPRyhXZWJHTCwgIldlYlN3aXRjaGluZ0dQVUNsaWVudDo6cmVsZWFzZUhpZ2hQZXJmb3Jt
YW5jZUdQVSgpIGZyb20gV2ViUHJvY2VzcyIpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6UmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN3
aXRjaGluZ0dQVUNsaWVudC5oCmluZGV4IDIwZWIyZWUyNTcxZmViYTJkYTQ4NGYyMTg3Nzc4YjEy
OTQwYWU1MzMuLmJiODFkOGE2MDhhYjFmZGE0NWYwN2VhN2IzOGE2MzQ1MTllNzg0MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dp
dGNoaW5nR1BVQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuaApAQCAtMzIsOSArMzIsMTAgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJTd2l0Y2hpbmdHUFVDbGllbnQgOiBwdWJsaWMgV2Vi
Q29yZTo6U3dpdGNoaW5nR1BVQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViU3dpdGNo
aW5nR1BVQ2xpZW50JiBzaW5nbGV0b24oKTsKLSAgICAKK3ByaXZhdGU6CiAgICAgdm9pZCByZXF1
ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWxlYXNlSGlnaFBl
cmZvcm1hbmNlR1BVKCkgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgbV9yZXF1ZXN0cyB7IDAgfTsK
IH07CiAKIH0K
</data>
<flag name="commit-queue"
          id="436013"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418138</attachid>
            <date>2021-01-22 04:35:30 -0800</date>
            <delta_ts>2021-01-22 08:12:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220843-20210122143526.patch</filename>
            <type>text/plain</type>
            <size>59227</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTBlMTg1NzBmN2QyNTI1
MWZiMTY2MzllOGI1YTdjM2Q1OTU4MDRmMS4uMzc5YjNmMDQwODZjZDliNzFmODkzZDZiMDljNWFj
MmJiNzdhY2Y3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTAxLTIyICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgcG93ZXIg
cHJlZmVyZW5jZSBhbmQgZGlzY3JldGUvaW50ZXJuYWwgZ3B1IHNlbGVjdGlvbiBpbXBsZW1lbnRl
ZCBpbmNvcnJlY3RseSB3aXRoIEFOR0xFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjA4NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgQU5HTEUgZXh0ZW5zaW9uIEVHTF9BTkdMRV9wb3dlcl9wcmVm
ZXJlbmNlIHRvIHNpZ25hbCB0byBBTkdMRSB0aGF0IHRoZSB1bmRlcmx5aW5nCisgICAgICAgIENH
TCBjb250ZXh0IHNob3VsZCBiZSB1cGRhdGVkIGFzIGEgcmVzcG9uc2UgdG8gZGlzcGxheSByZWNv
bmZpZ3VyYXRpb24gc2lnbmFsLgorICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCBBTkdMRSBzdGF0
ZSBzdGF5cyBjb25zaXN0ZW50IHdpdGggdGhlIGFjdHVhbCBDR0wgY29udGV4dCBiZWhhdmlvciwg
YXMKKyAgICAgICAgd2UgZG9uJ3QgY2hhbmdlIHRoZSBjb250ZXh0IGJlaGluZCBBTkdMRSdzIGJh
Y2suCisKKyAgICAgICAgUmVtb3ZlIHRoZSBmZWF0dXJlIHdoZXJlIHRoZSBjb250ZXh0IEdQVSBp
cyBzZWxlY3RlZCBiYXNlZCBvbiB0aGUgZGlzcGxheSB0aGUgd2luZG93IGlzCisgICAgICAgIG9u
LiBUaGlzIGNhbm5vdCB3b3JrIHdpdGggdGhlIGxvZ2ljIG9mICJwb3dlclByZWZlcmVuY2UgPSAi
aGlnaC1wZXJmb3JtYW5jZSIgZ29lcyB0bworICAgICAgICBkaXNjcmV0ZSBHUFUiLiBBbHNvLCB0
aGlzIGNhbm5vdCB3b3JrIHdpdGggQU5HTEUgYXQgYWxsLCBzaW5jZSBhbGwgY29udGV4dHMgYXJl
IGJhY2tlZAorICAgICAgICBieSBhIHNpbmdsZSBwbGF0Zm9ybSBjb250ZXh0LiBUaHVzIGFsbCBj
b250ZXh0cyB3aWxsIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIEdQVS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgZHVlIHRvIHRoZSB0ZXN0IHJ1bm5lciBtaXNzaW5nIGZlYXR1cmVzLiBUaGUgYnVn
IGJsb2NrZXJzIHRyYWNrIHRoZSB0ZXN0aW5nLgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21h
a2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0hpZ2hQZXJmb3JtYW5jZUNv
bnRleHQpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250
ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZGlzcGxheVdhc1JlY29uZmlndXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjphdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6
Omhhc011eENhcGFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6aGFzTG93QW5kSGlnaFBvd2Vy
R1BVcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFj
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1Njb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oLgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6U2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0Ojp+U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0OjpvcGVyYXRv
cj0pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6
YWNxdWlyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNs
aWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnJlbW92ZUNv
bnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisK
IDIwMjEtMDEtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IFZhbGlkYXRlIEl0ZW1IYW5kbGVzIHdoZW4gZGVjb2RpbmcgdGhlbSBpbiBHUFVQcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDk3ODkwZWI1Y2NhYTEyODhhMWRjNjVjODc1OWQ1ZGY1YmNhMDlhMDkuLjM1MmIx
ZjdlZDhkMTk4ZmQwYjI5ZTQ3ZWZhN2E1YTIzOTNmNzliYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjMgQEAKKzIwMjEtMDEtMjIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWJHTCBwb3dlciBwcmVmZXJlbmNlIGFuZCBkaXNjcmV0ZS9pbnRlcm5hbCBn
cHUgc2VsZWN0aW9uIGltcGxlbWVudGVkIGluY29ycmVjdGx5IHdpdGggQU5HTEUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDg0MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIGhpZ2gtcGVy
Zm9ybWFuY2UgR1BVIHNodXRkb3duIHRpbWVyIGZyb20gaW5kaXZpZHVhbCB3ZWIgcHJvY2Vzc2Vz
IHRvIHRoZSBtYWluIGNsYXNzCisgICAgICAgIGluIHRoZSB1aSBwcm9jZXNzLiBUaGlzIHNpbXBs
aWZpZXMgdGhlIGltcGxlbWVudGF0aW9uIGFuZCByZWR1Y2VzIHRoZSBudW1iZXIgb2YgdGltZXJz
LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpIaWdoUGVyZm9ybWFu
Y2VHUFVNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdl
cjo6cmVtb3ZlUHJvY2Vzc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZSk6CisgICAgICAgIChXZWJL
aXQ6OkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlcXVlc3RIaWdoUGVyZm9y
bWFuY2VHUFUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlbGVh
c2VIaWdoUGVyZm9ybWFuY2VHUFUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5oOgorCiAyMDIxLTAxLTIxICBQZW5nIExpdSAg
PHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgUGlQIHZpZGVvIHN1YnRpdGxlcyBzdG9w
IHVwZGF0aW5nIHdoZW4gU2FmYXJpIGlzIGJhY2tncm91bmRlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQppbmRleCBhYzcwMTU0OTk3OTllNGZiNGVlMmEwZGUwMWI0MzUxMmIwOWExZjhlLi5jYWQy
NjQ0OWM3NGM4NWNhY2I5NjViMzljOGZiNzUyOTAxZmNhNmYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtMzQwLDYgKzM0MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0Zsb2F0U2l6ZU1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0NoZWNrc01hYy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9JbnRQb2ludE1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggM2JlMTc1
OGNkODc1NTM5YWM3ZDJjNmRhYTA3OGYwY2IzMDJjODcxMy4uZTg3ZDRkZDA3OWE1NWY2OWQyMTcz
YmRmMTEyYzJlZjlmOWE2ZWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MTgsNiAr
NDE4LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRmxvYXRTaXplTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01h
Yy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSW1hZ2VNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRQb2ludE1hYy5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM4MzgwZTFiNTZhODg1OTJmMzk0YjdmNjM4ZTM4YWUzY2Y1ODk0N2MuLmJmNjViZGEzOTkx
ZTYwZGQxOWY2ZmRlNzg5YWYyODBkNGVhZjYwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIyNTksNiArMjI1OSw5IEBACiAJ
CTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5
MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JC
MzRBMTcyNTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2
MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi87
IH07CiAJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJh
Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTdCQjY4MEIyMjVCQTBENEEwMDJCODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2
ODBCMDI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCQjY4
MEI2MjVCQTFBRTIwMDJCODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2ODBCNDI1
QkExQUUxMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyB9
OworCQk3QkI2ODBCQTI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjY4MEI4MjVCQTFC
RTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkwNkZCQjRGMEYyQyAvKiBK
U1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpTU1ZHR3JhcGhpY3NFbGVt
ZW50LmggKi87IH07CiAJCTdDMDI5QzZFMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAyOUM2RDI0
OTNDOEY4MDAyNjgyMDQgLyogQ29sb3JUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMTg0M0ZFMUM4QjcyODMwMDJFQjk3MyAvKiBBdXRv
ZmlsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mx
ODQzRkMxQzhCNzI4MzAwMkVCOTczIC8qIEF1dG9maWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjk0LDYgKzEwMjk3LDEwIEBACiAJCTdC
QjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDUyNTM3
NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250
ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JC
NjgwQjAyNUJBMEQ0QTAwMkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNl
R1BVUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkI2ODBCNDI1QkEx
QUUxMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQjY4MEI3MjVCQTFCRTMwMDJCODcz
OCAvKiBHcmFwaGljc0NoZWNrc01hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCQjY4MEI4MjVCQTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1QjI1NzYzQjhEMDBFODVEOTggLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzAxMUYzRDI0RkFEMzYwMDA1QkVGMTAgLyogU2V0dGluZ3MuY3BwLmVyYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBT
ZXR0aW5ncy5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAxMUYzRTI0
RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI2NDk2LDExICsyNjUwMywxNSBAQAogCQkJCUIyNzUzNTREMEIwNTM4MTQwMDJD
RTY0RiAvKiBGbG9hdFNpemVNYWMubW0gKi8sCiAJCQkJQjJBRkZDNzUwRDAwQTVDMTAwMzAwNzRE
IC8qIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwICovLAogCQkJCUIyQUZGQzc2MEQwMEE1QzEw
MDMwMDc0RCAvKiBGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggKi8sCisJCQkJN0JCNjgwQjcyNUJB
MUJFMzAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmNwcCAqLywKKwkJCQk3QkI2ODBCODI1
QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLywKIAkJCQlCMjc1MzU4RDBC
MDUzQTY2MDAyQ0U2NEYgLyogSWNvbk1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RTBCMDUzODE0MDAy
Q0U2NEYgLyogSW1hZ2VNYWMubW0gKi8sCiAJCQkJQjI3NTM1NEYwQjA1MzgxNDAwMkNFNjRGIC8q
IEludFBvaW50TWFjLm1tICovLAogCQkJCUIyNzUzNTUxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRT
aXplTWFjLm1tICovLAogCQkJCTJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAvKiBQREZEb2N1bWVu
dEltYWdlTWFjLm1tICovLAorCQkJCTdCQjY4MEI0MjVCQTFBRTEwMDJCODczOCAvKiBTY29wZWRI
aWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8sCisJCQkJN0JCNjgwQjAyNUJBMEQ0QTAwMkI4
NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLywKIAkJCQkxNjNFODhG
NTExOEEzOUQyMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgKi8sCiAJCQkJ
QzExQTlFRDIyMTQwNTc4QjAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi8sCiAJ
CQkJQzExQTlFQ0QyMTQwM0E1QzAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5oICovLApA
QCAtMzIyMzMsNiArMzIyNDQsNyBAQAogCQkJCUJDNTNDNUY1MERBNTZCOTIwMDIxRUI1RCAvKiBH
cmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjQwRDAwQkYyMjAwNzFCNzgyIC8q
IEdyYWRpZW50QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0ODFGMDQxNDZCNUM2
QjAwQUE3ODM0IC8qIEdyYWRpZW50SW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCQjY4MEJB
MjVCQTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjJBMDE1QTkwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM0OTA3RTQxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENH
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTNERTg3MDIzQTk2OTczMDA4RkM0N0IgLyogR3JhcGhp
Y3NDb250ZXh0R0wuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ0NTUsNiArMzQ0NjcsOCBAQAogCQkJ
CTQ5RTkxMUNCMEVGODZENDcwMDlEMENBRiAvKiBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNURGRThGNTcwRDE2NDc3QzAwNzZFOTM3IC8qIFNjaGVkdWxlZEFj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJEMEJGOTMxMkE0MkJGNTAwNzJGRDQzIC8qIFNj
b3BlZEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCQjY4MEI2MjVCQTFBRTIwMDJC
ODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk3QkI2ODBCMjI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BV
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQzAxQkUwQzI3NERBQzAwOUY0RUM5IC8q
IFNjcmVlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzFFMUQyMzYyMDNERjE1NDAwNTg0NjY1IC8q
IFNjcmVlblByb3BlcnRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NEQ4MkMxMTFEMzQ3NDgw
MDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAppbmRleCA1NzhlMDIxODBjNDZmM2RiYzRmZmZkMGFmMGMzNTNmMzk0ODIwZGJl
Li5lNzdkODBhODUyZmI1YWM1ZGQ3MWNlM2Y5N2NjZjY2NjQ2MWNlNTZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcApAQCAtNjQyLDcgKzY0Miw3IEBAIHByaXZhdGU6CiAKIHN0YXRpYyBib29sIGlzSGlnaFBl
cmZvcm1hbmNlQ29udGV4dChjb25zdCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+JiBjb250ZXh0
KQogewotICAgIHJldHVybiBjb250ZXh0LT5wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24o
KSA9PSBXZWJHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOworICAgIHJldHVybiBj
b250ZXh0LT5jb250ZXh0QXR0cmlidXRlcygpLnBvd2VyUHJlZmVyZW5jZSA9PSBXZWJHTFBvd2Vy
UHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKENh
bnZhc0Jhc2UmIGNhbnZhcywgV2ViR0xDb250ZXh0QXR0cmlidXRlcyYgYXR0cmlidXRlcywgV2Vi
R0xWZXJzaW9uIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggYjcxMGU3MTVhNjZkY2Fj
NTY3NDJkYjZiYmVhNzQxZDZmODYzNDJiMy4uNGE1NWY5ZGExYzViNTFmNmMyNGEwYjBlNWM1YzZm
YmIzZjU0OWM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtNjcsMTAgKzY3LDYgQEAKICNp
bmNsdWRlICJEYXRlVGltZUNob29zZXIuaCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoV0VCR0wpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
LmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwpAQCAtNTQ4LDEwICs1NDQsNiBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlk
Q2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3BhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJ
RCwgbm9taW5hbEZyYW1lSW50ZXJ2YWwpOwotCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
V0VCR0wpCi0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2Vy
KCkuc2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCwgdGhpcyk7Ci0jZW5kaWYKIH0KIAogYm9vbCBD
aHJvbWU6OnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4
IGEzMGNlZTVmYWI2NDc5MmFjYjhjNDVlMWVlNTBlMDBjZDIyYzJkZjQuLjJhZDE0N2Y2ZWFiOTRj
ZjNiZGYwM2JjNmZkYzIxMTdkNGFlMDA1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMTI2Myw4ICsxMjYzLDYg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wp
ID0gMDsKIAotICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93
ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgPSAwOwotCiAgICAgdmlydHVhbCBi
b29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCA9IDA7CiAKICAgICAvLyBTeW50aGVzaXplcyBh
biBPcGVuR0wgZXJyb3Igd2hpY2ggd2lsbCBiZSByZXR1cm5lZCBmcm9tIGEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAppbmRleCA1NTJkODUzOWI2OTUwMGNmMTE2OTY4
MGQ0YjVjNjI4NTg1OGI3NzM3Li5lNTBmOGZiNGM1YzM2NzA0NjFjODEzNDVlNDQzNzNjNmE0ZGEx
MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC00OSwx
MiArNDksNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRDb250
ZXh0VmlzaWJpbGl0eShib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLUdyYXBoaWNz
Q29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Ojpwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdAotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQogYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFdF
QkdMMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCmluZGV4IDI0NzFkNGUy
NWM5YWEyMDBlYzc0M2IxZmUwYzY0NjhiMGM5YTUwODMuLjI4OGMyZWE4YWQzOWU4OWI2OTY5ZmQw
YjIxNmI4YjY3YjBiZWRhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
aApAQCAtNjEsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IGZpbmFsOwogICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZp
bmFsOwogICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7Ci0gICAgR3Jh
cGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0
aW9uKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKICAgICBib29sIGxheWVy
Q29tcG9zaXRlZCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW0KaW5kZXggNjU5ZmZmZjEyODRjMDJhMjIzMjIxMjA2ZWI4ZjE2ZjJhODEyYjVh
Yy4uNmEzMGQ5ODZhYmY2MDg2OTY0OGU3NDU4MWE3MGI5Y2JmODIxZjViNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgpAQCAtMzIsOSArMzIsNyBAQAog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgogI2ltcG9ydCAiR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgogI2ltcG9ydCAi
TG9nZ2luZy5oIgotI2ltcG9ydCAiT3BlbkdMU29mdExpbmtDb2NvYS5oIgogI2ltcG9ydCAiUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkLmgiCiAjaW1w
b3J0ICJXZWJHTExheWVyLmgiCkBAIC00MiwxMSArNDAsNiBAQAogI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBM
QVRGT1JNKE1BQykKLSNpbXBvcnQgIlNjcmVlblByb3BlcnRpZXMuaCIKLSNpbXBvcnQgPE9wZW5H
TC9DR0xSZW5kZXJlcnMuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQ1YuaCIKICNlbmRpZgpAQCAt
MTUxLDE3ICsxNDQsMTcgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEcKICAgICBpZiAoIWNvbnRl
eHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRl
eHQuZ2V0KCksIGhvc3RXaW5kb3cpOworICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5nZXQoKSk7CiAKICAgICByZXR1
cm4gY29udGV4dDsKIH0KIAogUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFy
ZWRDb250ZXh0KQogewotICAgIGF1dG8gaG9zdFdpbmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhvc3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRD
b250ZXh0KTsKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywg
JnNoYXJlZENvbnRleHQsIG51bGxwdHIpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5wdHIoKSwgaG9zdFdp
bmRvdyk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTChzaGFyZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIG51bGxwdHIsICZzaGFy
ZWRDb250ZXh0LCBudWxscHRyKSk7CisKKyAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRleHQucHRyKCkpOwogCiAgICAgcmV0
dXJuIGNvbnRleHQ7CiB9CkBAIC0xNzEsNzIgKzE2NCwxNCBAQCBSZWY8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGNv
bnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0
cnMsIG51bGxwdHIsIG51bGxwdHIsIHN3YXBDaGFpbikpOwogfQogCi0jaWYgUExBVEZPUk0oTUFD
KSAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGQgYmUganVzdCBlbmFibGVkIC0gc2VlIDxy
ZGFyOi8vNTMwNjI3OTQ+LgotCi1zdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29u
dGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiwgSU9S
ZWdpc3RyeUdQVUlEIHByZWZlcnJlZEdQVUlEKQotewotICAgIC8vIFdoZW4gdGhlIFdlYlByb2Nl
c3MgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIFdpbmRvd1NlcnZlciwgdGhlcmUgaXMgbm8g
d2F5IGZvciBPcGVuR0wgdG8gdGVsbCB3aGljaCBHUFUgaXMgY29ubmVjdGVkIHRvIGEgZGlzcGxh
eS4KLSAgICAvLyBPbiAxMC4xMyssIGZpbmQgdGhlIHZpcnR1YWwgc2NyZWVuIHRoYXQgY29ycmVz
cG9uZHMgdG8gdGhlIHByZWZlcnJlZCBHUFUgYnkgaXRzIHJlZ2lzdHJ5SUQuCi0gICAgLy8gQ0dM
U2V0VmlydHVhbFNjcmVlbiBjYW4gdGhlbiBiZSB1c2VkIHRvIHRlbGwgT3BlbkdMIHdoaWNoIEdQ
VSBpdCBzaG91bGQgYmUgdXNpbmcuCi0KLSAgICBpZiAoIWNvbnRleHRPYmogfHwgIXByZWZlcnJl
ZEdQVUlEKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHTGludCB2aXJ0dWFsU2NyZWVuQ291bnQg
PSAwOwotICAgIENHTEVycm9yIGVycm9yID0gQ0dMRGVzY3JpYmVQaXhlbEZvcm1hdChwaXhlbEZv
cm1hdE9iaiwgMCwga0NHTFBGQVZpcnR1YWxTY3JlZW5Db3VudCwgJnZpcnR1YWxTY3JlZW5Db3Vu
dCk7Ci0gICAgQVNTRVJUKGVycm9yID09IGtDR0xOb0Vycm9yKTsKLQotICAgIEdMaW50IGZpcnN0
QWNjZWxlcmF0ZWRTY3JlZW4gPSAtMTsKLQotICAgIGZvciAoR0xpbnQgdmlydHVhbFNjcmVlbiA9
IDA7IHZpcnR1YWxTY3JlZW4gPCB2aXJ0dWFsU2NyZWVuQ291bnQ7ICsrdmlydHVhbFNjcmVlbikg
ewotICAgICAgICBHTGludCBkaXNwbGF5TWFzayA9IDA7Ci0gICAgICAgIGVycm9yID0gQ0dMRGVz
Y3JpYmVQaXhlbEZvcm1hdChwaXhlbEZvcm1hdE9iaiwgdmlydHVhbFNjcmVlbiwga0NHTFBGQURp
c3BsYXlNYXNrLCAmZGlzcGxheU1hc2spOwotICAgICAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5v
RXJyb3IpOwotCi0gICAgICAgIGF1dG8gZ3B1SUQgPSBncHVJREZvckRpc3BsYXlNYXNrKGRpc3Bs
YXlNYXNrKTsKLQotICAgICAgICBpZiAoZ3B1SUQgPT0gcHJlZmVycmVkR1BVSUQpIHsKLSAgICAg
ICAgICAgIGVycm9yID0gQ0dMU2V0VmlydHVhbFNjcmVlbihjb250ZXh0T2JqLCB2aXJ0dWFsU2Ny
ZWVuKTsKLSAgICAgICAgICAgIEFTU0VSVChlcnJvciA9PSBrQ0dMTm9FcnJvcik7Ci0gICAgICAg
ICAgICBMT0coV2ViR0wsICJDb250ZXh0ICglcCkgc2V0IHRvIEdQVSB3aXRoIElEOiAoJWxsZCku
IiwgY29udGV4dE9iaiwgZ3B1SUQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKGZpcnN0QWNjZWxlcmF0ZWRTY3JlZW4gPCAwKSB7Ci0gICAgICAgICAgICBH
TGludCBpc0FjY2VsZXJhdGVkID0gMDsKLSAgICAgICAgICAgIGVycm9yID0gQ0dMRGVzY3JpYmVQ
aXhlbEZvcm1hdChwaXhlbEZvcm1hdE9iaiwgdmlydHVhbFNjcmVlbiwga0NHTFBGQUFjY2VsZXJh
dGVkLCAmaXNBY2NlbGVyYXRlZCk7Ci0gICAgICAgICAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5v
RXJyb3IpOwotICAgICAgICAgICAgaWYgKGlzQWNjZWxlcmF0ZWQpCi0gICAgICAgICAgICAgICAg
Zmlyc3RBY2NlbGVyYXRlZFNjcmVlbiA9IHZpcnR1YWxTY3JlZW47Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICAvLyBObyByZWdpc3RyeUlEIG1hdGNoIGZvdW5kOyBzZXQgdG8gZmlyc3QgaGFyZHdh
cmUtYWNjZWxlcmF0ZWQgdmlydHVhbCBzY3JlZW4uCi0gICAgaWYgKGZpcnN0QWNjZWxlcmF0ZWRT
Y3JlZW4gPj0gMCkgewotICAgICAgICBlcnJvciA9IENHTFNldFZpcnR1YWxTY3JlZW4oY29udGV4
dE9iaiwgZmlyc3RBY2NlbGVyYXRlZFNjcmVlbik7Ci0gICAgICAgIEFTU0VSVChlcnJvciA9PSBr
Q0dMTm9FcnJvcik7Ci0gICAgICAgIExPRyhXZWJHTCwgIlJlZ2lzdHJ5SUQgKCVsbGQpIG5vdCBt
YXRjaGVkOyBDb250ZXh0ICglcCkgc2V0IHRvIHZpcnR1YWwgc2NyZWVuICglZCkuIiwgcHJlZmVy
cmVkR1BVSUQsIGNvbnRleHRPYmosIGZpcnN0QWNjZWxlcmF0ZWRTY3JlZW4pOwotICAgIH0KLX0K
LQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLQotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENv
bnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2FwQ2hhaW4pCitH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiwgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIHNoYXJlZENvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
KiBzd2FwQ2hhaW4pCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgRGVzdGluYXRpb246
Ok9mZnNjcmVlbiwgc2hhcmVkQ29udGV4dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0gYXR0cnMu
d2ViR0xWZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJHTDI7CiAK
LSNpZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCi0gICAgbV9wb3dlclByZWZlcmVuY2VV
c2VkRm9yQ3JlYXRpb24gPSAoaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpICYmIGF0dHJzLnBvd2Vy
UHJlZmVyZW5jZSA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZv
cm1hbmNlKSA/IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFu
Y2UgOiBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKLSNlbHNlCi0g
ICAgbV9wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24gPSBHcmFwaGljc0NvbnRleHRHTFBv
d2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKLSNlbmRpZgotCiAgICAgbV9kaXNwbGF5T2JqID0gSW5p
dGlhbGl6ZUVHTERpc3BsYXkoYXR0cnMpOwogICAgIGlmIChtX2Rpc3BsYXlPYmogPT0gRUdMX05P
X0RJU1BMQVkpCiAgICAgICAgIHJldHVybjsKLSAgICBjb25zdCBjaGFyICpkaXNwbGF5RXh0ZW5z
aW9ucyA9IEVHTF9RdWVyeVN0cmluZyhtX2Rpc3BsYXlPYmosIEVHTF9FWFRFTlNJT05TKTsKLSAg
ICBMT0coV2ViR0wsICJFeHRlbnNpb25zOiAlcyIsIGRpc3BsYXlFeHRlbnNpb25zKTsKIAogICAg
IEVHTGludCBjb25maWdBdHRyaWJ1dGVzW10gPSB7CiAgICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZ
UEUsIEVHTF9PUEVOR0xfRVMyX0JJVCwKQEAgLTI5MCwxMSArMjI1LDE2IEBAIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0CiAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9DT05URVhU
X0JJTkRfR0VORVJBVEVTX1JFU09VUkNFX0NIUk9NSVVNKTsKICAgICBlZ2xDb250ZXh0QXR0cmli
dXRlcy5hcHBlbmQoRUdMX0ZBTFNFKTsKIAotICAgIGlmIChzdHJzdHIoZGlzcGxheUV4dGVuc2lv
bnMsICJFR0xfQU5HTEVfcG93ZXJfcHJlZmVyZW5jZSIpKSB7Ci0gICAgICAgIGVnbENvbnRleHRB
dHRyaWJ1dGVzLmFwcGVuZChFR0xfUE9XRVJfUFJFRkVSRU5DRV9BTkdMRSk7Ci0gICAgICAgIC8v
IEVHTF9MT1dfUE9XRVJfQU5HTEUgaXMgdGhlIGRlZmF1bHQuIENoYW5nZSB0bwotICAgICAgICAv
LyBFR0xfSElHSF9QT1dFUl9BTkdMRSBpZiBkZXNpcmVkLgotICAgICAgICBlZ2xDb250ZXh0QXR0
cmlidXRlcy5hcHBlbmQoRUdMX0xPV19QT1dFUl9BTkdMRSk7CisgICAgYm9vbCBzdXBwb3J0c1Bv
d2VyUHJlZmVyZW5jZSA9IGZhbHNlOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBjb25zdCBjaGFy
ICpkaXNwbGF5RXh0ZW5zaW9ucyA9IEVHTF9RdWVyeVN0cmluZyhtX2Rpc3BsYXlPYmosIEVHTF9F
WFRFTlNJT05TKTsKKyAgICBtX3N1cHBvcnRzUG93ZXJQcmVmZXJlbmNlID0gc3Ryc3RyKGRpc3Bs
YXlFeHRlbnNpb25zLCAiRUdMX0FOR0xFX3Bvd2VyX3ByZWZlcmVuY2UiKTsKKyAgICBzdXBwb3J0
c1Bvd2VyUHJlZmVyZW5jZSA9IG1fc3VwcG9ydHNQb3dlclByZWZlcmVuY2U7CisjZW5kaWYKKyAg
ICBpZiAoIXN1cHBvcnRzUG93ZXJQcmVmZXJlbmNlKSB7CisgICAgICAgIGF1dG8gYXR0cnMgPSBj
b250ZXh0QXR0cmlidXRlcygpOworICAgICAgICBhdHRycy5wb3dlclByZWZlcmVuY2UgPSBHcmFw
aGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKKyAgICAgICAgc2V0Q29udGV4
dEF0dHJpYnV0ZXMoYXR0cnMpOwogICAgIH0KICAgICBlZ2xDb250ZXh0QXR0cmlidXRlcy5hcHBl
bmQoRUdMX05PTkUpOwogCkBAIC0zMzIsMjEgKzI3Miw2IEBAIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMg
YXR0CiAgICAgICAgIH0KICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lv
bik7CiAgICAgfQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAvLyBGSVhNRTogSXQncyB1bmNsZWFy
IGlmIE1BQ0NBVEFMWVNUIHNob3VsZCB0YWtlIHRoZXNlIHN0ZXBzIGFzIHdlbGwsIGJ1dCB0aGF0
Ci0gICAgLy8gd291bGQgcmVxdWlyZSB0aGUgUGxhdGZvcm1TY3JlZW5NYWMgY29kZSB0byBiZSBl
eHBvc2VkIHRvIENhdGFseXN0IHRvby4KLSAgICBFR0xEZXZpY2VFWFQgZGV2aWNlID0gbnVsbHB0
cjsKLSAgICBFR0xfUXVlcnlEaXNwbGF5QXR0cmliRVhUKG1fZGlzcGxheU9iaiwgRUdMX0RFVklD
RV9FWFQsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJmRldmljZSkpOwotICAgIENHTENv
bnRleHRPYmogY2dsQ29udGV4dCA9IG51bGxwdHI7Ci0gICAgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4
ZWxGb3JtYXQgPSBudWxscHRyOwotICAgIEVHTF9RdWVyeURldmljZUF0dHJpYkVYVChkZXZpY2Us
IEVHTF9DR0xfQ09OVEVYVF9BTkdMRSwgcmVpbnRlcnByZXRfY2FzdDxFR0xBdHRyaWIqPigmY2ds
Q29udGV4dCkpOwotICAgIEVHTF9RdWVyeURldmljZUF0dHJpYkVYVChkZXZpY2UsIEVHTF9DR0xf
UElYRUxfRk9STUFUX0FOR0xFLCByZWludGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZwaXhlbEZv
cm1hdCkpOwotICAgIGF1dG8gZ3B1SUQgPSAoaG9zdFdpbmRvdyAmJiBob3N0V2luZG93LT5kaXNw
bGF5SUQoKSkgPyBncHVJREZvckRpc3BsYXkoaG9zdFdpbmRvdy0+ZGlzcGxheUlEKCkpIDogcHJp
bWFyeUdQVUlEKCk7Ci0gICAgc2V0R1BVQnlSZWdpc3RyeUlEKGNnbENvbnRleHQsIHBpeGVsRm9y
bWF0LCBncHVJRCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKLSNlbmRp
ZgotCiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAgICAgYXR0cnMgPSBjb250ZXh0QXR0cmli
dXRlcygpOyAvLyBUaGV5IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKQEAg
LTU2MSwyOCArNDg2LDI1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNoZWNrR1BV
U3RhdHVzKCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4dFZpc2li
aWxpdHkoYm9vbCBpc1Zpc2libGUpCiB7Ci0gICAgaWYgKG1fcG93ZXJQcmVmZXJlbmNlVXNlZEZv
ckNyZWF0aW9uID09IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9y
bWFuY2UpIHsKLSAgICAgICAgaWYgKGlzVmlzaWJsZSkKLSAgICAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHRSZXF1aXJpbmdI
aWdoUGVyZm9ybWFuY2UodGhpcyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlbW92ZUNvbnRleHRSZXF1
aXJpbmdIaWdoUGVyZm9ybWFuY2UodGhpcyk7Ci0gICAgfQorI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5wb3dlclByZWZlcmVuY2UgIT0gR3JhcGhpY3NDb250
ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGlmIChpc1Zpc2libGUpCisgICAgICAgIG1faGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCA9
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Q6OmFjcXVpcmUoKTsKKyAgICBlbHNlCisg
ICAgICAgIG1faGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCA9IHsgfTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKGlzVmlzaWJsZSk7CisjZW5kaWYKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVwZGF0ZUNHTENvbnRleHQoKQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6ZGlzcGxheVdhc1JlY29uZmlndXJlZCgpCiB7Ci0gICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICBpZiAoIW1fc3VwcG9ydHNQb3dlclByZWZlcmVu
Y2UpCiAgICAgICAgIHJldHVybjsKLSAgICBMT0coV2ViR0wsICJEZXRlY3RlZCBhIG11eCBzd2l0
Y2ggb3IgZGlzcGxheSByZWNvbmZpZ3VyYXRpb24uIENhbGwgQ0dMVXBkYXRlQ29udGV4dC4gKCVw
KSIsIHRoaXMpOwotCi0gICAgRUdMRGV2aWNlRVhUIGRldmljZSA9IG51bGxwdHI7Ci0gICAgRUdM
X1F1ZXJ5RGlzcGxheUF0dHJpYkVYVChtX2Rpc3BsYXlPYmosIEVHTF9ERVZJQ0VfRVhULCByZWlu
dGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZkZXZpY2UpKTsKLSAgICBDR0xDb250ZXh0T2JqIGNn
bENvbnRleHQgPSBudWxscHRyOwotICAgIEVHTF9RdWVyeURldmljZUF0dHJpYkVYVChkZXZpY2Us
IEVHTF9DR0xfQ09OVEVYVF9BTkdMRSwgcmVpbnRlcnByZXRfY2FzdDxFR0xBdHRyaWIqPigmY2ds
Q29udGV4dCkpOwotCi0gICAgQ0dMVXBkYXRlQ29udGV4dChjZ2xDb250ZXh0KTsKLSAgICBtX2hh
c1N3aXRjaGVkVG9IaWdoUGVyZm9ybWFuY2VHUFUgPSB0cnVlOworICAgIEVHTF9IYW5kbGVHUFVT
d2l0Y2hBTkdMRShtX2Rpc3BsYXlPYmopOworICAgIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3Rp
ZmljYXRpb24oKTsKIH0KICNlbmRpZgogCkBAIC02NTQsNTAgKzU3Niw4IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKIHsKLSAgICBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS51cGRhdGVBbGxDb250
ZXh0cygpOwotfQotCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvd09mZmxpbmVS
ZW5kZXJlcnMoKSBjb25zdAotewotI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NF
U1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQotICAgIC8vIFdoZW4gV2luZG93U2VydmVyIGFjY2Vz
cyBpcyBibG9ja2VkIGluIHRoZSBXZWJQcm9jZXNzLCB0aGVyZSBpcyBubyB3YXkKLSAgICAvLyBm
b3IgT3BlbkdMIHRvIGRlY2lkZSB3aGljaCBHUFUgaXMgY29ubmVjdGVkIHRvIGEgZGlzcGxheSAo
b25saW5lL29mZmxpbmUpLgotICAgIC8vIE9wZW5HTCB3aWxsIHRoZW4gY29uc2lkZXIgYWxsIEdQ
VXMsIG9yIHJlbmRlcmVycywgYXMgb2ZmbGluZSwgd2hpY2ggbWVhbnMKLSAgICAvLyBhbGwgb2Zm
bGluZSByZW5kZXJlcnMgbmVlZCB0byBiZSBjb25zaWRlcmVkIHdoZW4gZmluZGluZyBhIHBpeGVs
IGZvcm1hdC4KLSAgICAvLyBJbiBXZWJLaXQgbGVnYWN5LCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEg
V2luZHdTZXJ2ZXIgY29ubmVjdGlvbiwgYW5kCi0gICAgLy8gbV9kaXNwbGF5TWFzayB3aWxsIG5v
dCBiZSBzZXQgaW4gdGhpcyBjYXNlLgotICAgIGlmIChwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2so
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxpZiBQTEFURk9STShNQUNDQVRBTFlTVCkKLSAg
ICAvLyBGSVhNRTogPHJkYXI6Ly81MzA2Mjc5ND4gV2UncmUgdmVyeSBpbmNvbnNpc3RlbnQgYWJv
dXQgV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcKLSAgICAvLyBhbmQgTUFDL01BQ0NB
VEFMWVNUIGFuZCBPUEVOR0wvT1BFTkdMRVMuCi0gICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLSAg
ICAgICAgCi0jaWYgSEFWRShBUFBMRV9HUkFQSElDU19DT05UUk9MKQotICAgIGlmIChoYXNMb3dB
bmRIaWdoUG93ZXJHUFVzKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgCi0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi0jaWYgUExBVEZPUk0oTUFDKQotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6c2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJ
RCkKLXsKLSAgICBpZiAoIW1fY29udGV4dE9iaikKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICgh
bV9oYXNTd2l0Y2hlZFRvSGlnaFBlcmZvcm1hbmNlR1BVKSB7Ci0gICAgICAgIEVHTERldmljZUVY
VCBkZXZpY2UgPSBudWxscHRyOwotICAgICAgICBFR0xfUXVlcnlEaXNwbGF5QXR0cmliRVhUKG1f
ZGlzcGxheU9iaiwgRUdMX0RFVklDRV9FWFQsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4o
JmRldmljZSkpOwotICAgICAgICBDR0xDb250ZXh0T2JqIGNnbENvbnRleHQgPSBudWxscHRyOwot
ICAgICAgICBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdCA9IG51bGxwdHI7Ci0gICAgICAg
IEVHTF9RdWVyeURldmljZUF0dHJpYkVYVChkZXZpY2UsIEVHTF9DR0xfQ09OVEVYVF9BTkdMRSwg
cmVpbnRlcnByZXRfY2FzdDxFR0xBdHRyaWIqPigmY2dsQ29udGV4dCkpOwotICAgICAgICBFR0xf
UXVlcnlEZXZpY2VBdHRyaWJFWFQoZGV2aWNlLCBFR0xfQ0dMX1BJWEVMX0ZPUk1BVF9BTkdMRSwg
cmVpbnRlcnByZXRfY2FzdDxFR0xBdHRyaWIqPigmcGl4ZWxGb3JtYXQpKTsKLSAgICAgICAgc2V0
R1BVQnlSZWdpc3RyeUlEKGNnbENvbnRleHQsIHBpeGVsRm9ybWF0LCBncHVJREZvckRpc3BsYXko
ZGlzcGxheUlEKSk7Ci0gICAgfQorICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6
c2hhcmVkTWFuYWdlcigpLmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoKTsKIH0KLSNlbmRpZiAvLyAh
UExBVEZPUk0oTUFDKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9y
RGlzcGxheSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvR3JhcGhpY3NDaGVja3NNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDU2NWQwMGYzZWIz
MTgyMGU5OGMwNjNiNmQ4OWE4M2M1ZGEwNjY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcApAQCAtMCww
ICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NoZWNrc01hYy5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaWYgSEFWRShBUFBM
RV9HUkFQSElDU19DT05UUk9MKQorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCisK
K2VudW0geworICAgIGtBR0NPcGVuLAorICAgIGtBR0NDbG9zZQorfTsKKworc3RhdGljIGlvX2Nv
bm5lY3RfdCBhdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKCkKK3sKKyAgICBtYWNoX3BvcnRf
dCBtYXN0ZXJQb3J0ID0gTUFDSF9QT1JUX05VTEw7CisKKyAgICBpZiAoSU9NYXN0ZXJQb3J0KE1B
Q0hfUE9SVF9OVUxMLCAmbWFzdGVyUG9ydCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1
cm4gTUFDSF9QT1JUX05VTEw7CisKKyAgICBDRkRpY3Rpb25hcnlSZWYgY2xhc3NUb01hdGNoID0g
SU9TZXJ2aWNlTWF0Y2hpbmcoIkFwcGxlR3JhcGhpY3NDb250cm9sIik7CisgICAgaWYgKCFjbGFz
c1RvTWF0Y2gpCisgICAgICAgIHJldHVybiBNQUNIX1BPUlRfTlVMTDsKKworICAgIGtlcm5fcmV0
dXJuX3Qga2VyblJlc3VsdDsKKyAgICBpb19pdGVyYXRvcl90IGl0ZXJhdG9yOworICAgIGlmICgo
a2VyblJlc3VsdCA9IElPU2VydmljZUdldE1hdGNoaW5nU2VydmljZXMobWFzdGVyUG9ydCwgY2xh
c3NUb01hdGNoLCAmaXRlcmF0b3IpKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBN
QUNIX1BPUlRfTlVMTDsKKworICAgIGlvX3NlcnZpY2VfdCBzZXJ2aWNlT2JqZWN0ID0gSU9JdGVy
YXRvck5leHQoaXRlcmF0b3IpOworICAgIElPT2JqZWN0UmVsZWFzZShpdGVyYXRvcik7CisgICAg
aWYgKCFzZXJ2aWNlT2JqZWN0KQorICAgICAgICByZXR1cm4gTUFDSF9QT1JUX05VTEw7CisKKyAg
ICBpb19jb25uZWN0X3QgZGF0YVBvcnQ7CisgICAgSU9PYmplY3RSZXRhaW4oc2VydmljZU9iamVj
dCk7CisgICAga2VyblJlc3VsdCA9IElPU2VydmljZU9wZW4oc2VydmljZU9iamVjdCwgbWFjaF90
YXNrX3NlbGYoKSwgMCwgJmRhdGFQb3J0KTsKKyAgICBJT09iamVjdFJlbGVhc2Uoc2VydmljZU9i
amVjdCk7CisKKyAgICByZXR1cm4gKGtlcm5SZXN1bHQgPT0gS0VSTl9TVUNDRVNTKSA/IGRhdGFQ
b3J0IDogTUFDSF9QT1JUX05VTEw7Cit9CisKK3N0YXRpYyBib29sIGhhc011eENhcGFiaWxpdHko
KQoreworICAgIGlvX2Nvbm5lY3RfdCBkYXRhUG9ydCA9IGF0dGFjaFRvQXBwbGVHcmFwaGljc0Nv
bnRyb2woKTsKKworICAgIGlmIChkYXRhUG9ydCA9PSBNQUNIX1BPUlRfTlVMTCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQ7CisgICAgaWYgKElPQ29ubmVjdENhbGxT
Y2FsYXJNZXRob2QoZGF0YVBvcnQsIGtBR0NPcGVuLCBudWxscHRyLCAwLCBudWxscHRyLCBudWxs
cHRyKSA9PSBLRVJOX1NVQ0NFU1MpIHsKKyAgICAgICAgSU9Db25uZWN0Q2FsbFNjYWxhck1ldGhv
ZChkYXRhUG9ydCwga0FHQ0Nsb3NlLCBudWxscHRyLCAwLCBudWxscHRyLCBudWxscHRyKTsKKyAg
ICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0ID0gZmFsc2U7
CisKKyAgICBJT1NlcnZpY2VDbG9zZShkYXRhUG9ydCk7CisKKyAgICBpZiAocmVzdWx0KSB7Cisg
ICAgICAgIC8vIFRoaXMgaXMgZGV0ZWN0aW5nIE1hYyBoYXJkd2FyZSB3aXRoIGFuIEludGVsIGc1
NzUgR1BVLCB3aGljaAorICAgICAgICAvLyB3ZSBkb24ndCB3YW50IHRvIG1ha2UgYXZhaWxhYmxl
IHRvIG11eGluZy4KKyAgICAgICAgLy8gQmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSBBcHBsZSdz
IE9wZW5HTCB0ZWFtLCBzdWNoIGRldmljZXMKKyAgICAgICAgLy8gaGF2ZSBmb3VyIG9yIGZld2Vy
IHByb2Nlc3NvcnMuCisgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMDA2MDM3OD4KKyAgICAg
ICAgaW50IG5hbWVzWzJdID0geyBDVExfSFcsIEhXX05DUFUgfTsKKyAgICAgICAgaW50IGNwdUNv
dW50OworICAgICAgICBzaXplX3QgY3B1Q291bnRMZW5ndGggPSBzaXplb2YoY3B1Q291bnQpOwor
ICAgICAgICBzeXNjdGwobmFtZXMsIDIsICZjcHVDb3VudCwgJmNwdUNvdW50TGVuZ3RoLCBudWxs
cHRyLCAwKTsKKyAgICAgICAgcmVzdWx0ID0gY3B1Q291bnQgPiA0OworICAgIH0KKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZiAvLyBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wp
CisKK2Jvb2wgaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpCit7CisjaWYgSEFWRShBUFBMRV9HUkFQ
SElDU19DT05UUk9MKQorICAgIHN0YXRpYyBib29sIGNhbk11eCA9IGhhc011eENhcGFiaWxpdHko
KTsKKyAgICByZXR1cm4gY2FuTXV4OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
K30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDaGVja3NNYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYmM1Yjc5ODMy
ZTBlMDkxMjFiOTI0YzU2YTViYWNmMTk3MzYxZTJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmgKQEAgLTAs
MCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpOworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2NvcGVk
SGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL1Njb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
YzIxZmQ3OTQwMTlhMzFhODA1NzM0NGYyZGEyZGM0YmFhZTEyOGU3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1Njb3BlZEhpZ2hQZXJmb3Jt
YW5jZUdQVVJlcXVlc3QuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJHcmFwaGljc0NoZWNrc01hYy5oIgorI2luY2x1ZGUgIlN3aXRjaGlu
Z0dQVUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjb3BlZEhpZ2hQ
ZXJmb3JtYW5jZUdQVVJlcXVlc3QgeworcHVibGljOgorICAgIFNjb3BlZEhpZ2hQZXJmb3JtYW5j
ZUdQVVJlcXVlc3QoKSA9IGRlZmF1bHQ7CisgICAgU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVx
dWVzdChTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0JiYgb3RoZXIpCisgICAgICAgIDog
bV9yZXF1ZXN0ZWQoc3RkOjpleGNoYW5nZShvdGhlci5tX3JlcXVlc3RlZCwgZmFsc2UpKQorICAg
IHsKKyAgICB9CisgICAgflNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QoKQorICAgIHsK
KyAgICAgICAgaWYgKCFtX3JlcXVlc3RlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
U3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygpLT5yZWxlYXNlSGlnaFBlcmZv
cm1hbmNlR1BVKCk7CisgICAgfQorICAgIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Qm
IG9wZXJhdG9yPShTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0JiYgb3RoZXIpCisgICAg
eworICAgICAgICBpZiAobV9yZXF1ZXN0ZWQpCisgICAgICAgICAgICBTd2l0Y2hpbmdHUFVDbGll
bnQ6OnNpbmdsZXRvbklmRXhpc3RzKCktPnJlbGVhc2VIaWdoUGVyZm9ybWFuY2VHUFUoKTsKKyAg
ICAgICAgbV9yZXF1ZXN0ZWQgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fcmVxdWVzdGVkLCBmYWxz
ZSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgc3RhdGljIFNjb3BlZEhpZ2hQ
ZXJmb3JtYW5jZUdQVVJlcXVlc3QgYWNxdWlyZSgpCisgICAgeworICAgICAgICBpZiAoIWhhc0xv
d0FuZEhpZ2hQb3dlckdQVXMoKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGF1
dG8gY2xpZW50ID0gU3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygpOworICAg
ICAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGNsaWVu
dC0+cmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSgpOworICAgICAgICByZXR1cm4geyAwIH07Cisg
ICAgfQorcHJpdmF0ZToKKyAgICBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0KGludCkK
KyAgICAgICAgOiBtX3JlcXVlc3RlZCh0cnVlKQorICAgIHsKKyAgICB9CisgICAgYm9vbCBtX3Jl
cXVlc3RlZCB7IGZhbHNlIH07Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvU3dpdGNoaW5nR1BVQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU3dpdGNoaW5nR1BVQ2xpZW50LmgKaW5kZXggNDk5YTI4
N2E0NWM5NjhkODMzZGVjZmU1MzMzMTFkMGNlYjMxNzA3OC4uNDUyMzY3ODFiOGUxMDhlMjg2ZmRl
MjE0ZTg1MWEzYTgyYjMwMWM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Td2l0Y2hpbmdHUFVDbGllbnQuaApAQCAtMjksMTYgKzI5LDE2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3dpdGNoaW5nR1BVQ2xpZW50IHsKIHB1
YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3dpdGNoaW5nR1BVQ2xpZW50KiBzaW5n
bGV0b25JZkV4aXN0cygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFNpbmds
ZXRvbihTd2l0Y2hpbmdHUFVDbGllbnQmKTsKIAogICAgIHZpcnR1YWwgflN3aXRjaGluZ0dQVUNs
aWVudCgpID0gZGVmYXVsdDsKLQorcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
U3dpdGNoaW5nR1BVQ2xpZW50KiBzaW5nbGV0b25JZkV4aXN0cygpOwogICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWxl
YXNlSGlnaFBlcmZvcm1hbmNlR1BVKCkgPSAwOwotICAgIAotcHJpdmF0ZToKKwogICAgIHN0YXRp
YyBTd2l0Y2hpbmdHUFVDbGllbnQqIG1fc2luZ2xldG9uOworICAgIGZyaWVuZCBjbGFzcyBTY29w
ZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaAppbmRleCBmNTJiZGQ2NmZkMGM2N2IxMjVkOGI1MTFlMjljZjkyZmMyZmNm
NWUwLi5mNmExYTAyNDA4YmFkODVkODJmMGNjYzM5OTgwMjgzZDZjZDY2OTBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNjksNiArNjksMTAgQEAgY2xhc3MgR0NHTExh
eWVyOwogfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiU2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEV4dGVuc2lvbnNHTDsKICNpZiBVU0UoQU5HTEUpCkBAIC0yNTYsNyArMjYwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAgICAgdm9pZCBj
b21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7IAorICAgIHZvaWQgY29tcHJlc3NlZFRleElt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogICAgIHZvaWQg
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKICAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7
CiAKQEAgLTQ2MSwxNCArNDY1LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHByaW1pdGl2ZVJlc3Rh
cnRJbmRleChHQ0dMdWludCk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBQTEFU
Rk9STShNQUMpCi0gICAgdm9pZCB1cGRhdGVDR0xDb250ZXh0KCk7CisjaWYgUExBVEZPUk0oTUFD
KQorICAgIHZvaWQgZGlzcGxheVdhc1JlY29uZmlndXJlZCgpOwogI2VuZGlmCiAKICAgICB2b2lk
IHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOwogCi0gICAgR3JhcGhpY3NDb250ZXh0
R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb247IH0KLQogICAg
IC8vIFN1cHBvcnQgZm9yIGJ1ZmZlciBjcmVhdGlvbiBhbmQgZGVsZXRpb24KICAgICBQbGF0Zm9y
bUdMT2JqZWN0IGNyZWF0ZUJ1ZmZlcigpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xPYmplY3QgY3Jl
YXRlRnJhbWVidWZmZXIoKSBmaW5hbDsKQEAgLTQ5NywxMSArNDk5LDYgQEAgcHVibGljOgogCiAg
ICAgdW5zaWduZWQgdGV4dHVyZVNlZWQoR0NHTHVpbnQgdGV4dHVyZSkgeyByZXR1cm4gbV9zdGF0
ZS50ZXh0dXJlU2VlZENvdW50LmNvdW50KHRleHR1cmUpOyB9CiAKLSNpZiBQTEFURk9STShNQUMp
Ci0gICAgdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJfdDsKLSAgICB2b2lkIHNjcmVl
bkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCk7Ci0jZW5kaWYKLQogICAgIHZvaWQgcHJlcGFy
ZUZvckRpc3BsYXkoKSBmaW5hbDsKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRB
VElPTikKQEAgLTUyOSw3ICs1MjYsNyBAQCBwcml2YXRlOgogICAgIC8vIGltcGxlbWVudGF0aW9u
LgogICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwotICAgIAor
CiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1u
cywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1
ZmZlck9iamVjdCk7CiAKICAgICAvLyBEaWQgdGhlIG1vc3QgcmVjZW50IGRyYXdpbmcgb3BlcmF0
aW9uIGxlYXZlIHRoZSBHUFUgaW4gYW4gYWNjZXB0YWJsZSBzdGF0ZT8KQEAgLTU0Nyw3ICs1NDQs
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgYXR0YWNoRGVwdGhBbmRTdGVuY2lsQnVmZmVySWZOZWVk
ZWQoR0NHTHVpbnQgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQsIGludCB3aWR0aCwgaW50IGhl
aWdodCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIGFsbG93T2ZmbGluZVJlbmRl
cmVycygpIGNvbnN0OwogICAgIGJvb2wgcmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiAg
ICAgYm9vbCBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOwogICAgIGJvb2wg
YmluZERpc3BsYXlCdWZmZXJCYWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tp
bmcsIHZvaWQqIHBidWZmZXIpOwpAQCAtNTgzLDcgKzU3OSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAsIGlzVmFsaWQoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQotICAgICAgICAKKwog
ICAgICAgICBTaGFkZXJTeW1ib2xNYXAmIHN5bWJvbE1hcChlbnVtIEFOR0xFU2hhZGVyU3ltYm9s
VHlwZSBzeW1ib2xUeXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoc3ltYm9sVHlw
ZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFIHx8IHN5bWJvbFR5cGUgPT0gU0hBREVS
X1NZTUJPTF9UWVBFX1VOSUZPUk0gfHwgc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVf
VkFSWUlORyk7CkBAIC02NDgsNyArNjQ0LDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RXh0ZW5zaW9uc0dMT3BlbkdMPiBtX2V4dGVuc2lvbnM7CiAjZW5kaWYKIAotICAgIEdyYXBo
aWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIG1fcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0
aW9uIHsgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQgfTsKICAgICBW
ZWN0b3I8VmVjdG9yPGZsb2F0Pj4gbV92ZXJ0ZXhBcnJheTsKIAogI2lmICFVU0UoQU5HTEUpCkBA
IC02ODAsNyArNjc1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB1c2luZyBCb3VuZFRleHR1cmVN
YXAgPSBIYXNoTWFwPEdDR0xlbnVtLAogICAgICAgICAgICAgc3RkOjpwYWlyPEdDR0x1aW50LCBH
Q0dMZW51bT4sCi0gICAgICAgICAgICBXVEY6OkludEhhc2g8R0NHTGVudW0+LCAKKyAgICAgICAg
ICAgIFdURjo6SW50SGFzaDxHQ0dMZW51bT4sCiAgICAgICAgICAgICBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50PiwKICAgICAgICAgICAgIFdURjo6UGFpckhhc2hU
cmFpdHM8V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4sIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+PgogICAgICAgICA+OwpAQCAt
NzYxLDggKzc1NiwxMCBAQCBwcml2YXRlOgogICAgIC8vIFdoZW4gcHJlc2VydmVEcmF3aW5nQnVm
ZmVyID09IHRydWUsIHRoaXMgaXMgYmxpdHRlZCB0byBkdXJpbmcgZGlzcGxheSBwcmVwYXJlLgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IG1fZGlzcGxheUJ1ZmZlckJhY2tpbmc7CiAg
ICAgdm9pZCogbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciB7IG51bGxwdHIgfTsKLQotICAgIGJvb2wg
bV9oYXNTd2l0Y2hlZFRvSGlnaFBlcmZvcm1hbmNlR1BVIHsgZmFsc2UgfTsKKyNlbmRpZgorI2lm
IFBMQVRGT1JNKE1BQykKKyAgICBib29sIG1fc3VwcG9ydHNQb3dlclByZWZlcmVuY2UgeyBmYWxz
ZSB9OworICAgIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QgbV9oaWdoUGVyZm9ybWFu
Y2VHUFVSZXF1ZXN0OwogI2VuZGlmCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFU
SU9OKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRHTENWPiBtX2N2OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcAppbmRleCA0MWFi
NTBjYmVmMmVhNjQyOTNiYTBjOTliZThiMDVmYzk3MDc3ZGU2Li4wYmY3ZTIxMGI3ZjBmYjZjN2Jl
NzNlNTkyMmM2YWY1MWE5YjQ1NmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyLmNwcApAQCAtMzEsOTEgKzMxLDggQEAKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAotI2lmIEhBVkUoQVBQ
TEVfR1JBUEhJQ1NfQ09OVFJPTCkKLSNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+Ci0jZW5kaWYKLQot
I2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJTd2l0Y2hpbmdHUFVDbGllbnQuaCIKLSNlbmRp
ZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRS
T0wpCi0KLWVudW0gewotICAgIGtBR0NPcGVuLAotICAgIGtBR0NDbG9zZQotfTsKLQotc3RhdGlj
IGlvX2Nvbm5lY3RfdCBhdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKCkKLXsKLSAgICBtYWNo
X3BvcnRfdCBtYXN0ZXJQb3J0ID0gTUFDSF9QT1JUX05VTEw7Ci0gICAgCi0gICAgaWYgKElPTWFz
dGVyUG9ydChNQUNIX1BPUlRfTlVMTCwgJm1hc3RlclBvcnQpICE9IEtFUk5fU1VDQ0VTUykKLSAg
ICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOwotICAgIAotICAgIENGRGljdGlvbmFyeVJlZiBj
bGFzc1RvTWF0Y2ggPSBJT1NlcnZpY2VNYXRjaGluZygiQXBwbGVHcmFwaGljc0NvbnRyb2wiKTsK
LSAgICBpZiAoIWNsYXNzVG9NYXRjaCkKLSAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOwot
ICAgIAotICAgIGtlcm5fcmV0dXJuX3Qga2VyblJlc3VsdDsKLSAgICBpb19pdGVyYXRvcl90IGl0
ZXJhdG9yOwotICAgIGlmICgoa2VyblJlc3VsdCA9IElPU2VydmljZUdldE1hdGNoaW5nU2Vydmlj
ZXMobWFzdGVyUG9ydCwgY2xhc3NUb01hdGNoLCAmaXRlcmF0b3IpKSAhPSBLRVJOX1NVQ0NFU1Mp
Ci0gICAgICAgIHJldHVybiBNQUNIX1BPUlRfTlVMTDsKLSAgICAKLSAgICBpb19zZXJ2aWNlX3Qg
c2VydmljZU9iamVjdCA9IElPSXRlcmF0b3JOZXh0KGl0ZXJhdG9yKTsKLSAgICBJT09iamVjdFJl
bGVhc2UoaXRlcmF0b3IpOwotICAgIGlmICghc2VydmljZU9iamVjdCkKLSAgICAgICAgcmV0dXJu
IE1BQ0hfUE9SVF9OVUxMOwotICAgIAotICAgIGlvX2Nvbm5lY3RfdCBkYXRhUG9ydDsKLSAgICBJ
T09iamVjdFJldGFpbihzZXJ2aWNlT2JqZWN0KTsKLSAgICBrZXJuUmVzdWx0ID0gSU9TZXJ2aWNl
T3BlbihzZXJ2aWNlT2JqZWN0LCBtYWNoX3Rhc2tfc2VsZigpLCAwLCAmZGF0YVBvcnQpOwotICAg
IElPT2JqZWN0UmVsZWFzZShzZXJ2aWNlT2JqZWN0KTsKLSAgICAKLSAgICByZXR1cm4gKGtlcm5S
ZXN1bHQgPT0gS0VSTl9TVUNDRVNTKSA/IGRhdGFQb3J0IDogTUFDSF9QT1JUX05VTEw7Ci19Ci0K
LXN0YXRpYyBib29sIGhhc011eENhcGFiaWxpdHkoKQotewotICAgIGlvX2Nvbm5lY3RfdCBkYXRh
UG9ydCA9IGF0dGFjaFRvQXBwbGVHcmFwaGljc0NvbnRyb2woKTsKLSAgICAKLSAgICBpZiAoZGF0
YVBvcnQgPT0gTUFDSF9QT1JUX05VTEwpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAg
ICBib29sIHJlc3VsdDsKLSAgICBpZiAoSU9Db25uZWN0Q2FsbFNjYWxhck1ldGhvZChkYXRhUG9y
dCwga0FHQ09wZW4sIG51bGxwdHIsIDAsIG51bGxwdHIsIG51bGxwdHIpID09IEtFUk5fU1VDQ0VT
UykgewotICAgICAgICBJT0Nvbm5lY3RDYWxsU2NhbGFyTWV0aG9kKGRhdGFQb3J0LCBrQUdDQ2xv
c2UsIG51bGxwdHIsIDAsIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICByZXN1bHQgPSB0cnVl
OwotICAgIH0gZWxzZQotICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAKLSAgICBJT1NlcnZp
Y2VDbG9zZShkYXRhUG9ydCk7Ci0gICAgCi0gICAgaWYgKHJlc3VsdCkgewotICAgICAgICAvLyBU
aGlzIGlzIGRldGVjdGluZyBNYWMgaGFyZHdhcmUgd2l0aCBhbiBJbnRlbCBnNTc1IEdQVSwgd2hp
Y2gKLSAgICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byBtYWtlIGF2YWlsYWJsZSB0byBtdXhpbmcu
Ci0gICAgICAgIC8vIEJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gQXBwbGUncyBPcGVuR0wgdGVh
bSwgc3VjaCBkZXZpY2VzCi0gICAgICAgIC8vIGhhdmUgZm91ciBvciBmZXdlciBwcm9jZXNzb3Jz
LgotICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzAwNjAzNzg+Ci0gICAgICAgIGludCBuYW1l
c1syXSA9IHsgQ1RMX0hXLCBIV19OQ1BVIH07Ci0gICAgICAgIGludCBjcHVDb3VudDsKLSAgICAg
ICAgc2l6ZV90IGNwdUNvdW50TGVuZ3RoID0gc2l6ZW9mKGNwdUNvdW50KTsKLSAgICAgICAgc3lz
Y3RsKG5hbWVzLCAyLCAmY3B1Q291bnQsICZjcHVDb3VudExlbmd0aCwgbnVsbHB0ciwgMCk7Ci0g
ICAgICAgIHJlc3VsdCA9IGNwdUNvdW50ID4gNDsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotYm9vbCBoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkKLXsKLSAgICBzdGF0aWMg
Ym9vbCBjYW5NdXggPSBoYXNNdXhDYXBhYmlsaXR5KCk7Ci0gICAgcmV0dXJuIGNhbk11eDsKLX0K
LSNlbmRpZiAvLyBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCi0KIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMTWFuYWdlciYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRN
YW5hZ2VyKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xNYW5hZ2VyPiBzX21hbmFnZXI7CkBAIC0xMjcsMzMgKzQ0LDE3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKENHRGlyZWN0
RGlzcGxheUlELCBDCiB7CiAgICAgTE9HKFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xN
YW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkIik7CiAgICAgaWYgKGZsYWdzICYga0NHRGlz
cGxheVNldE1vZGVGbGFnKQotICAgICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6
OnNoYXJlZE1hbmFnZXIoKS51cGRhdGVBbGxDb250ZXh0cygpOwotfQotI2VuZGlmCi0KLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjp1cGRhdGVBbGxDb250ZXh0cygpCi17Ci0j
aWYgUExBVEZPUk0oTUFDKQotICAgIGZvciAoY29uc3QgYXV0byYgY29udGV4dCA6IG1fY29udGV4
dHMpIHsKLSAgICAgICAgY29udGV4dC0+dXBkYXRlQ0dMQ29udGV4dCgpOwotICAgICAgICBjb250
ZXh0LT5kaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCk7Ci0gICAgfQotI2VuZGlm
CisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1E
aXNwbGF5SUQgZGlzcGxheUlELCBjb25zdCBIb3N0V2luZG93KiB3aW5kb3cpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6ZGlzcGxheVdhc1JlY29uZmlndXJlZCgpCiB7Ci0g
ICAgZm9yIChjb25zdCBhdXRvJiBjb250ZXh0QW5kV2luZG93IDogbV9jb250ZXh0V2luZG93TWFw
KSB7Ci0gICAgICAgIGlmIChjb250ZXh0QW5kV2luZG93LnZhbHVlID09IHdpbmRvdykgewotICAg
ICAgICAgICAgY29udGV4dEFuZFdpbmRvdy5rZXktPnNjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQp
OwotICAgICAgICAgICAgTE9HKFdlYkdMLCAiQ2hhbmdpbmcgY29udGV4dCAoJXApIHRvIGRpc3Bs
YXkgKCVkKS4iLCBjb250ZXh0QW5kV2luZG93LmtleSwgZGlzcGxheUlEKTsKLSAgICAgICAgfQot
ICAgIH0KKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHQgOiBtX2NvbnRleHRzKQorICAgICAg
ICBjb250ZXh0LT5kaXNwbGF5V2FzUmVjb25maWd1cmVkKCk7CiB9CiAjZW5kaWYKIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmFkZENvbnRleHQoR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqIGNvbnRleHQsIEhvc3RXaW5kb3cqIHdpbmRvdykKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xNYW5hZ2VyOjphZGRDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBj
b250ZXh0KQogewogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0x
NjYsNyArNjcsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29u
dGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dAogCiAgICAgQVNTRVJUKCFtX2Nv
bnRleHRzLmNvbnRhaW5zKGNvbnRleHQpKTsKICAgICBtX2NvbnRleHRzLmFwcGVuZChjb250ZXh0
KTsKLSAgICBtX2NvbnRleHRXaW5kb3dNYXAuc2V0KGNvbnRleHQsIHdpbmRvdyk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpyZW1vdmVDb250ZXh0KEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQpAQCAtMTc0LDk3ICs3NCwxMiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6cmVtb3ZlQ29udGV4dChHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCogY29udAogICAgIGlmICghbV9jb250ZXh0cy5jb250YWlucyhjb250ZXh0KSkKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4dHMucmVtb3ZlRmlyc3QoY29udGV4dCk7Ci0gICAg
bV9jb250ZXh0V2luZG93TWFwLnJlbW92ZShjb250ZXh0KTsKLSAgICByZW1vdmVDb250ZXh0UmVx
dWlyaW5nSGlnaFBlcmZvcm1hbmNlKGNvbnRleHQpOwotICAgIAogI2lmIFBMQVRGT1JNKE1BQykg
JiYgIUVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKICAgICBpZiAoIW1f
Y29udGV4dHMuc2l6ZSgpKQogICAgICAgICBDR0Rpc3BsYXlSZW1vdmVSZWNvbmZpZ3VyYXRpb25D
YWxsYmFjayhkaXNwbGF5V2FzUmVjb25maWd1cmVkLCBudWxscHRyKTsKICNlbmRpZgogfQogCi1I
b3N0V2luZG93KiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6Omhvc3RXaW5kb3dGb3JD
b250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KSBjb25zdAotewotICAgIEFT
U0VSVChtX2NvbnRleHRXaW5kb3dNYXAuY29udGFpbnMoY29udGV4dCkpOwotICAgIHJldHVybiBt
X2NvbnRleHRXaW5kb3dNYXAuZ2V0KGNvbnRleHQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dFJlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZShHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0g
ICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQVNTRVJUKG1fY29u
dGV4dHMuY29udGFpbnMoY29udGV4dCkpOwotICAgIEFTU0VSVCghbV9jb250ZXh0c1JlcXVpcmlu
Z0hpZ2hQZXJmb3JtYW5jZS5jb250YWlucyhjb250ZXh0KSk7Ci0gICAgCi0gICAgTE9HKFdlYkdM
LCAiVGhpcyBjb250ZXh0ICglcCkgcmVxdWlyZXMgdGhlIGhpZ2gtcGVyZm9ybWFuY2UgR1BVLiIs
IGNvbnRleHQpOwotICAgIG1fY29udGV4dHNSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UuYWRkKGNv
bnRleHQpOwotICAgIAotICAgIHVwZGF0ZUhpZ2hQZXJmb3JtYW5jZVN0YXRlKCk7Ci19Ci0KLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpyZW1vdmVDb250ZXh0UmVxdWlyaW5n
SGlnaFBlcmZvcm1hbmNlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQotewotICAg
IGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2NvbnRleHRzUmVx
dWlyaW5nSGlnaFBlcmZvcm1hbmNlLmNvbnRhaW5zKGNvbnRleHQpKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgTE9HKFdlYkdMLCAiVGhpcyBjb250ZXh0ICglcCkgbm8gbG9uZ2VyIHJlcXVp
cmVzIHRoZSBoaWdoLXBlcmZvcm1hbmNlIEdQVS4iLCBjb250ZXh0KTsKLSAgICBtX2NvbnRleHRz
UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLnJlbW92ZShjb250ZXh0KTsKLSAgICAKLSAgICB1cGRh
dGVIaWdoUGVyZm9ybWFuY2VTdGF0ZSgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlcjo6dXBkYXRlSGlnaFBlcmZvcm1hbmNlU3RhdGUoKQotewotI2lmIFBMQVRGT1JN
KE1BQykKLSAgICBpZiAoIWhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIGlmIChtX2NvbnRleHRzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLnNpemUo
KSkgewotICAgICAgICAKLSAgICAgICAgaWYgKG1fZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRp
bWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHTCwgIkNhbmNlbCBwZW5kaW5n
IHRpbWVyIGZvciB0dXJuaW5nIG9mZiBoaWdoLXBlcmZvcm1hbmNlIEdQVS4iKTsKLSAgICAgICAg
ICAgIG1fZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVyLnN0b3AoKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICghbV9yZXF1ZXN0aW5nSGlnaFBlcmZvcm1hbmNlKSB7Ci0gICAgICAgICAg
ICBMT0coV2ViR0wsICJSZXF1ZXN0IHRoZSBoaWdoLXBlcmZvcm1hbmNlIEdQVS4iKTsKLSAgICAg
ICAgICAgIG1fcmVxdWVzdGluZ0hpZ2hQZXJmb3JtYW5jZSA9IHRydWU7Ci0gICAgICAgICAgICBp
ZiAoYXV0byogc2luZ2xldG9uID0gU3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4aXN0
cygpKQotICAgICAgICAgICAgICAgIHNpbmdsZXRvbi0+cmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQ
VSgpOwotICAgICAgICB9Ci0KLSAgICB9IGVsc2UgewotICAgICAgICAvLyBEb24ndCBpbW1lZGlh
dGVseSB0dXJuIG9mZiB0aGUgaGlnaC1wZXJmb3JtYW5jZSBHUFUuIFRoZSB1c2VyIG1pZ2h0IGJl
Ci0gICAgICAgIC8vIHN3YXBwaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGFicyBvciB3aW5k
b3dzLCBhbmQgd2UgZG9uJ3Qgd2FudCB0byBjYXVzZQotICAgICAgICAvLyBjaHVybiBpZiB3ZSBj
YW4gYXZvaWQgaXQuCi0gICAgICAgIGlmICghbV9kaXNhYmxlSGlnaFBlcmZvcm1hbmNlR1BVVGlt
ZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdMLCAiU2V0IGEgdGltZXIgdG8g
cmVsZWFzZSB0aGUgaGlnaC1wZXJmb3JtYW5jZSBHUFUuIik7Ci0gICAgICAgICAgICAvLyBGSVhN
RTogRXhwb3NlIHRoaXMgdmFsdWUgYXMgYSBTZXR0aW5nLCB3aGljaCB3b3VsZCByZXF1aXJlIHRo
aXMgY2xhc3MKLSAgICAgICAgICAgIC8vIHRvIHJlZmVyZW5jZSBhIGZyYW1lLCBwYWdlIG9yIGRv
Y3VtZW50LgotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFNlY29uZHMgdGltZVRvS2VlcEhpZ2hQ
ZXJmb3JtYW5jZUdQVUFsaXZlIHsgMTBfcyB9OwotICAgICAgICAgICAgbV9kaXNhYmxlSGlnaFBl
cmZvcm1hbmNlR1BVVGltZXIuc3RhcnRPbmVTaG90KHRpbWVUb0tlZXBIaWdoUGVyZm9ybWFuY2VH
UFVBbGl2ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTE1hbmFnZXI6OmRpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lckZpcmVk
KCkKLXsKLSAgICBpZiAobV9jb250ZXh0c1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZS5zaXplKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fcmVxdWVzdGluZ0hpZ2hQZXJmb3JtYW5jZSA9IGZh
bHNlOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoYXV0byogc2luZ2xldG9uID0gU3dpdGNo
aW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygpKQotICAgICAgICBzaW5nbGV0b24tPnJl
bGVhc2VIaWdoUGVyZm9ybWFuY2VHUFUoKTsKLSNlbmRpZgotfQotCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlcjo6cmVjeWNsZUNvbnRleHRJZk5lY2Vzc2FyeSgpCiB7CiAgICAg
aWYgKGhhc1Rvb01hbnlDb250ZXh0cygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyLmgKaW5kZXggM2FmOGEwNTJhZThlMmExNWQ1YzA1MTc4NGZiMDg1NDVl
ZTlhMWQ2NC4uYzAxMDc2Y2RhYWIyMTAzZThlYjFjMzg2YmU3NjAxMDA5Zjc3MWFkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaApAQCAtMjUsOCArMjUs
NiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiAjaWYgUExBVEZPUk0oTUFD
KQpAQCAtMzgsNTIgKzM2LDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IHVuc2lnbmVk
IE1heENvbnRleHRzID0gMTY7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwotY2xh
c3MgSG9zdFdpbmRvdzsKLQotdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJfdDsKLQot
I2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaGFz
TG93QW5kSGlnaFBvd2VyR1BVcygpOwotI2VuZGlmCiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlciB7CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMTWFuYWdlcj47CiBwdWJsaWM6CiAgICAgc3RhdGljIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlciYgc2hhcmVkTWFuYWdlcigpOwogICAgIAotICAgIHZvaWQgYWRkQ29udGV4
dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIEhvc3RXaW5kb3cqKTsKKyAgICB2b2lkIGFkZENv
bnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKICAgICB2b2lkIHJlbW92ZUNvbnRleHQo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKLQotICAgIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3dG
b3JDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKikgY29uc3Q7Ci0gICAgCi0gICAgdm9p
ZCBhZGRDb250ZXh0UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKik7Ci0gICAgdm9pZCByZW1vdmVDb250ZXh0UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKik7CiAgICAgCiAgICAgdm9pZCByZWN5Y2xlQ29udGV4dElm
TmVjZXNzYXJ5KCk7CiAgICAgYm9vbCBoYXNUb29NYW55Q29udGV4dHMoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRleHRzLnNpemUoKSA+PSBNYXhDb250ZXh0czsgfQogICAgIAotICAgIHZvaWQgdXBk
YXRlQWxsQ29udGV4dHMoKTsKLQogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIHNjcmVlbkRp
ZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCwgY29uc3QgSG9zdFdpbmRvdyopOwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoQ0dEaXJlY3REaXNw
bGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncywgdm9pZCopOworICAgIHZvaWQgZGlz
cGxheVdhc1JlY29uZmlndXJlZCgpOwogI2VuZGlmCiAgICAgCiBwcml2YXRlOgotICAgIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcigpCi0gICAgICAgIDogbV9kaXNhYmxlSGlnaFBlcmZv
cm1hbmNlR1BVVGltZXIoKnRoaXMsICZHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmRp
c2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lckZpcmVkKQotICAgIHsKLSAgICB9Ci0KLSAgICB2
b2lkIHVwZGF0ZUhpZ2hQZXJmb3JtYW5jZVN0YXRlKCk7Ci0gICAgdm9pZCBkaXNhYmxlSGlnaFBl
cmZvcm1hbmNlR1BVVGltZXJGaXJlZCgpOworICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFu
YWdlcigpID0gZGVmYXVsdDsKIAogICAgIFZlY3RvcjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+
IG1fY29udGV4dHM7Ci0gICAgSGFzaE1hcDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIEhvc3RX
aW5kb3cqPiBtX2NvbnRleHRXaW5kb3dNYXA7Ci0gICAgSGFzaFNldDxHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCo+IG1fY29udGV4dHNSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2U7Ci0gICAgCi0gICAg
VGltZXIgbV9kaXNhYmxlSGlnaFBlcmZvcm1hbmNlR1BVVGltZXI7Ci0gICAgYm9vbCBtX3JlcXVl
c3RpbmdIaWdoUGVyZm9ybWFuY2UgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmluZGV4IGZlNzIwZTkzNWVlOWYzMmFjYzdkOGQ4ZWNiNWY1MzFhY2Ix
ZDlmMjEuLjFmOTUxYjdlOTRlZjdhZTQ0MDhmNDViMWJiMTU2YTBkMzU3YTRhYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTMyMCw3ICszMjAsNyBAQAogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDaGVja3NNYWMuaCIKICNpbmNsdWRlICJOU1Njcm9s
bGVySW1wRGV0YWlscy5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lTWFjLmgiCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VH
UFVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNl
R1BVTWFuYWdlci5oCmluZGV4IDU1NTZjYmQ0NGYwZjU0N2NkNjVkM2RlNDFlNTIwNjVmODkzZDNh
YWUuLmFjNjIxOTNhY2ZkNWMyYjY0MmE1NzVhZjM0N2Y1ZTUyZTAyZmU2NWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFn
ZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2luY2x1ZGUgPE9w
ZW5HTC9DR0xUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC00NCwx
MyArNDUsMTMgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlUHJvY2Vzc1JlcXVpcmluZ0hpZ2hQ
ZXJmb3JtYW5jZShXZWJQcm9jZXNzUHJveHkqKTsKIAogcHJpdmF0ZToKLSAgICBIaWdoUGVyZm9y
bWFuY2VHUFVNYW5hZ2VyKCkgPSBkZWZhdWx0OworICAgIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFn
ZXIoKTsKICAgICB+SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcigpOwotCiAgICAgdm9pZCB1cGRh
dGVTdGF0ZSgpOwogCiAgICAgSGFzaFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3Nlc1Jl
cXVpcmluZ0hpZ2hQZXJmb3JtYW5jZTsKICAgICBDR0xQaXhlbEZvcm1hdE9iaiBtX3BpeGVsRm9y
bWF0T2JqIHsgbnVsbHB0ciB9OworICAgIFdlYkNvcmU6OlRpbWVyIG1fdXBkYXRlU3RhdGVUaW1l
cjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdo
UGVyZm9ybWFuY2VHUFVNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hp
Z2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIubW0KaW5kZXggYTk2ZmMzZDExMzc5OGU3OWFmYzBmZGI2
MjY1ZmRkYWZkMDNkMGFlMC4uNTlkZmY4YjIzYzgwYzAyNjViZWU1MTlmODQ2MDczODg0ZjYxNWM5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQZXJmb3JtYW5j
ZUdQVU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQZXJm
b3JtYW5jZUdQVU1hbmFnZXIubW0KQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBQTEFURk9STShNQUMp
CiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ2hlY2tzTWFj
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9PcGVuR0xTb2Z0TGlua0NvY29hLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNDQsNiArNDQsMTMgQEAgSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlciYg
SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6c2luZ2xldG9uKCkKICAgICByZXR1cm4gc2hhcmVk
TWFuYWdlcjsKIH0KIAorSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6SGlnaFBlcmZvcm1hbmNl
R1BVTWFuYWdlcigpCisgICAgOiBtX3VwZGF0ZVN0YXRlVGltZXIoKnRoaXMsICZIaWdoUGVyZm9y
bWFuY2VHUFVNYW5hZ2VyOjp1cGRhdGVTdGF0ZSkKK3sKK30KKworSGlnaFBlcmZvcm1hbmNlR1BV
TWFuYWdlcjo6fkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKIHZvaWQg
SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6YWRkUHJvY2Vzc1JlcXVpcmluZ0hpZ2hQZXJmb3Jt
YW5jZShXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiB7CiAgICAgaWYgKCFXZWJDb3JlOjpoYXNM
b3dBbmRIaWdoUG93ZXJHUFVzKCkpCkBAIC02NSw3ICs3Miw4IEBAIHZvaWQgSGlnaFBlcmZvcm1h
bmNlR1BVTWFuYWdlcjo6cmVtb3ZlUHJvY2Vzc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZShXZWJQ
cm9jZXNzCiAKICAgICBpZiAobV9wcm9jZXNzZXNSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UucmVt
b3ZlKHByb2Nlc3MpKSB7CiAgICAgICAgIExPRyhXZWJHTCwgIkhpZ2hQZXJmb3JtYW5jZUdQVU1h
bmFnZXI6OnJlbW92ZVByb2Nlc3NSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoKSAtIHJlbW92aW5n
IHByb2Nlc3MgJXAiLCBwcm9jZXNzKTsKLSAgICAgICAgdXBkYXRlU3RhdGUoKTsKKyAgICAgICAg
c3RhdGljIGNvbnN0IFNlY29uZHMgdGltZVRvS2VlcEhpZ2hQZXJmb3JtYW5jZUdQVUFsaXZlIHsg
MTBfcyB9OworICAgICAgICBtX3VwZGF0ZVN0YXRlVGltZXIuc3RhcnRPbmVTaG90KHRpbWVUb0tl
ZXBIaWdoUGVyZm9ybWFuY2VHUFVBbGl2ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTc0LDYgKzgyLDggQEAgdm9pZCBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpyZW1vdmVQcm9j
ZXNzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKFdlYlByb2Nlc3MKIAogdm9pZCBIaWdoUGVyZm9y
bWFuY2VHUFVNYW5hZ2VyOjp1cGRhdGVTdGF0ZSgpCiB7CisgICAgaWYgKG1fdXBkYXRlU3RhdGVU
aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3VwZGF0ZVN0YXRlVGltZXIuc3RvcCgpOwogICAg
IGlmIChtX3Byb2Nlc3Nlc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZS5zaXplKCkpIHsKICAgICAg
ICAgaWYgKCFtX3BpeGVsRm9ybWF0T2JqKSB7CiAgICAgICAgICAgICBMT0coV2ViR0wsICJIaWdo
UGVyZm9ybWFuY2VHUFVNYW5hZ2VyIC0gdHVybmluZyBvbiBoaWdoLXBlcmZvcm1hbmNlIEdQVS4i
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNwcAppbmRleCA0NGM2YjQz
MmU3ZDVjNWRhYTc4ZDhkMDJhYjc3Yzc5MGMxNGE5MzRhLi5jMWMyYTJlYmRjNzc4NzdlMTdmN2Mx
OTI1MzM1OTM4NWRhZjc4NDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGll
bnQuY3BwCkBAIC00MywxMiArNDMsMTkgQEAgV2ViU3dpdGNoaW5nR1BVQ2xpZW50JiBXZWJTd2l0
Y2hpbmdHUFVDbGllbnQ6OnNpbmdsZXRvbigpCiAKIHZvaWQgV2ViU3dpdGNoaW5nR1BVQ2xpZW50
OjpyZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCkKIHsKKyAgICBtX3JlcXVlc3RzKys7CisgICAg
aWYgKG1fcmVxdWVzdHMgIT0gMSkKKyAgICAgICAgcmV0dXJuOwogICAgIExPRyhXZWJHTCwgIldl
YlN3aXRjaGluZ0dQVUNsaWVudDo6cmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSgpIGZyb20gV2Vi
UHJvY2VzcyIpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6UmVxdWVzdEhpZ2hQZXJm
b3JtYW5jZUdQVSgpLCAwKTsKIH0KIAogdm9pZCBXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlbGVh
c2VIaWdoUGVyZm9ybWFuY2VHUFUoKQogeworICAgIEFTU0VSVChtX3JlcXVlc3RzKTsKKyAgICBt
X3JlcXVlc3RzLS07CisgICAgaWYgKG1fcmVxdWVzdHMpCisgICAgICAgIHJldHVybjsKICAgICBM
T0coV2ViR0wsICJXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlbGVhc2VIaWdoUGVyZm9ybWFuY2VH
UFUoKSBmcm9tIFdlYlByb2Nlc3MiKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlJl
bGVhc2VIaWdoUGVyZm9ybWFuY2VHUFUoKSwgMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hp
bmdHUFVDbGllbnQuaAppbmRleCAyMGViMmVlMjU3MWZlYmEyZGE0ODRmMjE4Nzc3OGIxMjk0MGFl
NTMzLi5iYjgxZDhhNjA4YWIxZmRhNDVmMDdlYTdiMzhhNjM0NTE5ZTc4NDIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN3aXRjaGlu
Z0dQVUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmgKQEAgLTMyLDkgKzMyLDEwIEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgV2ViU3dpdGNoaW5nR1BVQ2xpZW50IDogcHVibGljIFdlYkNvcmU6
OlN3aXRjaGluZ0dQVUNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlN3aXRjaGluZ0dQ
VUNsaWVudCYgc2luZ2xldG9uKCk7Ci0gICAgCitwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdEhp
Z2hQZXJmb3JtYW5jZUdQVSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVsZWFzZUhpZ2hQZXJmb3Jt
YW5jZUdQVSgpIG92ZXJyaWRlOworICAgIHVuc2lnbmVkIG1fcmVxdWVzdHMgeyAwIH07CiB9Owog
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418149</attachid>
            <date>2021-01-22 08:12:53 -0800</date>
            <delta_ts>2021-01-22 12:33:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220843-20210122181251.patch</filename>
            <type>text/plain</type>
            <size>59337</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTBlMTg1NzBmN2QyNTI1
MWZiMTY2MzllOGI1YTdjM2Q1OTU4MDRmMS4uMzc5YjNmMDQwODZjZDliNzFmODkzZDZiMDljNWFj
MmJiNzdhY2Y3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTAxLTIyICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgcG93ZXIg
cHJlZmVyZW5jZSBhbmQgZGlzY3JldGUvaW50ZXJuYWwgZ3B1IHNlbGVjdGlvbiBpbXBsZW1lbnRl
ZCBpbmNvcnJlY3RseSB3aXRoIEFOR0xFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjA4NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgQU5HTEUgZXh0ZW5zaW9uIEVHTF9BTkdMRV9wb3dlcl9wcmVm
ZXJlbmNlIHRvIHNpZ25hbCB0byBBTkdMRSB0aGF0IHRoZSB1bmRlcmx5aW5nCisgICAgICAgIENH
TCBjb250ZXh0IHNob3VsZCBiZSB1cGRhdGVkIGFzIGEgcmVzcG9uc2UgdG8gZGlzcGxheSByZWNv
bmZpZ3VyYXRpb24gc2lnbmFsLgorICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCBBTkdMRSBzdGF0
ZSBzdGF5cyBjb25zaXN0ZW50IHdpdGggdGhlIGFjdHVhbCBDR0wgY29udGV4dCBiZWhhdmlvciwg
YXMKKyAgICAgICAgd2UgZG9uJ3QgY2hhbmdlIHRoZSBjb250ZXh0IGJlaGluZCBBTkdMRSdzIGJh
Y2suCisKKyAgICAgICAgUmVtb3ZlIHRoZSBmZWF0dXJlIHdoZXJlIHRoZSBjb250ZXh0IEdQVSBp
cyBzZWxlY3RlZCBiYXNlZCBvbiB0aGUgZGlzcGxheSB0aGUgd2luZG93IGlzCisgICAgICAgIG9u
LiBUaGlzIGNhbm5vdCB3b3JrIHdpdGggdGhlIGxvZ2ljIG9mICJwb3dlclByZWZlcmVuY2UgPSAi
aGlnaC1wZXJmb3JtYW5jZSIgZ29lcyB0bworICAgICAgICBkaXNjcmV0ZSBHUFUiLiBBbHNvLCB0
aGlzIGNhbm5vdCB3b3JrIHdpdGggQU5HTEUgYXQgYWxsLCBzaW5jZSBhbGwgY29udGV4dHMgYXJl
IGJhY2tlZAorICAgICAgICBieSBhIHNpbmdsZSBwbGF0Zm9ybSBjb250ZXh0LiBUaHVzIGFsbCBj
b250ZXh0cyB3aWxsIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIEdQVS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgZHVlIHRvIHRoZSB0ZXN0IHJ1bm5lciBtaXNzaW5nIGZlYXR1cmVzLiBUaGUgYnVn
IGJsb2NrZXJzIHRyYWNrIHRoZSB0ZXN0aW5nLgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21h
a2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0hpZ2hQZXJmb3JtYW5jZUNv
bnRleHQpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250
ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZGlzcGxheVdhc1JlY29uZmlndXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjphdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6
Omhhc011eENhcGFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6aGFzTG93QW5kSGlnaFBvd2Vy
R1BVcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFj
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1Njb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oLgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6U2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0Ojp+U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0OjpvcGVyYXRv
cj0pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6
YWNxdWlyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNs
aWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnJlbW92ZUNv
bnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisK
IDIwMjEtMDEtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IFZhbGlkYXRlIEl0ZW1IYW5kbGVzIHdoZW4gZGVjb2RpbmcgdGhlbSBpbiBHUFVQcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDk3ODkwZWI1Y2NhYTEyODhhMWRjNjVjODc1OWQ1ZGY1YmNhMDlhMDkuLjM1MmIx
ZjdlZDhkMTk4ZmQwYjI5ZTQ3ZWZhN2E1YTIzOTNmNzliYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjMgQEAKKzIwMjEtMDEtMjIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWJHTCBwb3dlciBwcmVmZXJlbmNlIGFuZCBkaXNjcmV0ZS9pbnRlcm5hbCBn
cHUgc2VsZWN0aW9uIGltcGxlbWVudGVkIGluY29ycmVjdGx5IHdpdGggQU5HTEUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDg0MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIGhpZ2gtcGVy
Zm9ybWFuY2UgR1BVIHNodXRkb3duIHRpbWVyIGZyb20gaW5kaXZpZHVhbCB3ZWIgcHJvY2Vzc2Vz
IHRvIHRoZSBtYWluIGNsYXNzCisgICAgICAgIGluIHRoZSB1aSBwcm9jZXNzLiBUaGlzIHNpbXBs
aWZpZXMgdGhlIGltcGxlbWVudGF0aW9uIGFuZCByZWR1Y2VzIHRoZSBudW1iZXIgb2YgdGltZXJz
LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpIaWdoUGVyZm9ybWFu
Y2VHUFVNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdl
cjo6cmVtb3ZlUHJvY2Vzc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZSk6CisgICAgICAgIChXZWJL
aXQ6OkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlcXVlc3RIaWdoUGVyZm9y
bWFuY2VHUFUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlbGVh
c2VIaWdoUGVyZm9ybWFuY2VHUFUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5oOgorCiAyMDIxLTAxLTIxICBQZW5nIExpdSAg
PHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgUGlQIHZpZGVvIHN1YnRpdGxlcyBzdG9w
IHVwZGF0aW5nIHdoZW4gU2FmYXJpIGlzIGJhY2tncm91bmRlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQppbmRleCBhYzcwMTU0OTk3OTllNGZiNGVlMmEwZGUwMWI0MzUxMmIwOWExZjhlLi5jYWQy
NjQ0OWM3NGM4NWNhY2I5NjViMzljOGZiNzUyOTAxZmNhNmYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtMzQwLDYgKzM0MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0Zsb2F0U2l6ZU1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0NoZWNrc01hYy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9JbnRQb2ludE1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggM2JlMTc1
OGNkODc1NTM5YWM3ZDJjNmRhYTA3OGYwY2IzMDJjODcxMy4uZTg3ZDRkZDA3OWE1NWY2OWQyMTcz
YmRmMTEyYzJlZjlmOWE2ZWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MTgsNiAr
NDE4LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRmxvYXRTaXplTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01h
Yy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSW1hZ2VNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRQb2ludE1hYy5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM4MzgwZTFiNTZhODg1OTJmMzk0YjdmNjM4ZTM4YWUzY2Y1ODk0N2MuLmJmNjViZGEzOTkx
ZTYwZGQxOWY2ZmRlNzg5YWYyODBkNGVhZjYwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIyNTksNiArMjI1OSw5IEBACiAJ
CTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5
MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JC
MzRBMTcyNTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2
MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi87
IH07CiAJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJh
Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTdCQjY4MEIyMjVCQTBENEEwMDJCODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2
ODBCMDI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCQjY4
MEI2MjVCQTFBRTIwMDJCODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2ODBCNDI1
QkExQUUxMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyB9
OworCQk3QkI2ODBCQTI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjY4MEI4MjVCQTFC
RTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkwNkZCQjRGMEYyQyAvKiBK
U1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpTU1ZHR3JhcGhpY3NFbGVt
ZW50LmggKi87IH07CiAJCTdDMDI5QzZFMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAyOUM2RDI0
OTNDOEY4MDAyNjgyMDQgLyogQ29sb3JUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMTg0M0ZFMUM4QjcyODMwMDJFQjk3MyAvKiBBdXRv
ZmlsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mx
ODQzRkMxQzhCNzI4MzAwMkVCOTczIC8qIEF1dG9maWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjk0LDYgKzEwMjk3LDEwIEBACiAJCTdC
QjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDUyNTM3
NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250
ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JC
NjgwQjAyNUJBMEQ0QTAwMkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNl
R1BVUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkI2ODBCNDI1QkEx
QUUxMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQjY4MEI3MjVCQTFCRTMwMDJCODcz
OCAvKiBHcmFwaGljc0NoZWNrc01hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCQjY4MEI4MjVCQTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1QjI1NzYzQjhEMDBFODVEOTggLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzAxMUYzRDI0RkFEMzYwMDA1QkVGMTAgLyogU2V0dGluZ3MuY3BwLmVyYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBT
ZXR0aW5ncy5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAxMUYzRTI0
RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI2NDk2LDExICsyNjUwMywxNSBAQAogCQkJCUIyNzUzNTREMEIwNTM4MTQwMDJD
RTY0RiAvKiBGbG9hdFNpemVNYWMubW0gKi8sCiAJCQkJQjJBRkZDNzUwRDAwQTVDMTAwMzAwNzRE
IC8qIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwICovLAogCQkJCUIyQUZGQzc2MEQwMEE1QzEw
MDMwMDc0RCAvKiBGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggKi8sCisJCQkJN0JCNjgwQjcyNUJB
MUJFMzAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmNwcCAqLywKKwkJCQk3QkI2ODBCODI1
QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLywKIAkJCQlCMjc1MzU4RDBC
MDUzQTY2MDAyQ0U2NEYgLyogSWNvbk1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RTBCMDUzODE0MDAy
Q0U2NEYgLyogSW1hZ2VNYWMubW0gKi8sCiAJCQkJQjI3NTM1NEYwQjA1MzgxNDAwMkNFNjRGIC8q
IEludFBvaW50TWFjLm1tICovLAogCQkJCUIyNzUzNTUxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRT
aXplTWFjLm1tICovLAogCQkJCTJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAvKiBQREZEb2N1bWVu
dEltYWdlTWFjLm1tICovLAorCQkJCTdCQjY4MEI0MjVCQTFBRTEwMDJCODczOCAvKiBTY29wZWRI
aWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8sCisJCQkJN0JCNjgwQjAyNUJBMEQ0QTAwMkI4
NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLywKIAkJCQkxNjNFODhG
NTExOEEzOUQyMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgKi8sCiAJCQkJ
QzExQTlFRDIyMTQwNTc4QjAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi8sCiAJ
CQkJQzExQTlFQ0QyMTQwM0E1QzAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5oICovLApA
QCAtMzIyMzMsNiArMzIyNDQsNyBAQAogCQkJCUJDNTNDNUY1MERBNTZCOTIwMDIxRUI1RCAvKiBH
cmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjQwRDAwQkYyMjAwNzFCNzgyIC8q
IEdyYWRpZW50QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0ODFGMDQxNDZCNUM2
QjAwQUE3ODM0IC8qIEdyYWRpZW50SW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCQjY4MEJB
MjVCQTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjJBMDE1QTkwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM0OTA3RTQxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENH
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTNERTg3MDIzQTk2OTczMDA4RkM0N0IgLyogR3JhcGhp
Y3NDb250ZXh0R0wuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ0NTUsNiArMzQ0NjcsOCBAQAogCQkJ
CTQ5RTkxMUNCMEVGODZENDcwMDlEMENBRiAvKiBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNURGRThGNTcwRDE2NDc3QzAwNzZFOTM3IC8qIFNjaGVkdWxlZEFj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJEMEJGOTMxMkE0MkJGNTAwNzJGRDQzIC8qIFNj
b3BlZEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCQjY4MEI2MjVCQTFBRTIwMDJC
ODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk3QkI2ODBCMjI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BV
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQzAxQkUwQzI3NERBQzAwOUY0RUM5IC8q
IFNjcmVlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzFFMUQyMzYyMDNERjE1NDAwNTg0NjY1IC8q
IFNjcmVlblByb3BlcnRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NEQ4MkMxMTFEMzQ3NDgw
MDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAppbmRleCA1NzhlMDIxODBjNDZmM2RiYzRmZmZkMGFmMGMzNTNmMzk0ODIwZGJl
Li5lNzdkODBhODUyZmI1YWM1ZGQ3MWNlM2Y5N2NjZjY2NjQ2MWNlNTZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcApAQCAtNjQyLDcgKzY0Miw3IEBAIHByaXZhdGU6CiAKIHN0YXRpYyBib29sIGlzSGlnaFBl
cmZvcm1hbmNlQ29udGV4dChjb25zdCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+JiBjb250ZXh0
KQogewotICAgIHJldHVybiBjb250ZXh0LT5wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24o
KSA9PSBXZWJHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOworICAgIHJldHVybiBj
b250ZXh0LT5jb250ZXh0QXR0cmlidXRlcygpLnBvd2VyUHJlZmVyZW5jZSA9PSBXZWJHTFBvd2Vy
UHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKENh
bnZhc0Jhc2UmIGNhbnZhcywgV2ViR0xDb250ZXh0QXR0cmlidXRlcyYgYXR0cmlidXRlcywgV2Vi
R0xWZXJzaW9uIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggYjcxMGU3MTVhNjZkY2Fj
NTY3NDJkYjZiYmVhNzQxZDZmODYzNDJiMy4uNGE1NWY5ZGExYzViNTFmNmMyNGEwYjBlNWM1YzZm
YmIzZjU0OWM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtNjcsMTAgKzY3LDYgQEAKICNp
bmNsdWRlICJEYXRlVGltZUNob29zZXIuaCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoV0VCR0wpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
LmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwpAQCAtNTQ4LDEwICs1NDQsNiBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlk
Q2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3BhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJ
RCwgbm9taW5hbEZyYW1lSW50ZXJ2YWwpOwotCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
V0VCR0wpCi0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2Vy
KCkuc2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCwgdGhpcyk7Ci0jZW5kaWYKIH0KIAogYm9vbCBD
aHJvbWU6OnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4
IGEzMGNlZTVmYWI2NDc5MmFjYjhjNDVlMWVlNTBlMDBjZDIyYzJkZjQuLjJhZDE0N2Y2ZWFiOTRj
ZjNiZGYwM2JjNmZkYzIxMTdkNGFlMDA1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMTI2Myw4ICsxMjYzLDYg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wp
ID0gMDsKIAotICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93
ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgPSAwOwotCiAgICAgdmlydHVhbCBi
b29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCA9IDA7CiAKICAgICAvLyBTeW50aGVzaXplcyBh
biBPcGVuR0wgZXJyb3Igd2hpY2ggd2lsbCBiZSByZXR1cm5lZCBmcm9tIGEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAppbmRleCA1NTJkODUzOWI2OTUwMGNmMTE2OTY4
MGQ0YjVjNjI4NTg1OGI3NzM3Li5lNTBmOGZiNGM1YzM2NzA0NjFjODEzNDVlNDQzNzNjNmE0ZGEx
MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC00OSwx
MiArNDksNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRDb250
ZXh0VmlzaWJpbGl0eShib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLUdyYXBoaWNz
Q29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Ojpwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdAotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQogYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFdF
QkdMMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCmluZGV4IDI0NzFkNGUy
NWM5YWEyMDBlYzc0M2IxZmUwYzY0NjhiMGM5YTUwODMuLjI4OGMyZWE4YWQzOWU4OWI2OTY5ZmQw
YjIxNmI4YjY3YjBiZWRhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
aApAQCAtNjEsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IGZpbmFsOwogICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZp
bmFsOwogICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7Ci0gICAgR3Jh
cGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0
aW9uKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKICAgICBib29sIGxheWVy
Q29tcG9zaXRlZCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW0KaW5kZXggNjU5ZmZmZjEyODRjMDJhMjIzMjIxMjA2ZWI4ZjE2ZjJhODEyYjVh
Yy4uYWE5ZTU1YjgwNjg4YjIzZWZlODVlMDYwOTZmN2ZlMjNjMDg0ZTg1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgpAQCAtMzIsOSArMzIsNyBAQAog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgogI2ltcG9ydCAiR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgogI2ltcG9ydCAi
TG9nZ2luZy5oIgotI2ltcG9ydCAiT3BlbkdMU29mdExpbmtDb2NvYS5oIgogI2ltcG9ydCAiUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkLmgiCiAjaW1w
b3J0ICJXZWJHTExheWVyLmgiCkBAIC00MiwxMSArNDAsNiBAQAogI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBM
QVRGT1JNKE1BQykKLSNpbXBvcnQgIlNjcmVlblByb3BlcnRpZXMuaCIKLSNpbXBvcnQgPE9wZW5H
TC9DR0xSZW5kZXJlcnMuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQ1YuaCIKICNlbmRpZgpAQCAt
MTUxLDE3ICsxNDQsMTcgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEcKICAgICBpZiAoIWNvbnRl
eHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRl
eHQuZ2V0KCksIGhvc3RXaW5kb3cpOworICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5nZXQoKSk7CiAKICAgICByZXR1
cm4gY29udGV4dDsKIH0KIAogUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFy
ZWRDb250ZXh0KQogewotICAgIGF1dG8gaG9zdFdpbmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhvc3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRD
b250ZXh0KTsKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywg
JnNoYXJlZENvbnRleHQsIG51bGxwdHIpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5wdHIoKSwgaG9zdFdp
bmRvdyk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTChzaGFyZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIG51bGxwdHIsICZzaGFy
ZWRDb250ZXh0LCBudWxscHRyKSk7CisKKyAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRleHQucHRyKCkpOwogCiAgICAgcmV0
dXJuIGNvbnRleHQ7CiB9CkBAIC0xNzEsNzIgKzE2NCwxNCBAQCBSZWY8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGNv
bnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0
cnMsIG51bGxwdHIsIG51bGxwdHIsIHN3YXBDaGFpbikpOwogfQogCi0jaWYgUExBVEZPUk0oTUFD
KSAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGQgYmUganVzdCBlbmFibGVkIC0gc2VlIDxy
ZGFyOi8vNTMwNjI3OTQ+LgotCi1zdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29u
dGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiwgSU9S
ZWdpc3RyeUdQVUlEIHByZWZlcnJlZEdQVUlEKQotewotICAgIC8vIFdoZW4gdGhlIFdlYlByb2Nl
c3MgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIFdpbmRvd1NlcnZlciwgdGhlcmUgaXMgbm8g
d2F5IGZvciBPcGVuR0wgdG8gdGVsbCB3aGljaCBHUFUgaXMgY29ubmVjdGVkIHRvIGEgZGlzcGxh
eS4KLSAgICAvLyBPbiAxMC4xMyssIGZpbmQgdGhlIHZpcnR1YWwgc2NyZWVuIHRoYXQgY29ycmVz
cG9uZHMgdG8gdGhlIHByZWZlcnJlZCBHUFUgYnkgaXRzIHJlZ2lzdHJ5SUQuCi0gICAgLy8gQ0dM
U2V0VmlydHVhbFNjcmVlbiBjYW4gdGhlbiBiZSB1c2VkIHRvIHRlbGwgT3BlbkdMIHdoaWNoIEdQ
VSBpdCBzaG91bGQgYmUgdXNpbmcuCi0KLSAgICBpZiAoIWNvbnRleHRPYmogfHwgIXByZWZlcnJl
ZEdQVUlEKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHTGludCB2aXJ0dWFsU2NyZWVuQ291bnQg
PSAwOwotICAgIENHTEVycm9yIGVycm9yID0gQ0dMRGVzY3JpYmVQaXhlbEZvcm1hdChwaXhlbEZv
cm1hdE9iaiwgMCwga0NHTFBGQVZpcnR1YWxTY3JlZW5Db3VudCwgJnZpcnR1YWxTY3JlZW5Db3Vu
dCk7Ci0gICAgQVNTRVJUKGVycm9yID09IGtDR0xOb0Vycm9yKTsKLQotICAgIEdMaW50IGZpcnN0
QWNjZWxlcmF0ZWRTY3JlZW4gPSAtMTsKLQotICAgIGZvciAoR0xpbnQgdmlydHVhbFNjcmVlbiA9
IDA7IHZpcnR1YWxTY3JlZW4gPCB2aXJ0dWFsU2NyZWVuQ291bnQ7ICsrdmlydHVhbFNjcmVlbikg
ewotICAgICAgICBHTGludCBkaXNwbGF5TWFzayA9IDA7Ci0gICAgICAgIGVycm9yID0gQ0dMRGVz
Y3JpYmVQaXhlbEZvcm1hdChwaXhlbEZvcm1hdE9iaiwgdmlydHVhbFNjcmVlbiwga0NHTFBGQURp
c3BsYXlNYXNrLCAmZGlzcGxheU1hc2spOwotICAgICAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5v
RXJyb3IpOwotCi0gICAgICAgIGF1dG8gZ3B1SUQgPSBncHVJREZvckRpc3BsYXlNYXNrKGRpc3Bs
YXlNYXNrKTsKLQotICAgICAgICBpZiAoZ3B1SUQgPT0gcHJlZmVycmVkR1BVSUQpIHsKLSAgICAg
ICAgICAgIGVycm9yID0gQ0dMU2V0VmlydHVhbFNjcmVlbihjb250ZXh0T2JqLCB2aXJ0dWFsU2Ny
ZWVuKTsKLSAgICAgICAgICAgIEFTU0VSVChlcnJvciA9PSBrQ0dMTm9FcnJvcik7Ci0gICAgICAg
ICAgICBMT0coV2ViR0wsICJDb250ZXh0ICglcCkgc2V0IHRvIEdQVSB3aXRoIElEOiAoJWxsZCku
IiwgY29udGV4dE9iaiwgZ3B1SUQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKGZpcnN0QWNjZWxlcmF0ZWRTY3JlZW4gPCAwKSB7Ci0gICAgICAgICAgICBH
TGludCBpc0FjY2VsZXJhdGVkID0gMDsKLSAgICAgICAgICAgIGVycm9yID0gQ0dMRGVzY3JpYmVQ
aXhlbEZvcm1hdChwaXhlbEZvcm1hdE9iaiwgdmlydHVhbFNjcmVlbiwga0NHTFBGQUFjY2VsZXJh
dGVkLCAmaXNBY2NlbGVyYXRlZCk7Ci0gICAgICAgICAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5v
RXJyb3IpOwotICAgICAgICAgICAgaWYgKGlzQWNjZWxlcmF0ZWQpCi0gICAgICAgICAgICAgICAg
Zmlyc3RBY2NlbGVyYXRlZFNjcmVlbiA9IHZpcnR1YWxTY3JlZW47Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICAvLyBObyByZWdpc3RyeUlEIG1hdGNoIGZvdW5kOyBzZXQgdG8gZmlyc3QgaGFyZHdh
cmUtYWNjZWxlcmF0ZWQgdmlydHVhbCBzY3JlZW4uCi0gICAgaWYgKGZpcnN0QWNjZWxlcmF0ZWRT
Y3JlZW4gPj0gMCkgewotICAgICAgICBlcnJvciA9IENHTFNldFZpcnR1YWxTY3JlZW4oY29udGV4
dE9iaiwgZmlyc3RBY2NlbGVyYXRlZFNjcmVlbik7Ci0gICAgICAgIEFTU0VSVChlcnJvciA9PSBr
Q0dMTm9FcnJvcik7Ci0gICAgICAgIExPRyhXZWJHTCwgIlJlZ2lzdHJ5SUQgKCVsbGQpIG5vdCBt
YXRjaGVkOyBDb250ZXh0ICglcCkgc2V0IHRvIHZpcnR1YWwgc2NyZWVuICglZCkuIiwgcHJlZmVy
cmVkR1BVSUQsIGNvbnRleHRPYmosIGZpcnN0QWNjZWxlcmF0ZWRTY3JlZW4pOwotICAgIH0KLX0K
LQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLQotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENv
bnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2FwQ2hhaW4pCitH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiwgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIHNoYXJlZENvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
KiBzd2FwQ2hhaW4pCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgRGVzdGluYXRpb246
Ok9mZnNjcmVlbiwgc2hhcmVkQ29udGV4dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0gYXR0cnMu
d2ViR0xWZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJHTDI7CiAK
LSNpZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCi0gICAgbV9wb3dlclByZWZlcmVuY2VV
c2VkRm9yQ3JlYXRpb24gPSAoaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpICYmIGF0dHJzLnBvd2Vy
UHJlZmVyZW5jZSA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZv
cm1hbmNlKSA/IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFu
Y2UgOiBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKLSNlbHNlCi0g
ICAgbV9wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24gPSBHcmFwaGljc0NvbnRleHRHTFBv
d2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKLSNlbmRpZgotCiAgICAgbV9kaXNwbGF5T2JqID0gSW5p
dGlhbGl6ZUVHTERpc3BsYXkoYXR0cnMpOwogICAgIGlmIChtX2Rpc3BsYXlPYmogPT0gRUdMX05P
X0RJU1BMQVkpCiAgICAgICAgIHJldHVybjsKLSAgICBjb25zdCBjaGFyICpkaXNwbGF5RXh0ZW5z
aW9ucyA9IEVHTF9RdWVyeVN0cmluZyhtX2Rpc3BsYXlPYmosIEVHTF9FWFRFTlNJT05TKTsKLSAg
ICBMT0coV2ViR0wsICJFeHRlbnNpb25zOiAlcyIsIGRpc3BsYXlFeHRlbnNpb25zKTsKIAogICAg
IEVHTGludCBjb25maWdBdHRyaWJ1dGVzW10gPSB7CiAgICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZ
UEUsIEVHTF9PUEVOR0xfRVMyX0JJVCwKQEAgLTI5MCwxMSArMjI1LDE2IEBAIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0CiAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9DT05URVhU
X0JJTkRfR0VORVJBVEVTX1JFU09VUkNFX0NIUk9NSVVNKTsKICAgICBlZ2xDb250ZXh0QXR0cmli
dXRlcy5hcHBlbmQoRUdMX0ZBTFNFKTsKIAotICAgIGlmIChzdHJzdHIoZGlzcGxheUV4dGVuc2lv
bnMsICJFR0xfQU5HTEVfcG93ZXJfcHJlZmVyZW5jZSIpKSB7Ci0gICAgICAgIGVnbENvbnRleHRB
dHRyaWJ1dGVzLmFwcGVuZChFR0xfUE9XRVJfUFJFRkVSRU5DRV9BTkdMRSk7Ci0gICAgICAgIC8v
IEVHTF9MT1dfUE9XRVJfQU5HTEUgaXMgdGhlIGRlZmF1bHQuIENoYW5nZSB0bwotICAgICAgICAv
LyBFR0xfSElHSF9QT1dFUl9BTkdMRSBpZiBkZXNpcmVkLgotICAgICAgICBlZ2xDb250ZXh0QXR0
cmlidXRlcy5hcHBlbmQoRUdMX0xPV19QT1dFUl9BTkdMRSk7CisgICAgYm9vbCBzdXBwb3J0c1Bv
d2VyUHJlZmVyZW5jZSA9IGZhbHNlOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBjb25zdCBjaGFy
ICpkaXNwbGF5RXh0ZW5zaW9ucyA9IEVHTF9RdWVyeVN0cmluZyhtX2Rpc3BsYXlPYmosIEVHTF9F
WFRFTlNJT05TKTsKKyAgICBtX3N1cHBvcnRzUG93ZXJQcmVmZXJlbmNlID0gc3Ryc3RyKGRpc3Bs
YXlFeHRlbnNpb25zLCAiRUdMX0FOR0xFX3Bvd2VyX3ByZWZlcmVuY2UiKTsKKyAgICBzdXBwb3J0
c1Bvd2VyUHJlZmVyZW5jZSA9IG1fc3VwcG9ydHNQb3dlclByZWZlcmVuY2U7CisjZW5kaWYKKyAg
ICBpZiAoIXN1cHBvcnRzUG93ZXJQcmVmZXJlbmNlKSB7CisgICAgICAgIGF1dG8gYXR0cnMgPSBj
b250ZXh0QXR0cmlidXRlcygpOworICAgICAgICBhdHRycy5wb3dlclByZWZlcmVuY2UgPSBHcmFw
aGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKKyAgICAgICAgc2V0Q29udGV4
dEF0dHJpYnV0ZXMoYXR0cnMpOwogICAgIH0KICAgICBlZ2xDb250ZXh0QXR0cmlidXRlcy5hcHBl
bmQoRUdMX05PTkUpOwogCkBAIC0zMzIsMjEgKzI3Miw2IEBAIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMg
YXR0CiAgICAgICAgIH0KICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lv
bik7CiAgICAgfQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAvLyBGSVhNRTogSXQncyB1bmNsZWFy
IGlmIE1BQ0NBVEFMWVNUIHNob3VsZCB0YWtlIHRoZXNlIHN0ZXBzIGFzIHdlbGwsIGJ1dCB0aGF0
Ci0gICAgLy8gd291bGQgcmVxdWlyZSB0aGUgUGxhdGZvcm1TY3JlZW5NYWMgY29kZSB0byBiZSBl
eHBvc2VkIHRvIENhdGFseXN0IHRvby4KLSAgICBFR0xEZXZpY2VFWFQgZGV2aWNlID0gbnVsbHB0
cjsKLSAgICBFR0xfUXVlcnlEaXNwbGF5QXR0cmliRVhUKG1fZGlzcGxheU9iaiwgRUdMX0RFVklD
RV9FWFQsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJmRldmljZSkpOwotICAgIENHTENv
bnRleHRPYmogY2dsQ29udGV4dCA9IG51bGxwdHI7Ci0gICAgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4
ZWxGb3JtYXQgPSBudWxscHRyOwotICAgIEVHTF9RdWVyeURldmljZUF0dHJpYkVYVChkZXZpY2Us
IEVHTF9DR0xfQ09OVEVYVF9BTkdMRSwgcmVpbnRlcnByZXRfY2FzdDxFR0xBdHRyaWIqPigmY2ds
Q29udGV4dCkpOwotICAgIEVHTF9RdWVyeURldmljZUF0dHJpYkVYVChkZXZpY2UsIEVHTF9DR0xf
UElYRUxfRk9STUFUX0FOR0xFLCByZWludGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZwaXhlbEZv
cm1hdCkpOwotICAgIGF1dG8gZ3B1SUQgPSAoaG9zdFdpbmRvdyAmJiBob3N0V2luZG93LT5kaXNw
bGF5SUQoKSkgPyBncHVJREZvckRpc3BsYXkoaG9zdFdpbmRvdy0+ZGlzcGxheUlEKCkpIDogcHJp
bWFyeUdQVUlEKCk7Ci0gICAgc2V0R1BVQnlSZWdpc3RyeUlEKGNnbENvbnRleHQsIHBpeGVsRm9y
bWF0LCBncHVJRCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKLSNlbmRp
ZgotCiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAgICAgYXR0cnMgPSBjb250ZXh0QXR0cmli
dXRlcygpOyAvLyBUaGV5IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKQEAg
LTU2MSwzMCArNDg2LDI2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNoZWNrR1BV
U3RhdHVzKCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4dFZpc2li
aWxpdHkoYm9vbCBpc1Zpc2libGUpCiB7Ci0gICAgaWYgKG1fcG93ZXJQcmVmZXJlbmNlVXNlZEZv
ckNyZWF0aW9uID09IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9y
bWFuY2UpIHsKLSAgICAgICAgaWYgKGlzVmlzaWJsZSkKLSAgICAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHRSZXF1aXJpbmdI
aWdoUGVyZm9ybWFuY2UodGhpcyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlbW92ZUNvbnRleHRSZXF1
aXJpbmdIaWdoUGVyZm9ybWFuY2UodGhpcyk7Ci0gICAgfQotfQotCiAjaWYgUExBVEZPUk0oTUFD
KQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dXBkYXRlQ0dMQ29udGV4dCgpCi17Ci0g
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMo
KS5wb3dlclByZWZlcmVuY2UgIT0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6Okhp
Z2hQZXJmb3JtYW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIExPRyhXZWJHTCwgIkRldGVjdGVk
IGEgbXV4IHN3aXRjaCBvciBkaXNwbGF5IHJlY29uZmlndXJhdGlvbi4gQ2FsbCBDR0xVcGRhdGVD
b250ZXh0LiAoJXApIiwgdGhpcyk7Ci0KLSAgICBFR0xEZXZpY2VFWFQgZGV2aWNlID0gbnVsbHB0
cjsKLSAgICBFR0xfUXVlcnlEaXNwbGF5QXR0cmliRVhUKG1fZGlzcGxheU9iaiwgRUdMX0RFVklD
RV9FWFQsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJmRldmljZSkpOwotICAgIENHTENv
bnRleHRPYmogY2dsQ29udGV4dCA9IG51bGxwdHI7Ci0gICAgRUdMX1F1ZXJ5RGV2aWNlQXR0cmli
RVhUKGRldmljZSwgRUdMX0NHTF9DT05URVhUX0FOR0xFLCByZWludGVycHJldF9jYXN0PEVHTEF0
dHJpYio+KCZjZ2xDb250ZXh0KSk7Ci0KLSAgICBDR0xVcGRhdGVDb250ZXh0KGNnbENvbnRleHQp
OwotICAgIG1faGFzU3dpdGNoZWRUb0hpZ2hQZXJmb3JtYW5jZUdQVSA9IHRydWU7CisgICAgaWYg
KGlzVmlzaWJsZSkKKyAgICAgICAgbV9oaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0ID0gU2NvcGVk
SGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6YWNxdWlyZSgpOworICAgIGVsc2UKKyAgICAgICAg
bV9oaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0ID0geyB9OworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oaXNWaXNpYmxlKTsKKyNlbmRpZgogfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYg
KG1fc3VwcG9ydHNQb3dlclByZWZlcmVuY2UpCisgICAgICAgIEVHTF9IYW5kbGVHUFVTd2l0Y2hB
TkdMRShtX2Rpc3BsYXlPYmopOwogI2VuZGlmCisgICAgZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5v
dGlmaWNhdGlvbigpOworfQogCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBl
RGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogewpAQCAtNjU0LDUwICs1NzUsOCBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpCiB7Ci0gICAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkudXBkYXRlQWxsQ29u
dGV4dHMoKTsKLX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5l
UmVuZGVyZXJzKCkgY29uc3QKLXsKLSNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9D
RVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKLSAgICAvLyBXaGVuIFdpbmRvd1NlcnZlciBhY2Nl
c3MgaXMgYmxvY2tlZCBpbiB0aGUgV2ViUHJvY2VzcywgdGhlcmUgaXMgbm8gd2F5Ci0gICAgLy8g
Zm9yIE9wZW5HTCB0byBkZWNpZGUgd2hpY2ggR1BVIGlzIGNvbm5lY3RlZCB0byBhIGRpc3BsYXkg
KG9ubGluZS9vZmZsaW5lKS4KLSAgICAvLyBPcGVuR0wgd2lsbCB0aGVuIGNvbnNpZGVyIGFsbCBH
UFVzLCBvciByZW5kZXJlcnMsIGFzIG9mZmxpbmUsIHdoaWNoIG1lYW5zCi0gICAgLy8gYWxsIG9m
ZmxpbmUgcmVuZGVyZXJzIG5lZWQgdG8gYmUgY29uc2lkZXJlZCB3aGVuIGZpbmRpbmcgYSBwaXhl
bCBmb3JtYXQuCi0gICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUgd2lsbCBzdGlsbCBiZSBh
IFdpbmR3U2VydmVyIGNvbm5lY3Rpb24sIGFuZAotICAgIC8vIG1fZGlzcGxheU1hc2sgd2lsbCBu
b3QgYmUgc2V0IGluIHRoaXMgY2FzZS4KLSAgICBpZiAocHJpbWFyeU9wZW5HTERpc3BsYXlNYXNr
KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotI2VsaWYgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0g
ICAgLy8gRklYTUU6IDxyZGFyOi8vNTMwNjI3OTQ+IFdlJ3JlIHZlcnkgaW5jb25zaXN0ZW50IGFi
b3V0IFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HCi0gICAgLy8gYW5kIE1BQy9NQUND
QVRBTFlTVCBhbmQgT1BFTkdML09QRU5HTEVTLgotICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0g
ICAgICAgIAotI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKLSAgICBpZiAoaGFzTG93
QW5kSGlnaFBvd2VyR1BVcygpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotICAgIAot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotI2lmIFBMQVRGT1JNKE1BQykKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnNjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5
SUQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHRPYmopCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAo
IW1faGFzU3dpdGNoZWRUb0hpZ2hQZXJmb3JtYW5jZUdQVSkgewotICAgICAgICBFR0xEZXZpY2VF
WFQgZGV2aWNlID0gbnVsbHB0cjsKLSAgICAgICAgRUdMX1F1ZXJ5RGlzcGxheUF0dHJpYkVYVCht
X2Rpc3BsYXlPYmosIEVHTF9ERVZJQ0VfRVhULCByZWludGVycHJldF9jYXN0PEVHTEF0dHJpYio+
KCZkZXZpY2UpKTsKLSAgICAgICAgQ0dMQ29udGV4dE9iaiBjZ2xDb250ZXh0ID0gbnVsbHB0cjsK
LSAgICAgICAgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXQgPSBudWxscHRyOwotICAgICAg
ICBFR0xfUXVlcnlEZXZpY2VBdHRyaWJFWFQoZGV2aWNlLCBFR0xfQ0dMX0NPTlRFWFRfQU5HTEUs
IHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJmNnbENvbnRleHQpKTsKLSAgICAgICAgRUdM
X1F1ZXJ5RGV2aWNlQXR0cmliRVhUKGRldmljZSwgRUdMX0NHTF9QSVhFTF9GT1JNQVRfQU5HTEUs
IHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJnBpeGVsRm9ybWF0KSk7Ci0gICAgICAgIHNl
dEdQVUJ5UmVnaXN0cnlJRChjZ2xDb250ZXh0LCBwaXhlbEZvcm1hdCwgZ3B1SURGb3JEaXNwbGF5
KGRpc3BsYXlJRCkpOwotICAgIH0KKyAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6
OnNoYXJlZE1hbmFnZXIoKS5kaXNwbGF5V2FzUmVjb25maWd1cmVkKCk7CiB9Ci0jZW5kaWYgLy8g
IVBMQVRGT1JNKE1BQykKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZv
ckRpc3BsYXkoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01hYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQ1NjVkMDBmM2Vi
MzE4MjBlOThjMDYzYjZkODlhODNjNWRhMDY2NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01hYy5jcHAKQEAgLTAs
MCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NDaGVja3NNYWMuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2lmIEhBVkUoQVBQ
TEVfR1JBUEhJQ1NfQ09OVFJPTCkKKyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjZW5kaWYKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgSEFWRShBUFBMRV9HUkFQSElDU19DT05UUk9MKQor
CitlbnVtIHsKKyAgICBrQUdDT3BlbiwKKyAgICBrQUdDQ2xvc2UKK307CisKK3N0YXRpYyBpb19j
b25uZWN0X3QgYXR0YWNoVG9BcHBsZUdyYXBoaWNzQ29udHJvbCgpCit7CisgICAgbWFjaF9wb3J0
X3QgbWFzdGVyUG9ydCA9IE1BQ0hfUE9SVF9OVUxMOworCisgICAgaWYgKElPTWFzdGVyUG9ydChN
QUNIX1BPUlRfTlVMTCwgJm1hc3RlclBvcnQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0
dXJuIE1BQ0hfUE9SVF9OVUxMOworCisgICAgQ0ZEaWN0aW9uYXJ5UmVmIGNsYXNzVG9NYXRjaCA9
IElPU2VydmljZU1hdGNoaW5nKCJBcHBsZUdyYXBoaWNzQ29udHJvbCIpOworICAgIGlmICghY2xh
c3NUb01hdGNoKQorICAgICAgICByZXR1cm4gTUFDSF9QT1JUX05VTEw7CisKKyAgICBrZXJuX3Jl
dHVybl90IGtlcm5SZXN1bHQ7CisgICAgaW9faXRlcmF0b3JfdCBpdGVyYXRvcjsKKyAgICBpZiAo
KGtlcm5SZXN1bHQgPSBJT1NlcnZpY2VHZXRNYXRjaGluZ1NlcnZpY2VzKG1hc3RlclBvcnQsIGNs
YXNzVG9NYXRjaCwgJml0ZXJhdG9yKSkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4g
TUFDSF9QT1JUX05VTEw7CisKKyAgICBpb19zZXJ2aWNlX3Qgc2VydmljZU9iamVjdCA9IElPSXRl
cmF0b3JOZXh0KGl0ZXJhdG9yKTsKKyAgICBJT09iamVjdFJlbGVhc2UoaXRlcmF0b3IpOworICAg
IGlmICghc2VydmljZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOworCisg
ICAgaW9fY29ubmVjdF90IGRhdGFQb3J0OworICAgIElPT2JqZWN0UmV0YWluKHNlcnZpY2VPYmpl
Y3QpOworICAgIGtlcm5SZXN1bHQgPSBJT1NlcnZpY2VPcGVuKHNlcnZpY2VPYmplY3QsIG1hY2hf
dGFza19zZWxmKCksIDAsICZkYXRhUG9ydCk7CisgICAgSU9PYmplY3RSZWxlYXNlKHNlcnZpY2VP
YmplY3QpOworCisgICAgcmV0dXJuIChrZXJuUmVzdWx0ID09IEtFUk5fU1VDQ0VTUykgPyBkYXRh
UG9ydCA6IE1BQ0hfUE9SVF9OVUxMOworfQorCitzdGF0aWMgYm9vbCBoYXNNdXhDYXBhYmlsaXR5
KCkKK3sKKyAgICBpb19jb25uZWN0X3QgZGF0YVBvcnQgPSBhdHRhY2hUb0FwcGxlR3JhcGhpY3ND
b250cm9sKCk7CisKKyAgICBpZiAoZGF0YVBvcnQgPT0gTUFDSF9QT1JUX05VTEwpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgcmVzdWx0OworICAgIGlmIChJT0Nvbm5lY3RDYWxs
U2NhbGFyTWV0aG9kKGRhdGFQb3J0LCBrQUdDT3BlbiwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgbnVs
bHB0cikgPT0gS0VSTl9TVUNDRVNTKSB7CisgICAgICAgIElPQ29ubmVjdENhbGxTY2FsYXJNZXRo
b2QoZGF0YVBvcnQsIGtBR0NDbG9zZSwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgbnVsbHB0cik7Cisg
ICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdCA9IGZhbHNl
OworCisgICAgSU9TZXJ2aWNlQ2xvc2UoZGF0YVBvcnQpOworCisgICAgaWYgKHJlc3VsdCkgewor
ICAgICAgICAvLyBUaGlzIGlzIGRldGVjdGluZyBNYWMgaGFyZHdhcmUgd2l0aCBhbiBJbnRlbCBn
NTc1IEdQVSwgd2hpY2gKKyAgICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byBtYWtlIGF2YWlsYWJs
ZSB0byBtdXhpbmcuCisgICAgICAgIC8vIEJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gQXBwbGUn
cyBPcGVuR0wgdGVhbSwgc3VjaCBkZXZpY2VzCisgICAgICAgIC8vIGhhdmUgZm91ciBvciBmZXdl
ciBwcm9jZXNzb3JzLgorICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzAwNjAzNzg+CisgICAg
ICAgIGludCBuYW1lc1syXSA9IHsgQ1RMX0hXLCBIV19OQ1BVIH07CisgICAgICAgIGludCBjcHVD
b3VudDsKKyAgICAgICAgc2l6ZV90IGNwdUNvdW50TGVuZ3RoID0gc2l6ZW9mKGNwdUNvdW50KTsK
KyAgICAgICAgc3lzY3RsKG5hbWVzLCAyLCAmY3B1Q291bnQsICZjcHVDb3VudExlbmd0aCwgbnVs
bHB0ciwgMCk7CisgICAgICAgIHJlc3VsdCA9IGNwdUNvdW50ID4gNDsKKyAgICB9CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCisjZW5kaWYgLy8gSEFWRShBUFBMRV9HUkFQSElDU19DT05UUk9M
KQorCitib29sIGhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKQoreworI2lmIEhBVkUoQVBQTEVfR1JB
UEhJQ1NfQ09OVFJPTCkKKyAgICBzdGF0aWMgYm9vbCBjYW5NdXggPSBoYXNNdXhDYXBhYmlsaXR5
KCk7CisgICAgcmV0dXJuIGNhbk11eDsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
Cit9CisKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJjNWI3OTgz
MmUwZTA5MTIxYjkyNGM1NmE1YmFjZjE5NzM2MWUyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01hYy5oCkBAIC0w
LDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitXRUJDT1JFX0VYUE9SVCBib29sIGhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKTsKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1Njb3Bl
ZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9TY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGMyMWZkNzk0MDE5YTMxYTgwNTczNDRmMmRhMmRjNGJhYWUxMjhlNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TY29wZWRIaWdoUGVyZm9y
bWFuY2VHUFVSZXF1ZXN0LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NDaGVja3NNYWMuaCIKKyNpbmNsdWRlICJTd2l0Y2hp
bmdHUFVDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY29wZWRIaWdo
UGVyZm9ybWFuY2VHUFVSZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICBTY29wZWRIaWdoUGVyZm9ybWFu
Y2VHUFVSZXF1ZXN0KCkgPSBkZWZhdWx0OworICAgIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJl
cXVlc3QoU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCYmIG90aGVyKQorICAgICAgICA6
IG1fcmVxdWVzdGVkKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9yZXF1ZXN0ZWQsIGZhbHNlKSkKKyAg
ICB7CisgICAgfQorICAgIH5TY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0KCkKKyAgICB7
CisgICAgICAgIGlmICghbV9yZXF1ZXN0ZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IFN3aXRjaGluZ0dQVUNsaWVudDo6c2luZ2xldG9uSWZFeGlzdHMoKS0+cmVsZWFzZUhpZ2hQZXJm
b3JtYW5jZUdQVSgpOworICAgIH0KKyAgICBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
JiBvcGVyYXRvcj0oU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCYmIG90aGVyKQorICAg
IHsKKyAgICAgICAgaWYgKG1fcmVxdWVzdGVkKQorICAgICAgICAgICAgU3dpdGNoaW5nR1BVQ2xp
ZW50OjpzaW5nbGV0b25JZkV4aXN0cygpLT5yZWxlYXNlSGlnaFBlcmZvcm1hbmNlR1BVKCk7Cisg
ICAgICAgIG1fcmVxdWVzdGVkID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3JlcXVlc3RlZCwgZmFs
c2UpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIHN0YXRpYyBTY29wZWRIaWdo
UGVyZm9ybWFuY2VHUFVSZXF1ZXN0IGFjcXVpcmUoKQorICAgIHsKKyAgICAgICAgaWYgKCFoYXNM
b3dBbmRIaWdoUG93ZXJHUFVzKCkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBh
dXRvIGNsaWVudCA9IFN3aXRjaGluZ0dQVUNsaWVudDo6c2luZ2xldG9uSWZFeGlzdHMoKTsKKyAg
ICAgICAgaWYgKCFjbGllbnQpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBjbGll
bnQtPnJlcXVlc3RIaWdoUGVyZm9ybWFuY2VHUFUoKTsKKyAgICAgICAgcmV0dXJuIHsgMCB9Owor
ICAgIH0KK3ByaXZhdGU6CisgICAgU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdChpbnQp
CisgICAgICAgIDogbV9yZXF1ZXN0ZWQodHJ1ZSkKKyAgICB7CisgICAgfQorICAgIGJvb2wgbV9y
ZXF1ZXN0ZWQgeyBmYWxzZSB9OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oCmluZGV4IDQ5OWEy
ODdhNDVjOTY4ZDgzM2RlY2ZlNTMzMzExZDBjZWIzMTcwNzguLjQ1MjM2NzgxYjhlMTA4ZTI4NmZk
ZTIxNGU4NTFhM2E4MmIzMDFjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Td2l0Y2hpbmdHUFVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvU3dpdGNoaW5nR1BVQ2xpZW50LmgKQEAgLTI5LDE2ICsyOSwx
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN3aXRjaGluZ0dQVUNsaWVudCB7CiBw
dWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN3aXRjaGluZ0dQVUNsaWVudCogc2lu
Z2xldG9uSWZFeGlzdHMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTaW5n
bGV0b24oU3dpdGNoaW5nR1BVQ2xpZW50Jik7CiAKICAgICB2aXJ0dWFsIH5Td2l0Y2hpbmdHUFVD
bGllbnQoKSA9IGRlZmF1bHQ7Ci0KK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFN3aXRjaGluZ0dQVUNsaWVudCogc2luZ2xldG9uSWZFeGlzdHMoKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVs
ZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpID0gMDsKLSAgICAKLXByaXZhdGU6CisKICAgICBzdGF0
aWMgU3dpdGNoaW5nR1BVQ2xpZW50KiBtX3NpbmdsZXRvbjsKKyAgICBmcmllbmQgY2xhc3MgU2Nv
cGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmgKaW5kZXggZjUyYmRkNjZmZDBjNjdiMTI1ZDhiNTExZTI5Y2Y5MmZjMmZj
ZjVlMC4uOGQ3YmIzNTBmYWJkMDhmYTgxOTY4YmE0OTRjYWNjZmI3YzA5ZmY4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTY5LDYgKzY5LDEwIEBAIGNsYXNzIEdDR0xM
YXllcjsKIH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIlNjb3BlZEhp
Z2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBFeHRlbnNpb25zR0w7CiAjaWYgVVNFKEFOR0xFKQpAQCAtMjU2LDcgKzI2MCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOwogICAgIHZvaWQgdGV4U3ViSW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogICAgIHZvaWQg
Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IGRhdGEpIGZpbmFsOwotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOyAKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKICAgICB2b2lk
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CiAgICAgdm9pZCBjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFs
OwogCkBAIC00NjEsMTQgKzQ2NSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmltaXRpdmVSZXN0
YXJ0SW5kZXgoR0NHTHVpbnQpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgUExB
VEZPUk0oTUFDKQotICAgIHZvaWQgdXBkYXRlQ0dMQ29udGV4dCgpOworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIHZvaWQgZGlzcGxheVdhc1JlY29uZmlndXJlZCgpOwogI2VuZGlmCiAKICAgICB2
b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb247IH0KLQog
ICAgIC8vIFN1cHBvcnQgZm9yIGJ1ZmZlciBjcmVhdGlvbiBhbmQgZGVsZXRpb24KICAgICBQbGF0
Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZlcigpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlRnJhbWVidWZmZXIoKSBmaW5hbDsKQEAgLTQ5NywxMSArNDk5LDYgQEAgcHVibGljOgog
CiAgICAgdW5zaWduZWQgdGV4dHVyZVNlZWQoR0NHTHVpbnQgdGV4dHVyZSkgeyByZXR1cm4gbV9z
dGF0ZS50ZXh0dXJlU2VlZENvdW50LmNvdW50KHRleHR1cmUpOyB9CiAKLSNpZiBQTEFURk9STShN
QUMpCi0gICAgdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJfdDsKLSAgICB2b2lkIHNj
cmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCk7Ci0jZW5kaWYKLQogICAgIHZvaWQgcHJl
cGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9V
TkRBVElPTikKQEAgLTUyOSw3ICs1MjYsNyBAQCBwcml2YXRlOgogICAgIC8vIGltcGxlbWVudGF0
aW9uLgogICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwotICAg
IAorCiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29s
dW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhl
bEJ1ZmZlck9iamVjdCk7CiAKICAgICAvLyBEaWQgdGhlIG1vc3QgcmVjZW50IGRyYXdpbmcgb3Bl
cmF0aW9uIGxlYXZlIHRoZSBHUFUgaW4gYW4gYWNjZXB0YWJsZSBzdGF0ZT8KQEAgLTU0Nyw3ICs1
NDQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgYXR0YWNoRGVwdGhBbmRTdGVuY2lsQnVmZmVySWZO
ZWVkZWQoR0NHTHVpbnQgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQsIGludCB3aWR0aCwgaW50
IGhlaWdodCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIGFsbG93T2ZmbGluZVJl
bmRlcmVycygpIGNvbnN0OwogICAgIGJvb2wgcmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7
CiAgICAgYm9vbCBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOwogICAgIGJv
b2wgYmluZERpc3BsYXlCdWZmZXJCYWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJh
Y2tpbmcsIHZvaWQqIHBidWZmZXIpOwpAQCAtNTgzLDcgKzU3OSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAsIGlzVmFsaWQoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQotICAgICAgICAK
KwogICAgICAgICBTaGFkZXJTeW1ib2xNYXAmIHN5bWJvbE1hcChlbnVtIEFOR0xFU2hhZGVyU3lt
Ym9sVHlwZSBzeW1ib2xUeXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoc3ltYm9s
VHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFIHx8IHN5bWJvbFR5cGUgPT0gU0hB
REVSX1NZTUJPTF9UWVBFX1VOSUZPUk0gfHwgc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZ
UEVfVkFSWUlORyk7CkBAIC02NDgsNyArNjQ0LDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXh0ZW5zaW9uc0dMT3BlbkdMPiBtX2V4dGVuc2lvbnM7CiAjZW5kaWYKIAotICAgIEdy
YXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIG1fcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNy
ZWF0aW9uIHsgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQgfTsKICAg
ICBWZWN0b3I8VmVjdG9yPGZsb2F0Pj4gbV92ZXJ0ZXhBcnJheTsKIAogI2lmICFVU0UoQU5HTEUp
CkBAIC02ODAsNyArNjc1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB1c2luZyBCb3VuZFRleHR1
cmVNYXAgPSBIYXNoTWFwPEdDR0xlbnVtLAogICAgICAgICAgICAgc3RkOjpwYWlyPEdDR0x1aW50
LCBHQ0dMZW51bT4sCi0gICAgICAgICAgICBXVEY6OkludEhhc2g8R0NHTGVudW0+LCAKKyAgICAg
ICAgICAgIFdURjo6SW50SGFzaDxHQ0dMZW51bT4sCiAgICAgICAgICAgICBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50PiwKICAgICAgICAgICAgIFdURjo6UGFpckhh
c2hUcmFpdHM8V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4sIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+PgogICAgICAgICA+OwpA
QCAtNzYxLDggKzc1NiwxMCBAQCBwcml2YXRlOgogICAgIC8vIFdoZW4gcHJlc2VydmVEcmF3aW5n
QnVmZmVyID09IHRydWUsIHRoaXMgaXMgYmxpdHRlZCB0byBkdXJpbmcgZGlzcGxheSBwcmVwYXJl
LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IG1fZGlzcGxheUJ1ZmZlckJhY2tpbmc7
CiAgICAgdm9pZCogbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciB7IG51bGxwdHIgfTsKLQotICAgIGJv
b2wgbV9oYXNTd2l0Y2hlZFRvSGlnaFBlcmZvcm1hbmNlR1BVIHsgZmFsc2UgfTsKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICBib29sIG1fc3VwcG9ydHNQb3dlclByZWZlcmVuY2UgeyBm
YWxzZSB9OworICAgIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QgbV9oaWdoUGVyZm9y
bWFuY2VHUFVSZXF1ZXN0OwogI2VuZGlmCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VO
REFUSU9OKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRHTENWPiBtX2N2Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcAppbmRleCA0
MWFiNTBjYmVmMmVhNjQyOTNiYTBjOTliZThiMDVmYzk3MDc3ZGU2Li4wN2ViYTA0MjZiNmNjYzRh
MmQxNGI4N2UwOGI3NzYzZjc1MzBiMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcApAQCAtMzEsOTEgKzMxLDggQEAKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAotI2lmIEhBVkUo
QVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKLSNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+Ci0jZW5kaWYK
LQotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJTd2l0Y2hpbmdHUFVDbGllbnQuaCIKLSNl
bmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBIQVZFKEFQUExFX0dSQVBISUNTX0NP
TlRST0wpCi0KLWVudW0gewotICAgIGtBR0NPcGVuLAotICAgIGtBR0NDbG9zZQotfTsKLQotc3Rh
dGljIGlvX2Nvbm5lY3RfdCBhdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKCkKLXsKLSAgICBt
YWNoX3BvcnRfdCBtYXN0ZXJQb3J0ID0gTUFDSF9QT1JUX05VTEw7Ci0gICAgCi0gICAgaWYgKElP
TWFzdGVyUG9ydChNQUNIX1BPUlRfTlVMTCwgJm1hc3RlclBvcnQpICE9IEtFUk5fU1VDQ0VTUykK
LSAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOwotICAgIAotICAgIENGRGljdGlvbmFyeVJl
ZiBjbGFzc1RvTWF0Y2ggPSBJT1NlcnZpY2VNYXRjaGluZygiQXBwbGVHcmFwaGljc0NvbnRyb2wi
KTsKLSAgICBpZiAoIWNsYXNzVG9NYXRjaCkKLSAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxM
OwotICAgIAotICAgIGtlcm5fcmV0dXJuX3Qga2VyblJlc3VsdDsKLSAgICBpb19pdGVyYXRvcl90
IGl0ZXJhdG9yOwotICAgIGlmICgoa2VyblJlc3VsdCA9IElPU2VydmljZUdldE1hdGNoaW5nU2Vy
dmljZXMobWFzdGVyUG9ydCwgY2xhc3NUb01hdGNoLCAmaXRlcmF0b3IpKSAhPSBLRVJOX1NVQ0NF
U1MpCi0gICAgICAgIHJldHVybiBNQUNIX1BPUlRfTlVMTDsKLSAgICAKLSAgICBpb19zZXJ2aWNl
X3Qgc2VydmljZU9iamVjdCA9IElPSXRlcmF0b3JOZXh0KGl0ZXJhdG9yKTsKLSAgICBJT09iamVj
dFJlbGVhc2UoaXRlcmF0b3IpOwotICAgIGlmICghc2VydmljZU9iamVjdCkKLSAgICAgICAgcmV0
dXJuIE1BQ0hfUE9SVF9OVUxMOwotICAgIAotICAgIGlvX2Nvbm5lY3RfdCBkYXRhUG9ydDsKLSAg
ICBJT09iamVjdFJldGFpbihzZXJ2aWNlT2JqZWN0KTsKLSAgICBrZXJuUmVzdWx0ID0gSU9TZXJ2
aWNlT3BlbihzZXJ2aWNlT2JqZWN0LCBtYWNoX3Rhc2tfc2VsZigpLCAwLCAmZGF0YVBvcnQpOwot
ICAgIElPT2JqZWN0UmVsZWFzZShzZXJ2aWNlT2JqZWN0KTsKLSAgICAKLSAgICByZXR1cm4gKGtl
cm5SZXN1bHQgPT0gS0VSTl9TVUNDRVNTKSA/IGRhdGFQb3J0IDogTUFDSF9QT1JUX05VTEw7Ci19
Ci0KLXN0YXRpYyBib29sIGhhc011eENhcGFiaWxpdHkoKQotewotICAgIGlvX2Nvbm5lY3RfdCBk
YXRhUG9ydCA9IGF0dGFjaFRvQXBwbGVHcmFwaGljc0NvbnRyb2woKTsKLSAgICAKLSAgICBpZiAo
ZGF0YVBvcnQgPT0gTUFDSF9QT1JUX05VTEwpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAK
LSAgICBib29sIHJlc3VsdDsKLSAgICBpZiAoSU9Db25uZWN0Q2FsbFNjYWxhck1ldGhvZChkYXRh
UG9ydCwga0FHQ09wZW4sIG51bGxwdHIsIDAsIG51bGxwdHIsIG51bGxwdHIpID09IEtFUk5fU1VD
Q0VTUykgewotICAgICAgICBJT0Nvbm5lY3RDYWxsU2NhbGFyTWV0aG9kKGRhdGFQb3J0LCBrQUdD
Q2xvc2UsIG51bGxwdHIsIDAsIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICByZXN1bHQgPSB0
cnVlOwotICAgIH0gZWxzZQotICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAKLSAgICBJT1Nl
cnZpY2VDbG9zZShkYXRhUG9ydCk7Ci0gICAgCi0gICAgaWYgKHJlc3VsdCkgewotICAgICAgICAv
LyBUaGlzIGlzIGRldGVjdGluZyBNYWMgaGFyZHdhcmUgd2l0aCBhbiBJbnRlbCBnNTc1IEdQVSwg
d2hpY2gKLSAgICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byBtYWtlIGF2YWlsYWJsZSB0byBtdXhp
bmcuCi0gICAgICAgIC8vIEJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gQXBwbGUncyBPcGVuR0wg
dGVhbSwgc3VjaCBkZXZpY2VzCi0gICAgICAgIC8vIGhhdmUgZm91ciBvciBmZXdlciBwcm9jZXNz
b3JzLgotICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzAwNjAzNzg+Ci0gICAgICAgIGludCBu
YW1lc1syXSA9IHsgQ1RMX0hXLCBIV19OQ1BVIH07Ci0gICAgICAgIGludCBjcHVDb3VudDsKLSAg
ICAgICAgc2l6ZV90IGNwdUNvdW50TGVuZ3RoID0gc2l6ZW9mKGNwdUNvdW50KTsKLSAgICAgICAg
c3lzY3RsKG5hbWVzLCAyLCAmY3B1Q291bnQsICZjcHVDb3VudExlbmd0aCwgbnVsbHB0ciwgMCk7
Ci0gICAgICAgIHJlc3VsdCA9IGNwdUNvdW50ID4gNDsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotYm9vbCBoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkKLXsKLSAgICBzdGF0
aWMgYm9vbCBjYW5NdXggPSBoYXNNdXhDYXBhYmlsaXR5KCk7Ci0gICAgcmV0dXJuIGNhbk11eDsK
LX0KLSNlbmRpZiAvLyBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCi0KIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlciYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyPiBzX21hbmFnZXI7CkBAIC0xMjcsMzMgKzQ0LDE5IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKENHRGly
ZWN0RGlzcGxheUlELCBDCiB7CiAgICAgTE9HKFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkIik7CiAgICAgaWYgKGZsYWdzICYga0NH
RGlzcGxheVNldE1vZGVGbGFnKQotICAgICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS51cGRhdGVBbGxDb250ZXh0cygpOworICAgICAgICBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5kaXNwbGF5V2FzUmVjb25m
aWd1cmVkKCk7CiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXI6OnVwZGF0ZUFsbENvbnRleHRzKCkKLXsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgZm9yIChj
b25zdCBhdXRvJiBjb250ZXh0IDogbV9jb250ZXh0cykgewotICAgICAgICBjb250ZXh0LT51cGRh
dGVDR0xDb250ZXh0KCk7Ci0gICAgICAgIGNvbnRleHQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWRO
b3RpZmljYXRpb24oKTsKLSAgICB9Ci0jZW5kaWYKLX0KLQotI2lmIFBMQVRGT1JNKE1BQykKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzY3JlZW5EaWRDaGFuZ2UoUGxhdGZv
cm1EaXNwbGF5SUQgZGlzcGxheUlELCBjb25zdCBIb3N0V2luZG93KiB3aW5kb3cpCisjaWYgUExB
VEZPUk0oQ09DT0EpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6ZGlzcGxh
eVdhc1JlY29uZmlndXJlZCgpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBjb250ZXh0QW5kV2lu
ZG93IDogbV9jb250ZXh0V2luZG93TWFwKSB7Ci0gICAgICAgIGlmIChjb250ZXh0QW5kV2luZG93
LnZhbHVlID09IHdpbmRvdykgewotICAgICAgICAgICAgY29udGV4dEFuZFdpbmRvdy5rZXktPnNj
cmVlbkRpZENoYW5nZShkaXNwbGF5SUQpOwotICAgICAgICAgICAgTE9HKFdlYkdMLCAiQ2hhbmdp
bmcgY29udGV4dCAoJXApIHRvIGRpc3BsYXkgKCVkKS4iLCBjb250ZXh0QW5kV2luZG93LmtleSwg
ZGlzcGxheUlEKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRl
eHQgOiBtX2NvbnRleHRzKQorICAgICAgICBjb250ZXh0LT5kaXNwbGF5V2FzUmVjb25maWd1cmVk
KCk7CiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmFk
ZENvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIEhvc3RXaW5kb3cqIHdp
bmRvdykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjphZGRDb250ZXh0KEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQogewogICAgIEFTU0VSVChjb250ZXh0KTsK
ICAgICBpZiAoIWNvbnRleHQpCkBAIC0xNjYsNyArNjksNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29u
dGV4dAogCiAgICAgQVNTRVJUKCFtX2NvbnRleHRzLmNvbnRhaW5zKGNvbnRleHQpKTsKICAgICBt
X2NvbnRleHRzLmFwcGVuZChjb250ZXh0KTsKLSAgICBtX2NvbnRleHRXaW5kb3dNYXAuc2V0KGNv
bnRleHQsIHdpbmRvdyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
OjpyZW1vdmVDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQpAQCAtMTc0
LDk3ICs3NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6cmVtb3Zl
Q29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udAogICAgIGlmICghbV9jb250ZXh0
cy5jb250YWlucyhjb250ZXh0KSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4dHMucmVt
b3ZlRmlyc3QoY29udGV4dCk7Ci0gICAgbV9jb250ZXh0V2luZG93TWFwLnJlbW92ZShjb250ZXh0
KTsKLSAgICByZW1vdmVDb250ZXh0UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKGNvbnRleHQpOwot
ICAgIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIUVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZF
Ul9CTE9DS0lORykKICAgICBpZiAoIW1fY29udGV4dHMuc2l6ZSgpKQogICAgICAgICBDR0Rpc3Bs
YXlSZW1vdmVSZWNvbmZpZ3VyYXRpb25DYWxsYmFjayhkaXNwbGF5V2FzUmVjb25maWd1cmVkLCBu
dWxscHRyKTsKICNlbmRpZgogfQogCi1Ib3N0V2luZG93KiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXI6Omhvc3RXaW5kb3dGb3JDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBj
b250ZXh0KSBjb25zdAotewotICAgIEFTU0VSVChtX2NvbnRleHRXaW5kb3dNYXAuY29udGFpbnMo
Y29udGV4dCkpOwotICAgIHJldHVybiBtX2NvbnRleHRXaW5kb3dNYXAuZ2V0KGNvbnRleHQpOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dFJlcXVp
cmluZ0hpZ2hQZXJmb3JtYW5jZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCkKLXsK
LSAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgQVNTRVJUKG1fY29udGV4dHMuY29udGFpbnMoY29udGV4dCkpOwotICAgIEFT
U0VSVCghbV9jb250ZXh0c1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZS5jb250YWlucyhjb250ZXh0
KSk7Ci0gICAgCi0gICAgTE9HKFdlYkdMLCAiVGhpcyBjb250ZXh0ICglcCkgcmVxdWlyZXMgdGhl
IGhpZ2gtcGVyZm9ybWFuY2UgR1BVLiIsIGNvbnRleHQpOwotICAgIG1fY29udGV4dHNSZXF1aXJp
bmdIaWdoUGVyZm9ybWFuY2UuYWRkKGNvbnRleHQpOwotICAgIAotICAgIHVwZGF0ZUhpZ2hQZXJm
b3JtYW5jZVN0YXRlKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
OjpyZW1vdmVDb250ZXh0UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKiBjb250ZXh0KQotewotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKCFtX2NvbnRleHRzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLmNvbnRhaW5zKGNv
bnRleHQpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgTE9HKFdlYkdMLCAiVGhpcyBjb250
ZXh0ICglcCkgbm8gbG9uZ2VyIHJlcXVpcmVzIHRoZSBoaWdoLXBlcmZvcm1hbmNlIEdQVS4iLCBj
b250ZXh0KTsKLSAgICBtX2NvbnRleHRzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLnJlbW92ZShj
b250ZXh0KTsKLSAgICAKLSAgICB1cGRhdGVIaWdoUGVyZm9ybWFuY2VTdGF0ZSgpOwotfQotCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6dXBkYXRlSGlnaFBlcmZvcm1hbmNl
U3RhdGUoKQotewotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIWhhc0xvd0FuZEhpZ2hQb3dl
ckdQVXMoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmIChtX2NvbnRleHRzUmVxdWly
aW5nSGlnaFBlcmZvcm1hbmNlLnNpemUoKSkgewotICAgICAgICAKLSAgICAgICAgaWYgKG1fZGlz
YWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAgICAgIExP
RyhXZWJHTCwgIkNhbmNlbCBwZW5kaW5nIHRpbWVyIGZvciB0dXJuaW5nIG9mZiBoaWdoLXBlcmZv
cm1hbmNlIEdQVS4iKTsKLSAgICAgICAgICAgIG1fZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRp
bWVyLnN0b3AoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghbV9yZXF1ZXN0aW5nSGlnaFBl
cmZvcm1hbmNlKSB7Ci0gICAgICAgICAgICBMT0coV2ViR0wsICJSZXF1ZXN0IHRoZSBoaWdoLXBl
cmZvcm1hbmNlIEdQVS4iKTsKLSAgICAgICAgICAgIG1fcmVxdWVzdGluZ0hpZ2hQZXJmb3JtYW5j
ZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoYXV0byogc2luZ2xldG9uID0gU3dpdGNoaW5nR1BV
Q2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygpKQotICAgICAgICAgICAgICAgIHNpbmdsZXRvbi0+
cmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSgpOwotICAgICAgICB9Ci0KLSAgICB9IGVsc2Ugewot
ICAgICAgICAvLyBEb24ndCBpbW1lZGlhdGVseSB0dXJuIG9mZiB0aGUgaGlnaC1wZXJmb3JtYW5j
ZSBHUFUuIFRoZSB1c2VyIG1pZ2h0IGJlCi0gICAgICAgIC8vIHN3YXBwaW5nIGJhY2sgYW5kIGZv
cnRoIGJldHdlZW4gdGFicyBvciB3aW5kb3dzLCBhbmQgd2UgZG9uJ3Qgd2FudCB0byBjYXVzZQot
ICAgICAgICAvLyBjaHVybiBpZiB3ZSBjYW4gYXZvaWQgaXQuCi0gICAgICAgIGlmICghbV9kaXNh
YmxlSGlnaFBlcmZvcm1hbmNlR1BVVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAgICAgTE9H
KFdlYkdMLCAiU2V0IGEgdGltZXIgdG8gcmVsZWFzZSB0aGUgaGlnaC1wZXJmb3JtYW5jZSBHUFUu
Iik7Ci0gICAgICAgICAgICAvLyBGSVhNRTogRXhwb3NlIHRoaXMgdmFsdWUgYXMgYSBTZXR0aW5n
LCB3aGljaCB3b3VsZCByZXF1aXJlIHRoaXMgY2xhc3MKLSAgICAgICAgICAgIC8vIHRvIHJlZmVy
ZW5jZSBhIGZyYW1lLCBwYWdlIG9yIGRvY3VtZW50LgotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFNlY29uZHMgdGltZVRvS2VlcEhpZ2hQZXJmb3JtYW5jZUdQVUFsaXZlIHsgMTBfcyB9OwotICAg
ICAgICAgICAgbV9kaXNhYmxlSGlnaFBlcmZvcm1hbmNlR1BVVGltZXIuc3RhcnRPbmVTaG90KHRp
bWVUb0tlZXBIaWdoUGVyZm9ybWFuY2VHUFVBbGl2ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5k
aWYKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmRpc2FibGVIaWdo
UGVyZm9ybWFuY2VHUFVUaW1lckZpcmVkKCkKLXsKLSAgICBpZiAobV9jb250ZXh0c1JlcXVpcmlu
Z0hpZ2hQZXJmb3JtYW5jZS5zaXplKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcmVxdWVz
dGluZ0hpZ2hQZXJmb3JtYW5jZSA9IGZhbHNlOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAo
YXV0byogc2luZ2xldG9uID0gU3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygp
KQotICAgICAgICBzaW5nbGV0b24tPnJlbGVhc2VIaWdoUGVyZm9ybWFuY2VHUFUoKTsKLSNlbmRp
ZgotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6cmVjeWNsZUNvbnRl
eHRJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKGhhc1Rvb01hbnlDb250ZXh0cygpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgKaW5kZXggM2FmOGEwNTJh
ZThlMmExNWQ1YzA1MTc4NGZiMDg1NDVlZTlhMWQ2NC4uODNmNzBlYTIyYzkyMTExYjE4YzNjNGQ0
YjYxOTk0Mjc0MjQwNzZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXIuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMzgsNTIgKzM2LDI5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNvbnN0IHVuc2lnbmVkIE1heENvbnRleHRzID0gMTY7CiAKIGNsYXNzIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOwotY2xhc3MgSG9zdFdpbmRvdzsKLQotdXNpbmcgUGxhdGZvcm1E
aXNwbGF5SUQgPSB1aW50MzJfdDsKLQotI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkK
LVdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpOwotI2VuZGlmCiAK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlciB7CiAgICAgZnJpZW5kIE5ldmVy
RGVzdHJveWVkPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcj47CiBwdWJsaWM6CiAgICAg
c3RhdGljIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlciYgc2hhcmVkTWFuYWdlcigpOwog
ICAgIAotICAgIHZvaWQgYWRkQ29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIEhvc3RX
aW5kb3cqKTsKKyAgICB2b2lkIGFkZENvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsK
ICAgICB2b2lkIHJlbW92ZUNvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKLQotICAg
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3dGb3JDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KikgY29uc3Q7Ci0gICAgCi0gICAgdm9pZCBhZGRDb250ZXh0UmVxdWlyaW5nSGlnaFBlcmZvcm1h
bmNlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7Ci0gICAgdm9pZCByZW1vdmVDb250ZXh0UmVx
dWlyaW5nSGlnaFBlcmZvcm1hbmNlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7CiAgICAgCiAg
ICAgdm9pZCByZWN5Y2xlQ29udGV4dElmTmVjZXNzYXJ5KCk7CiAgICAgYm9vbCBoYXNUb29NYW55
Q29udGV4dHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRzLnNpemUoKSA+PSBNYXhDb250ZXh0
czsgfQogICAgIAotICAgIHZvaWQgdXBkYXRlQWxsQ29udGV4dHMoKTsKLQogI2lmIFBMQVRGT1JN
KE1BQykKLSAgICB2b2lkIHNjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCwgY29uc3Qg
SG9zdFdpbmRvdyopOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BsYXlXYXNS
ZWNvbmZpZ3VyZWQoQ0dEaXJlY3REaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFn
cywgdm9pZCopOwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBkaXNwbGF5
V2FzUmVjb25maWd1cmVkKCk7CisjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyKCkKLSAgICAgICAgOiBtX2Rpc2FibGVIaWdoUGVyZm9ybWFu
Y2VHUFVUaW1lcigqdGhpcywgJkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6ZGlzYWJs
ZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVyRmlyZWQpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQg
dXBkYXRlSGlnaFBlcmZvcm1hbmNlU3RhdGUoKTsKLSAgICB2b2lkIGRpc2FibGVIaWdoUGVyZm9y
bWFuY2VHUFVUaW1lckZpcmVkKCk7CisgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
KCkgPSBkZWZhdWx0OwogCiAgICAgVmVjdG9yPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4gbV9j
b250ZXh0czsKLSAgICBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgSG9zdFdpbmRv
dyo+IG1fY29udGV4dFdpbmRvd01hcDsKLSAgICBIYXNoU2V0PEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKj4gbV9jb250ZXh0c1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZTsKLSAgICAKLSAgICBUaW1l
ciBtX2Rpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lcjsKLSAgICBib29sIG1fcmVxdWVzdGlu
Z0hpZ2hQZXJmb3JtYW5jZSB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggZmU3MjBlOTM1ZWU5ZjMyYWNjN2Q4ZDhlY2I1ZjUzMWFjYjFkOWYy
MS4uMWY5NTFiN2U5NGVmN2FlNDQwOGY0NWIxYmIxNTZhMGQzNTdhNGFiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzIwLDcgKzMyMCw3IEBACiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIu
aCIKKyNpbmNsdWRlICJHcmFwaGljc0NoZWNrc01hYy5oIgogI2luY2x1ZGUgIk5TU2Nyb2xsZXJJ
bXBEZXRhaWxzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVNYWMuaCIKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQZXJmb3JtYW5jZUdQVU1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVN
YW5hZ2VyLmgKaW5kZXggNTU1NmNiZDQ0ZjBmNTQ3Y2Q2NWQzZGU0MWU1MjA2NWY4OTNkM2FhZS4u
YWM2MjE5M2FjZmQ1YzJiNjQyYTU3NWFmMzQ3ZjVlNTJlMDJmZTY1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5o
CkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW5jbHVkZSA8T3BlbkdM
L0NHTFR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTQ0LDEzICs0
NSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVQcm9jZXNzUmVxdWlyaW5nSGlnaFBlcmZv
cm1hbmNlKFdlYlByb2Nlc3NQcm94eSopOwogCiBwcml2YXRlOgotICAgIEhpZ2hQZXJmb3JtYW5j
ZUdQVU1hbmFnZXIoKSA9IGRlZmF1bHQ7CisgICAgSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcigp
OwogICAgIH5IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyKCk7Ci0KICAgICB2b2lkIHVwZGF0ZVN0
YXRlKCk7CiAKICAgICBIYXNoU2V0PFdlYlByb2Nlc3NQcm94eSo+IG1fcHJvY2Vzc2VzUmVxdWly
aW5nSGlnaFBlcmZvcm1hbmNlOwogICAgIENHTFBpeGVsRm9ybWF0T2JqIG1fcGl4ZWxGb3JtYXRP
YmogeyBudWxscHRyIH07CisgICAgV2ViQ29yZTo6VGltZXIgbV91cGRhdGVTdGF0ZVRpbWVyOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQZXJm
b3JtYW5jZUdQVU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGlnaFBl
cmZvcm1hbmNlR1BVTWFuYWdlci5tbQppbmRleCBhOTZmYzNkMTEzNzk4ZTc5YWZjMGZkYjYyNjVm
ZGRhZmQwM2QwYWUwLi41OWRmZjhiMjNjODBjMDI2NWJlZTUxOWY4NDYwNzM4ODRmNjE1Yzk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BV
TWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1h
bmNlR1BVTWFuYWdlci5tbQpAQCAtMjksNyArMjksNyBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDaGVja3NNYWMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL09wZW5HTFNvZnRMaW5rQ29jb2EuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC00NCw2ICs0NCwxMyBAQCBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyJiBIaWdo
UGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpzaW5nbGV0b24oKQogICAgIHJldHVybiBzaGFyZWRNYW5h
Z2VyOwogfQogCitIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpIaWdoUGVyZm9ybWFuY2VHUFVN
YW5hZ2VyKCkKKyAgICA6IG1fdXBkYXRlU3RhdGVUaW1lcigqdGhpcywgJkhpZ2hQZXJmb3JtYW5j
ZUdQVU1hbmFnZXI6OnVwZGF0ZVN0YXRlKQoreworfQorCitIaWdoUGVyZm9ybWFuY2VHUFVNYW5h
Z2VyOjp+SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcigpID0gZGVmYXVsdDsKKwogdm9pZCBIaWdo
UGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjphZGRQcm9jZXNzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNl
KFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKIHsKICAgICBpZiAoIVdlYkNvcmU6Omhhc0xvd0Fu
ZEhpZ2hQb3dlckdQVXMoKSkKQEAgLTY1LDcgKzcyLDggQEAgdm9pZCBIaWdoUGVyZm9ybWFuY2VH
UFVNYW5hZ2VyOjpyZW1vdmVQcm9jZXNzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKFdlYlByb2Nl
c3MKIAogICAgIGlmIChtX3Byb2Nlc3Nlc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZS5yZW1vdmUo
cHJvY2VzcykpIHsKICAgICAgICAgTE9HKFdlYkdMLCAiSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdl
cjo6cmVtb3ZlUHJvY2Vzc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZSgpIC0gcmVtb3ZpbmcgcHJv
Y2VzcyAlcCIsIHByb2Nlc3MpOwotICAgICAgICB1cGRhdGVTdGF0ZSgpOworICAgICAgICBzdGF0
aWMgY29uc3QgU2Vjb25kcyB0aW1lVG9LZWVwSGlnaFBlcmZvcm1hbmNlR1BVQWxpdmUgeyAxMF9z
IH07CisgICAgICAgIG1fdXBkYXRlU3RhdGVUaW1lci5zdGFydE9uZVNob3QodGltZVRvS2VlcEhp
Z2hQZXJmb3JtYW5jZUdQVUFsaXZlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzQs
NiArODIsOCBAQCB2b2lkIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnJlbW92ZVByb2Nlc3NS
ZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoV2ViUHJvY2VzcwogCiB2b2lkIEhpZ2hQZXJmb3JtYW5j
ZUdQVU1hbmFnZXI6OnVwZGF0ZVN0YXRlKCkKIHsKKyAgICBpZiAobV91cGRhdGVTdGF0ZVRpbWVy
LmlzQWN0aXZlKCkpCisgICAgICAgIG1fdXBkYXRlU3RhdGVUaW1lci5zdG9wKCk7CiAgICAgaWYg
KG1fcHJvY2Vzc2VzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLnNpemUoKSkgewogICAgICAgICBp
ZiAoIW1fcGl4ZWxGb3JtYXRPYmopIHsKICAgICAgICAgICAgIExPRyhXZWJHTCwgIkhpZ2hQZXJm
b3JtYW5jZUdQVU1hbmFnZXIgLSB0dXJuaW5nIG9uIGhpZ2gtcGVyZm9ybWFuY2UgR1BVLiIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwCmluZGV4IDQ0YzZiNDMyZTdk
NWM1ZGFhNzhkOGQwMmFiNzdjNzkwYzE0YTkzNGEuLmMxYzJhMmViZGM3Nzg3N2UxN2Y3YzE5MjUz
MzU5Mzg1ZGFmNzg0N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5j
cHAKQEAgLTQzLDEyICs0MywxOSBAQCBXZWJTd2l0Y2hpbmdHUFVDbGllbnQmIFdlYlN3aXRjaGlu
Z0dQVUNsaWVudDo6c2luZ2xldG9uKCkKIAogdm9pZCBXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJl
cXVlc3RIaWdoUGVyZm9ybWFuY2VHUFUoKQogeworICAgIG1fcmVxdWVzdHMrKzsKKyAgICBpZiAo
bV9yZXF1ZXN0cyAhPSAxKQorICAgICAgICByZXR1cm47CiAgICAgTE9HKFdlYkdMLCAiV2ViU3dp
dGNoaW5nR1BVQ2xpZW50OjpyZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCkgZnJvbSBXZWJQcm9j
ZXNzIik7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpSZXF1ZXN0SGlnaFBlcmZvcm1h
bmNlR1BVKCksIDApOwogfQogCiB2b2lkIFdlYlN3aXRjaGluZ0dQVUNsaWVudDo6cmVsZWFzZUhp
Z2hQZXJmb3JtYW5jZUdQVSgpCiB7CisgICAgQVNTRVJUKG1fcmVxdWVzdHMpOworICAgIG1fcmVx
dWVzdHMtLTsKKyAgICBpZiAobV9yZXF1ZXN0cykKKyAgICAgICAgcmV0dXJuOwogICAgIExPRyhX
ZWJHTCwgIldlYlN3aXRjaGluZ0dQVUNsaWVudDo6cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgp
IGZyb20gV2ViUHJvY2VzcyIpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6UmVsZWFz
ZUhpZ2hQZXJmb3JtYW5jZUdQVSgpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN3aXRjaGluZ0dQ
VUNsaWVudC5oCmluZGV4IDIwZWIyZWUyNTcxZmViYTJkYTQ4NGYyMTg3Nzc4YjEyOTQwYWU1MzMu
LmJiODFkOGE2MDhhYjFmZGE0NWYwN2VhN2IzOGE2MzQ1MTllNzg0MjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BV
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuaApAQCAtMzIsOSArMzIsMTAgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBXZWJTd2l0Y2hpbmdHUFVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6U3dp
dGNoaW5nR1BVQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViU3dpdGNoaW5nR1BVQ2xp
ZW50JiBzaW5nbGV0b24oKTsKLSAgICAKK3ByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0SGlnaFBl
cmZvcm1hbmNlR1BVKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWxlYXNlSGlnaFBlcmZvcm1hbmNl
R1BVKCkgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgbV9yZXF1ZXN0cyB7IDAgfTsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418170</attachid>
            <date>2021-01-22 12:33:21 -0800</date>
            <delta_ts>2021-01-22 12:52:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220843-20210122223318.patch</filename>
            <type>text/plain</type>
            <size>59478</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTBlMTg1NzBmN2QyNTI1
MWZiMTY2MzllOGI1YTdjM2Q1OTU4MDRmMS4uMzc5YjNmMDQwODZjZDliNzFmODkzZDZiMDljNWFj
MmJiNzdhY2Y3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTAxLTIyICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgcG93ZXIg
cHJlZmVyZW5jZSBhbmQgZGlzY3JldGUvaW50ZXJuYWwgZ3B1IHNlbGVjdGlvbiBpbXBsZW1lbnRl
ZCBpbmNvcnJlY3RseSB3aXRoIEFOR0xFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjA4NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgQU5HTEUgZXh0ZW5zaW9uIEVHTF9BTkdMRV9wb3dlcl9wcmVm
ZXJlbmNlIHRvIHNpZ25hbCB0byBBTkdMRSB0aGF0IHRoZSB1bmRlcmx5aW5nCisgICAgICAgIENH
TCBjb250ZXh0IHNob3VsZCBiZSB1cGRhdGVkIGFzIGEgcmVzcG9uc2UgdG8gZGlzcGxheSByZWNv
bmZpZ3VyYXRpb24gc2lnbmFsLgorICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCBBTkdMRSBzdGF0
ZSBzdGF5cyBjb25zaXN0ZW50IHdpdGggdGhlIGFjdHVhbCBDR0wgY29udGV4dCBiZWhhdmlvciwg
YXMKKyAgICAgICAgd2UgZG9uJ3QgY2hhbmdlIHRoZSBjb250ZXh0IGJlaGluZCBBTkdMRSdzIGJh
Y2suCisKKyAgICAgICAgUmVtb3ZlIHRoZSBmZWF0dXJlIHdoZXJlIHRoZSBjb250ZXh0IEdQVSBp
cyBzZWxlY3RlZCBiYXNlZCBvbiB0aGUgZGlzcGxheSB0aGUgd2luZG93IGlzCisgICAgICAgIG9u
LiBUaGlzIGNhbm5vdCB3b3JrIHdpdGggdGhlIGxvZ2ljIG9mICJwb3dlclByZWZlcmVuY2UgPSAi
aGlnaC1wZXJmb3JtYW5jZSIgZ29lcyB0bworICAgICAgICBkaXNjcmV0ZSBHUFUiLiBBbHNvLCB0
aGlzIGNhbm5vdCB3b3JrIHdpdGggQU5HTEUgYXQgYWxsLCBzaW5jZSBhbGwgY29udGV4dHMgYXJl
IGJhY2tlZAorICAgICAgICBieSBhIHNpbmdsZSBwbGF0Zm9ybSBjb250ZXh0LiBUaHVzIGFsbCBj
b250ZXh0cyB3aWxsIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIEdQVS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgZHVlIHRvIHRoZSB0ZXN0IHJ1bm5lciBtaXNzaW5nIGZlYXR1cmVzLiBUaGUgYnVn
IGJsb2NrZXJzIHRyYWNrIHRoZSB0ZXN0aW5nLgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21h
a2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0hpZ2hQZXJmb3JtYW5jZUNv
bnRleHQpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250
ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZGlzcGxheVdhc1JlY29uZmlndXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjphdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6
Omhhc011eENhcGFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6aGFzTG93QW5kSGlnaFBvd2Vy
R1BVcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFj
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1Njb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oLgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6U2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0Ojp+U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0OjpvcGVyYXRv
cj0pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6
YWNxdWlyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNs
aWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnJlbW92ZUNv
bnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisK
IDIwMjEtMDEtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IFZhbGlkYXRlIEl0ZW1IYW5kbGVzIHdoZW4gZGVjb2RpbmcgdGhlbSBpbiBHUFVQcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDk3ODkwZWI1Y2NhYTEyODhhMWRjNjVjODc1OWQ1ZGY1YmNhMDlhMDkuLjM1MmIx
ZjdlZDhkMTk4ZmQwYjI5ZTQ3ZWZhN2E1YTIzOTNmNzliYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjMgQEAKKzIwMjEtMDEtMjIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWJHTCBwb3dlciBwcmVmZXJlbmNlIGFuZCBkaXNjcmV0ZS9pbnRlcm5hbCBn
cHUgc2VsZWN0aW9uIGltcGxlbWVudGVkIGluY29ycmVjdGx5IHdpdGggQU5HTEUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDg0MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIGhpZ2gtcGVy
Zm9ybWFuY2UgR1BVIHNodXRkb3duIHRpbWVyIGZyb20gaW5kaXZpZHVhbCB3ZWIgcHJvY2Vzc2Vz
IHRvIHRoZSBtYWluIGNsYXNzCisgICAgICAgIGluIHRoZSB1aSBwcm9jZXNzLiBUaGlzIHNpbXBs
aWZpZXMgdGhlIGltcGxlbWVudGF0aW9uIGFuZCByZWR1Y2VzIHRoZSBudW1iZXIgb2YgdGltZXJz
LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpIaWdoUGVyZm9ybWFu
Y2VHUFVNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdl
cjo6cmVtb3ZlUHJvY2Vzc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZSk6CisgICAgICAgIChXZWJL
aXQ6OkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlcXVlc3RIaWdoUGVyZm9y
bWFuY2VHUFUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlbGVh
c2VIaWdoUGVyZm9ybWFuY2VHUFUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5oOgorCiAyMDIxLTAxLTIxICBQZW5nIExpdSAg
PHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgUGlQIHZpZGVvIHN1YnRpdGxlcyBzdG9w
IHVwZGF0aW5nIHdoZW4gU2FmYXJpIGlzIGJhY2tncm91bmRlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQppbmRleCBhYzcwMTU0OTk3OTllNGZiNGVlMmEwZGUwMWI0MzUxMmIwOWExZjhlLi5jYWQy
NjQ0OWM3NGM4NWNhY2I5NjViMzljOGZiNzUyOTAxZmNhNmYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtMzQwLDYgKzM0MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0Zsb2F0U2l6ZU1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0NoZWNrc01hYy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9JbnRQb2ludE1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggM2JlMTc1
OGNkODc1NTM5YWM3ZDJjNmRhYTA3OGYwY2IzMDJjODcxMy4uZTg3ZDRkZDA3OWE1NWY2OWQyMTcz
YmRmMTEyYzJlZjlmOWE2ZWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MTgsNiAr
NDE4LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRmxvYXRTaXplTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01h
Yy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSW1hZ2VNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRQb2ludE1hYy5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM4MzgwZTFiNTZhODg1OTJmMzk0YjdmNjM4ZTM4YWUzY2Y1ODk0N2MuLmJmNjViZGEzOTkx
ZTYwZGQxOWY2ZmRlNzg5YWYyODBkNGVhZjYwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIyNTksNiArMjI1OSw5IEBACiAJ
CTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5
MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JC
MzRBMTcyNTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2
MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi87
IH07CiAJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJh
Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTdCQjY4MEIyMjVCQTBENEEwMDJCODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2
ODBCMDI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCQjY4
MEI2MjVCQTFBRTIwMDJCODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2ODBCNDI1
QkExQUUxMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyB9
OworCQk3QkI2ODBCQTI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjY4MEI4MjVCQTFC
RTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkwNkZCQjRGMEYyQyAvKiBK
U1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpTU1ZHR3JhcGhpY3NFbGVt
ZW50LmggKi87IH07CiAJCTdDMDI5QzZFMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAyOUM2RDI0
OTNDOEY4MDAyNjgyMDQgLyogQ29sb3JUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMTg0M0ZFMUM4QjcyODMwMDJFQjk3MyAvKiBBdXRv
ZmlsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mx
ODQzRkMxQzhCNzI4MzAwMkVCOTczIC8qIEF1dG9maWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjk0LDYgKzEwMjk3LDEwIEBACiAJCTdC
QjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDUyNTM3
NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250
ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JC
NjgwQjAyNUJBMEQ0QTAwMkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNl
R1BVUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkI2ODBCNDI1QkEx
QUUxMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQjY4MEI3MjVCQTFCRTMwMDJCODcz
OCAvKiBHcmFwaGljc0NoZWNrc01hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCQjY4MEI4MjVCQTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1QjI1NzYzQjhEMDBFODVEOTggLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzAxMUYzRDI0RkFEMzYwMDA1QkVGMTAgLyogU2V0dGluZ3MuY3BwLmVyYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBT
ZXR0aW5ncy5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAxMUYzRTI0
RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI2NDk2LDExICsyNjUwMywxNSBAQAogCQkJCUIyNzUzNTREMEIwNTM4MTQwMDJD
RTY0RiAvKiBGbG9hdFNpemVNYWMubW0gKi8sCiAJCQkJQjJBRkZDNzUwRDAwQTVDMTAwMzAwNzRE
IC8qIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwICovLAogCQkJCUIyQUZGQzc2MEQwMEE1QzEw
MDMwMDc0RCAvKiBGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggKi8sCisJCQkJN0JCNjgwQjcyNUJB
MUJFMzAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmNwcCAqLywKKwkJCQk3QkI2ODBCODI1
QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLywKIAkJCQlCMjc1MzU4RDBC
MDUzQTY2MDAyQ0U2NEYgLyogSWNvbk1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RTBCMDUzODE0MDAy
Q0U2NEYgLyogSW1hZ2VNYWMubW0gKi8sCiAJCQkJQjI3NTM1NEYwQjA1MzgxNDAwMkNFNjRGIC8q
IEludFBvaW50TWFjLm1tICovLAogCQkJCUIyNzUzNTUxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRT
aXplTWFjLm1tICovLAogCQkJCTJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAvKiBQREZEb2N1bWVu
dEltYWdlTWFjLm1tICovLAorCQkJCTdCQjY4MEI0MjVCQTFBRTEwMDJCODczOCAvKiBTY29wZWRI
aWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8sCisJCQkJN0JCNjgwQjAyNUJBMEQ0QTAwMkI4
NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLywKIAkJCQkxNjNFODhG
NTExOEEzOUQyMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgKi8sCiAJCQkJ
QzExQTlFRDIyMTQwNTc4QjAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi8sCiAJ
CQkJQzExQTlFQ0QyMTQwM0E1QzAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5oICovLApA
QCAtMzIyMzMsNiArMzIyNDQsNyBAQAogCQkJCUJDNTNDNUY1MERBNTZCOTIwMDIxRUI1RCAvKiBH
cmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjQwRDAwQkYyMjAwNzFCNzgyIC8q
IEdyYWRpZW50QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0ODFGMDQxNDZCNUM2
QjAwQUE3ODM0IC8qIEdyYWRpZW50SW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCQjY4MEJB
MjVCQTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjJBMDE1QTkwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM0OTA3RTQxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENH
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTNERTg3MDIzQTk2OTczMDA4RkM0N0IgLyogR3JhcGhp
Y3NDb250ZXh0R0wuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ0NTUsNiArMzQ0NjcsOCBAQAogCQkJ
CTQ5RTkxMUNCMEVGODZENDcwMDlEMENBRiAvKiBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNURGRThGNTcwRDE2NDc3QzAwNzZFOTM3IC8qIFNjaGVkdWxlZEFj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJEMEJGOTMxMkE0MkJGNTAwNzJGRDQzIC8qIFNj
b3BlZEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCQjY4MEI2MjVCQTFBRTIwMDJC
ODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk3QkI2ODBCMjI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BV
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQzAxQkUwQzI3NERBQzAwOUY0RUM5IC8q
IFNjcmVlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzFFMUQyMzYyMDNERjE1NDAwNTg0NjY1IC8q
IFNjcmVlblByb3BlcnRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NEQ4MkMxMTFEMzQ3NDgw
MDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAppbmRleCA1NzhlMDIxODBjNDZmM2RiYzRmZmZkMGFmMGMzNTNmMzk0ODIwZGJl
Li5lNzdkODBhODUyZmI1YWM1ZGQ3MWNlM2Y5N2NjZjY2NjQ2MWNlNTZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcApAQCAtNjQyLDcgKzY0Miw3IEBAIHByaXZhdGU6CiAKIHN0YXRpYyBib29sIGlzSGlnaFBl
cmZvcm1hbmNlQ29udGV4dChjb25zdCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+JiBjb250ZXh0
KQogewotICAgIHJldHVybiBjb250ZXh0LT5wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24o
KSA9PSBXZWJHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOworICAgIHJldHVybiBj
b250ZXh0LT5jb250ZXh0QXR0cmlidXRlcygpLnBvd2VyUHJlZmVyZW5jZSA9PSBXZWJHTFBvd2Vy
UHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKENh
bnZhc0Jhc2UmIGNhbnZhcywgV2ViR0xDb250ZXh0QXR0cmlidXRlcyYgYXR0cmlidXRlcywgV2Vi
R0xWZXJzaW9uIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggYjcxMGU3MTVhNjZkY2Fj
NTY3NDJkYjZiYmVhNzQxZDZmODYzNDJiMy4uNGE1NWY5ZGExYzViNTFmNmMyNGEwYjBlNWM1YzZm
YmIzZjU0OWM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtNjcsMTAgKzY3LDYgQEAKICNp
bmNsdWRlICJEYXRlVGltZUNob29zZXIuaCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoV0VCR0wpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
LmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwpAQCAtNTQ4LDEwICs1NDQsNiBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlk
Q2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3BhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJ
RCwgbm9taW5hbEZyYW1lSW50ZXJ2YWwpOwotCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
V0VCR0wpCi0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2Vy
KCkuc2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCwgdGhpcyk7Ci0jZW5kaWYKIH0KIAogYm9vbCBD
aHJvbWU6OnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4
IGEzMGNlZTVmYWI2NDc5MmFjYjhjNDVlMWVlNTBlMDBjZDIyYzJkZjQuLjJhZDE0N2Y2ZWFiOTRj
ZjNiZGYwM2JjNmZkYzIxMTdkNGFlMDA1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMTI2Myw4ICsxMjYzLDYg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wp
ID0gMDsKIAotICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93
ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgPSAwOwotCiAgICAgdmlydHVhbCBi
b29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCA9IDA7CiAKICAgICAvLyBTeW50aGVzaXplcyBh
biBPcGVuR0wgZXJyb3Igd2hpY2ggd2lsbCBiZSByZXR1cm5lZCBmcm9tIGEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAppbmRleCA1NTJkODUzOWI2OTUwMGNmMTE2OTY4
MGQ0YjVjNjI4NTg1OGI3NzM3Li5lNTBmOGZiNGM1YzM2NzA0NjFjODEzNDVlNDQzNzNjNmE0ZGEx
MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC00OSwx
MiArNDksNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRDb250
ZXh0VmlzaWJpbGl0eShib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLUdyYXBoaWNz
Q29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Ojpwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdAotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQogYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFdF
QkdMMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCmluZGV4IDI0NzFkNGUy
NWM5YWEyMDBlYzc0M2IxZmUwYzY0NjhiMGM5YTUwODMuLjI4OGMyZWE4YWQzOWU4OWI2OTY5ZmQw
YjIxNmI4YjY3YjBiZWRhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
aApAQCAtNjEsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IGZpbmFsOwogICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZp
bmFsOwogICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7Ci0gICAgR3Jh
cGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0
aW9uKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKICAgICBib29sIGxheWVy
Q29tcG9zaXRlZCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW0KaW5kZXggNjU5ZmZmZjEyODRjMDJhMjIzMjIxMjA2ZWI4ZjE2ZjJhODEyYjVh
Yy4uMzRhZmM4MjBiMmRiODI4OGRjZmUxNzFkODY0ODM2ODcxMTY5ODJmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgpAQCAtMzIsOSArMzIsNyBAQAog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgogI2ltcG9ydCAiR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgogI2ltcG9ydCAi
TG9nZ2luZy5oIgotI2ltcG9ydCAiT3BlbkdMU29mdExpbmtDb2NvYS5oIgogI2ltcG9ydCAiUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkLmgiCiAjaW1w
b3J0ICJXZWJHTExheWVyLmgiCkBAIC00MiwxMSArNDAsNiBAQAogI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBM
QVRGT1JNKE1BQykKLSNpbXBvcnQgIlNjcmVlblByb3BlcnRpZXMuaCIKLSNpbXBvcnQgPE9wZW5H
TC9DR0xSZW5kZXJlcnMuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQ1YuaCIKICNlbmRpZgpAQCAt
MTUxLDE3ICsxNDQsMTcgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEcKICAgICBpZiAoIWNvbnRl
eHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRl
eHQuZ2V0KCksIGhvc3RXaW5kb3cpOworICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5nZXQoKSk7CiAKICAgICByZXR1
cm4gY29udGV4dDsKIH0KIAogUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFy
ZWRDb250ZXh0KQogewotICAgIGF1dG8gaG9zdFdpbmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhvc3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRD
b250ZXh0KTsKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywg
JnNoYXJlZENvbnRleHQsIG51bGxwdHIpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5wdHIoKSwgaG9zdFdp
bmRvdyk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTChzaGFyZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIG51bGxwdHIsICZzaGFy
ZWRDb250ZXh0LCBudWxscHRyKSk7CisKKyAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRleHQucHRyKCkpOwogCiAgICAgcmV0
dXJuIGNvbnRleHQ7CiB9CkBAIC0xNzEsNzIgKzE2NCwyNSBAQCBSZWY8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGNv
bnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0
cnMsIG51bGxwdHIsIG51bGxwdHIsIHN3YXBDaGFpbikpOwogfQogCi0jaWYgUExBVEZPUk0oTUFD
KSAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGQgYmUganVzdCBlbmFibGVkIC0gc2VlIDxy
ZGFyOi8vNTMwNjI3OTQ+LgotCi1zdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29u
dGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiwgSU9S
ZWdpc3RyeUdQVUlEIHByZWZlcnJlZEdQVUlEKQotewotICAgIC8vIFdoZW4gdGhlIFdlYlByb2Nl
c3MgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIFdpbmRvd1NlcnZlciwgdGhlcmUgaXMgbm8g
d2F5IGZvciBPcGVuR0wgdG8gdGVsbCB3aGljaCBHUFUgaXMgY29ubmVjdGVkIHRvIGEgZGlzcGxh
eS4KLSAgICAvLyBPbiAxMC4xMyssIGZpbmQgdGhlIHZpcnR1YWwgc2NyZWVuIHRoYXQgY29ycmVz
cG9uZHMgdG8gdGhlIHByZWZlcnJlZCBHUFUgYnkgaXRzIHJlZ2lzdHJ5SUQuCi0gICAgLy8gQ0dM
U2V0VmlydHVhbFNjcmVlbiBjYW4gdGhlbiBiZSB1c2VkIHRvIHRlbGwgT3BlbkdMIHdoaWNoIEdQ
VSBpdCBzaG91bGQgYmUgdXNpbmcuCi0KLSAgICBpZiAoIWNvbnRleHRPYmogfHwgIXByZWZlcnJl
ZEdQVUlEKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHTGludCB2aXJ0dWFsU2NyZWVuQ291bnQg
PSAwOwotICAgIENHTEVycm9yIGVycm9yID0gQ0dMRGVzY3JpYmVQaXhlbEZvcm1hdChwaXhlbEZv
cm1hdE9iaiwgMCwga0NHTFBGQVZpcnR1YWxTY3JlZW5Db3VudCwgJnZpcnR1YWxTY3JlZW5Db3Vu
dCk7Ci0gICAgQVNTRVJUKGVycm9yID09IGtDR0xOb0Vycm9yKTsKLQotICAgIEdMaW50IGZpcnN0
QWNjZWxlcmF0ZWRTY3JlZW4gPSAtMTsKLQotICAgIGZvciAoR0xpbnQgdmlydHVhbFNjcmVlbiA9
IDA7IHZpcnR1YWxTY3JlZW4gPCB2aXJ0dWFsU2NyZWVuQ291bnQ7ICsrdmlydHVhbFNjcmVlbikg
ewotICAgICAgICBHTGludCBkaXNwbGF5TWFzayA9IDA7Ci0gICAgICAgIGVycm9yID0gQ0dMRGVz
Y3JpYmVQaXhlbEZvcm1hdChwaXhlbEZvcm1hdE9iaiwgdmlydHVhbFNjcmVlbiwga0NHTFBGQURp
c3BsYXlNYXNrLCAmZGlzcGxheU1hc2spOwotICAgICAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5v
RXJyb3IpOwotCi0gICAgICAgIGF1dG8gZ3B1SUQgPSBncHVJREZvckRpc3BsYXlNYXNrKGRpc3Bs
YXlNYXNrKTsKLQotICAgICAgICBpZiAoZ3B1SUQgPT0gcHJlZmVycmVkR1BVSUQpIHsKLSAgICAg
ICAgICAgIGVycm9yID0gQ0dMU2V0VmlydHVhbFNjcmVlbihjb250ZXh0T2JqLCB2aXJ0dWFsU2Ny
ZWVuKTsKLSAgICAgICAgICAgIEFTU0VSVChlcnJvciA9PSBrQ0dMTm9FcnJvcik7Ci0gICAgICAg
ICAgICBMT0coV2ViR0wsICJDb250ZXh0ICglcCkgc2V0IHRvIEdQVSB3aXRoIElEOiAoJWxsZCku
IiwgY29udGV4dE9iaiwgZ3B1SUQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKGZpcnN0QWNjZWxlcmF0ZWRTY3JlZW4gPCAwKSB7Ci0gICAgICAgICAgICBH
TGludCBpc0FjY2VsZXJhdGVkID0gMDsKLSAgICAgICAgICAgIGVycm9yID0gQ0dMRGVzY3JpYmVQ
aXhlbEZvcm1hdChwaXhlbEZvcm1hdE9iaiwgdmlydHVhbFNjcmVlbiwga0NHTFBGQUFjY2VsZXJh
dGVkLCAmaXNBY2NlbGVyYXRlZCk7Ci0gICAgICAgICAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5v
RXJyb3IpOwotICAgICAgICAgICAgaWYgKGlzQWNjZWxlcmF0ZWQpCi0gICAgICAgICAgICAgICAg
Zmlyc3RBY2NlbGVyYXRlZFNjcmVlbiA9IHZpcnR1YWxTY3JlZW47Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICAvLyBObyByZWdpc3RyeUlEIG1hdGNoIGZvdW5kOyBzZXQgdG8gZmlyc3QgaGFyZHdh
cmUtYWNjZWxlcmF0ZWQgdmlydHVhbCBzY3JlZW4uCi0gICAgaWYgKGZpcnN0QWNjZWxlcmF0ZWRT
Y3JlZW4gPj0gMCkgewotICAgICAgICBlcnJvciA9IENHTFNldFZpcnR1YWxTY3JlZW4oY29udGV4
dE9iaiwgZmlyc3RBY2NlbGVyYXRlZFNjcmVlbik7Ci0gICAgICAgIEFTU0VSVChlcnJvciA9PSBr
Q0dMTm9FcnJvcik7Ci0gICAgICAgIExPRyhXZWJHTCwgIlJlZ2lzdHJ5SUQgKCVsbGQpIG5vdCBt
YXRjaGVkOyBDb250ZXh0ICglcCkgc2V0IHRvIHZpcnR1YWwgc2NyZWVuICglZCkuIiwgcHJlZmVy
cmVkR1BVSUQsIGNvbnRleHRPYmosIGZpcnN0QWNjZWxlcmF0ZWRTY3JlZW4pOwotICAgIH0KLX0K
LQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLQotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENv
bnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2FwQ2hhaW4pCitH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiwgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIHNoYXJlZENvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
KiBzd2FwQ2hhaW4pCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgRGVzdGluYXRpb246
Ok9mZnNjcmVlbiwgc2hhcmVkQ29udGV4dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0gYXR0cnMu
d2ViR0xWZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJHTDI7CiAK
LSNpZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCi0gICAgbV9wb3dlclByZWZlcmVuY2VV
c2VkRm9yQ3JlYXRpb24gPSAoaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpICYmIGF0dHJzLnBvd2Vy
UHJlZmVyZW5jZSA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZv
cm1hbmNlKSA/IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFu
Y2UgOiBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKLSNlbHNlCi0g
ICAgbV9wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24gPSBHcmFwaGljc0NvbnRleHRHTFBv
d2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKLSNlbmRpZgotCiAgICAgbV9kaXNwbGF5T2JqID0gSW5p
dGlhbGl6ZUVHTERpc3BsYXkoYXR0cnMpOwogICAgIGlmIChtX2Rpc3BsYXlPYmogPT0gRUdMX05P
X0RJU1BMQVkpCiAgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgc3VwcG9ydHNQb3dlclByZWZl
cmVuY2UgPSBmYWxzZTsKKyNpZiBQTEFURk9STShNQUMpCiAgICAgY29uc3QgY2hhciAqZGlzcGxh
eUV4dGVuc2lvbnMgPSBFR0xfUXVlcnlTdHJpbmcobV9kaXNwbGF5T2JqLCBFR0xfRVhURU5TSU9O
Uyk7Ci0gICAgTE9HKFdlYkdMLCAiRXh0ZW5zaW9uczogJXMiLCBkaXNwbGF5RXh0ZW5zaW9ucyk7
CisgICAgbV9zdXBwb3J0c1Bvd2VyUHJlZmVyZW5jZSA9IHN0cnN0cihkaXNwbGF5RXh0ZW5zaW9u
cywgIkVHTF9BTkdMRV9wb3dlcl9wcmVmZXJlbmNlIik7CisgICAgc3VwcG9ydHNQb3dlclByZWZl
cmVuY2UgPSBtX3N1cHBvcnRzUG93ZXJQcmVmZXJlbmNlOworI2VuZGlmCisgICAgaWYgKCFzdXBw
b3J0c1Bvd2VyUHJlZmVyZW5jZSAmJiBhdHRycy5wb3dlclByZWZlcmVuY2UgPT0gR3JhcGhpY3ND
b250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkgeworICAgICAgICBhdHRy
cy5wb3dlclByZWZlcmVuY2UgPSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVm
YXVsdDsKKyAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOworICAgIH0KIAogICAg
IEVHTGludCBjb25maWdBdHRyaWJ1dGVzW10gPSB7CiAgICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZ
UEUsIEVHTF9PUEVOR0xfRVMyX0JJVCwKQEAgLTI5MCwxMiArMjM2LDYgQEAgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHQKICAgICBlZ2xDb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX0NPTlRFWFRf
QklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU0pOwogICAgIGVnbENvbnRleHRBdHRyaWJ1
dGVzLmFwcGVuZChFR0xfRkFMU0UpOwogCi0gICAgaWYgKHN0cnN0cihkaXNwbGF5RXh0ZW5zaW9u
cywgIkVHTF9BTkdMRV9wb3dlcl9wcmVmZXJlbmNlIikpIHsKLSAgICAgICAgZWdsQ29udGV4dEF0
dHJpYnV0ZXMuYXBwZW5kKEVHTF9QT1dFUl9QUkVGRVJFTkNFX0FOR0xFKTsKLSAgICAgICAgLy8g
RUdMX0xPV19QT1dFUl9BTkdMRSBpcyB0aGUgZGVmYXVsdC4gQ2hhbmdlIHRvCi0gICAgICAgIC8v
IEVHTF9ISUdIX1BPV0VSX0FOR0xFIGlmIGRlc2lyZWQuCi0gICAgICAgIGVnbENvbnRleHRBdHRy
aWJ1dGVzLmFwcGVuZChFR0xfTE9XX1BPV0VSX0FOR0xFKTsKLSAgICB9CiAgICAgZWdsQ29udGV4
dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9OT05FKTsKIAogICAgIG1fY29udGV4dE9iaiA9IEVHTF9D
cmVhdGVDb250ZXh0KG1fZGlzcGxheU9iaiwgbV9jb25maWdPYmosIHNoYXJlZENvbnRleHQgPyBz
dGF0aWNfY2FzdDxFR0xDb250ZXh0PihzaGFyZWRDb250ZXh0LT5tX2NvbnRleHRPYmopIDogRUdM
X05PX0NPTlRFWFQsIGVnbENvbnRleHRBdHRyaWJ1dGVzLmRhdGEoKSk7CkBAIC0zMzIsMjEgKzI3
Miw2IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAgICAgIH0KICAgICAgICAgZXh0ZW5z
aW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7CiAgICAgfQotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICAvLyBGSVhNRTogSXQncyB1bmNsZWFyIGlmIE1BQ0NBVEFMWVNUIHNob3VsZCB0YWtlIHRo
ZXNlIHN0ZXBzIGFzIHdlbGwsIGJ1dCB0aGF0Ci0gICAgLy8gd291bGQgcmVxdWlyZSB0aGUgUGxh
dGZvcm1TY3JlZW5NYWMgY29kZSB0byBiZSBleHBvc2VkIHRvIENhdGFseXN0IHRvby4KLSAgICBF
R0xEZXZpY2VFWFQgZGV2aWNlID0gbnVsbHB0cjsKLSAgICBFR0xfUXVlcnlEaXNwbGF5QXR0cmli
RVhUKG1fZGlzcGxheU9iaiwgRUdMX0RFVklDRV9FWFQsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0
cmliKj4oJmRldmljZSkpOwotICAgIENHTENvbnRleHRPYmogY2dsQ29udGV4dCA9IG51bGxwdHI7
Ci0gICAgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXQgPSBudWxscHRyOwotICAgIEVHTF9R
dWVyeURldmljZUF0dHJpYkVYVChkZXZpY2UsIEVHTF9DR0xfQ09OVEVYVF9BTkdMRSwgcmVpbnRl
cnByZXRfY2FzdDxFR0xBdHRyaWIqPigmY2dsQ29udGV4dCkpOwotICAgIEVHTF9RdWVyeURldmlj
ZUF0dHJpYkVYVChkZXZpY2UsIEVHTF9DR0xfUElYRUxfRk9STUFUX0FOR0xFLCByZWludGVycHJl
dF9jYXN0PEVHTEF0dHJpYio+KCZwaXhlbEZvcm1hdCkpOwotICAgIGF1dG8gZ3B1SUQgPSAoaG9z
dFdpbmRvdyAmJiBob3N0V2luZG93LT5kaXNwbGF5SUQoKSkgPyBncHVJREZvckRpc3BsYXkoaG9z
dFdpbmRvdy0+ZGlzcGxheUlEKCkpIDogcHJpbWFyeUdQVUlEKCk7Ci0gICAgc2V0R1BVQnlSZWdp
c3RyeUlEKGNnbENvbnRleHQsIHBpeGVsRm9ybWF0LCBncHVJRCk7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShob3N0V2luZG93KTsKLSNlbmRpZgotCiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7
CiAgICAgYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOyAvLyBUaGV5IG1heSBoYXZlIGNoYW5n
ZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKQEAgLTU2MSwzMCArNDg2LDI2IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNoZWNrR1BVU3RhdHVzKCkKIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCBpc1Zpc2libGUpCiB7Ci0gICAg
aWYgKG1fcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uID09IEdyYXBoaWNzQ29udGV4dEdM
UG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2UpIHsKLSAgICAgICAgaWYgKGlzVmlzaWJs
ZSkKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLmFkZENvbnRleHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UodGhpcyk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVk
TWFuYWdlcigpLnJlbW92ZUNvbnRleHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UodGhpcyk7Ci0g
ICAgfQotfQotCiAjaWYgUExBVEZPUk0oTUFDKQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dXBkYXRlQ0dMQ29udGV4dCgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
KyAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5wb3dlclByZWZlcmVuY2UgIT0gR3JhcGhpY3ND
b250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkKICAgICAgICAgcmV0dXJu
OwotICAgIExPRyhXZWJHTCwgIkRldGVjdGVkIGEgbXV4IHN3aXRjaCBvciBkaXNwbGF5IHJlY29u
ZmlndXJhdGlvbi4gQ2FsbCBDR0xVcGRhdGVDb250ZXh0LiAoJXApIiwgdGhpcyk7Ci0KLSAgICBF
R0xEZXZpY2VFWFQgZGV2aWNlID0gbnVsbHB0cjsKLSAgICBFR0xfUXVlcnlEaXNwbGF5QXR0cmli
RVhUKG1fZGlzcGxheU9iaiwgRUdMX0RFVklDRV9FWFQsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0
cmliKj4oJmRldmljZSkpOwotICAgIENHTENvbnRleHRPYmogY2dsQ29udGV4dCA9IG51bGxwdHI7
Ci0gICAgRUdMX1F1ZXJ5RGV2aWNlQXR0cmliRVhUKGRldmljZSwgRUdMX0NHTF9DT05URVhUX0FO
R0xFLCByZWludGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZjZ2xDb250ZXh0KSk7Ci0KLSAgICBD
R0xVcGRhdGVDb250ZXh0KGNnbENvbnRleHQpOwotICAgIG1faGFzU3dpdGNoZWRUb0hpZ2hQZXJm
b3JtYW5jZUdQVSA9IHRydWU7CisgICAgaWYgKGlzVmlzaWJsZSkKKyAgICAgICAgbV9oaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0ID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6YWNx
dWlyZSgpOworICAgIGVsc2UKKyAgICAgICAgbV9oaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0ID0g
eyB9OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaXNWaXNpYmxlKTsKKyNlbmRpZgogfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKCkKK3sK
KyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKG1fc3VwcG9ydHNQb3dlclByZWZlcmVuY2UpCisg
ICAgICAgIEVHTF9IYW5kbGVHUFVTd2l0Y2hBTkdMRShtX2Rpc3BsYXlPYmopOwogI2VuZGlmCisg
ICAgZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpOworfQogCiBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogewpAQCAt
NjU0LDUwICs1NzUsOCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc0dMRVMyQ29t
cGxpYW50KCkgY29uc3QKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2ltdWxhdGVD
b250ZXh0Q2hhbmdlZCgpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpz
aGFyZWRNYW5hZ2VyKCkudXBkYXRlQWxsQ29udGV4dHMoKTsKLX0KLQotYm9vbCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3QKLXsKLSNpZiBQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKLSAg
ICAvLyBXaGVuIFdpbmRvd1NlcnZlciBhY2Nlc3MgaXMgYmxvY2tlZCBpbiB0aGUgV2ViUHJvY2Vz
cywgdGhlcmUgaXMgbm8gd2F5Ci0gICAgLy8gZm9yIE9wZW5HTCB0byBkZWNpZGUgd2hpY2ggR1BV
IGlzIGNvbm5lY3RlZCB0byBhIGRpc3BsYXkgKG9ubGluZS9vZmZsaW5lKS4KLSAgICAvLyBPcGVu
R0wgd2lsbCB0aGVuIGNvbnNpZGVyIGFsbCBHUFVzLCBvciByZW5kZXJlcnMsIGFzIG9mZmxpbmUs
IHdoaWNoIG1lYW5zCi0gICAgLy8gYWxsIG9mZmxpbmUgcmVuZGVyZXJzIG5lZWQgdG8gYmUgY29u
c2lkZXJlZCB3aGVuIGZpbmRpbmcgYSBwaXhlbCBmb3JtYXQuCi0gICAgLy8gSW4gV2ViS2l0IGxl
Z2FjeSwgdGhlcmUgd2lsbCBzdGlsbCBiZSBhIFdpbmR3U2VydmVyIGNvbm5lY3Rpb24sIGFuZAot
ICAgIC8vIG1fZGlzcGxheU1hc2sgd2lsbCBub3QgYmUgc2V0IGluIHRoaXMgY2FzZS4KLSAgICBp
ZiAocHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotI2Vs
aWYgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0gICAgLy8gRklYTUU6IDxyZGFyOi8vNTMwNjI3OTQ+
IFdlJ3JlIHZlcnkgaW5jb25zaXN0ZW50IGFib3V0IFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JM
T0NLSU5HCi0gICAgLy8gYW5kIE1BQy9NQUNDQVRBTFlTVCBhbmQgT1BFTkdML09QRU5HTEVTLgot
ICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgICAgIAotI2lmIEhBVkUoQVBQTEVfR1JBUEhJ
Q1NfQ09OVFJPTCkKLSAgICBpZiAoaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSNlbmRpZgotICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLQotI2lmIFBM
QVRGT1JNKE1BQykKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNjcmVlbkRpZENoYW5n
ZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHRPYmop
Ci0gICAgICAgIHJldHVybjsKLSAgICBpZiAoIW1faGFzU3dpdGNoZWRUb0hpZ2hQZXJmb3JtYW5j
ZUdQVSkgewotICAgICAgICBFR0xEZXZpY2VFWFQgZGV2aWNlID0gbnVsbHB0cjsKLSAgICAgICAg
RUdMX1F1ZXJ5RGlzcGxheUF0dHJpYkVYVChtX2Rpc3BsYXlPYmosIEVHTF9ERVZJQ0VfRVhULCBy
ZWludGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZkZXZpY2UpKTsKLSAgICAgICAgQ0dMQ29udGV4
dE9iaiBjZ2xDb250ZXh0ID0gbnVsbHB0cjsKLSAgICAgICAgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4
ZWxGb3JtYXQgPSBudWxscHRyOwotICAgICAgICBFR0xfUXVlcnlEZXZpY2VBdHRyaWJFWFQoZGV2
aWNlLCBFR0xfQ0dMX0NPTlRFWFRfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4o
JmNnbENvbnRleHQpKTsKLSAgICAgICAgRUdMX1F1ZXJ5RGV2aWNlQXR0cmliRVhUKGRldmljZSwg
RUdMX0NHTF9QSVhFTF9GT1JNQVRfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4o
JnBpeGVsRm9ybWF0KSk7Ci0gICAgICAgIHNldEdQVUJ5UmVnaXN0cnlJRChjZ2xDb250ZXh0LCBw
aXhlbEZvcm1hdCwgZ3B1SURGb3JEaXNwbGF5KGRpc3BsYXlJRCkpOwotICAgIH0KKyAgICBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5kaXNwbGF5V2FzUmVj
b25maWd1cmVkKCk7CiB9Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKE1BQykKIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01hYy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzQ1NjVkMDBmM2ViMzE4MjBlOThjMDYzYjZkODlhODNjNWRhMDY2Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9H
cmFwaGljc0NoZWNrc01hYy5jcHAKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDaGVja3NNYWMuaCIKKworI2lmIFBM
QVRGT1JNKE1BQykKKworI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKKyNpbmNsdWRl
IDxzeXMvc3lzY3RsLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgSEFW
RShBUFBMRV9HUkFQSElDU19DT05UUk9MKQorCitlbnVtIHsKKyAgICBrQUdDT3BlbiwKKyAgICBr
QUdDQ2xvc2UKK307CisKK3N0YXRpYyBpb19jb25uZWN0X3QgYXR0YWNoVG9BcHBsZUdyYXBoaWNz
Q29udHJvbCgpCit7CisgICAgbWFjaF9wb3J0X3QgbWFzdGVyUG9ydCA9IE1BQ0hfUE9SVF9OVUxM
OworCisgICAgaWYgKElPTWFzdGVyUG9ydChNQUNIX1BPUlRfTlVMTCwgJm1hc3RlclBvcnQpICE9
IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOworCisgICAgQ0ZE
aWN0aW9uYXJ5UmVmIGNsYXNzVG9NYXRjaCA9IElPU2VydmljZU1hdGNoaW5nKCJBcHBsZUdyYXBo
aWNzQ29udHJvbCIpOworICAgIGlmICghY2xhc3NUb01hdGNoKQorICAgICAgICByZXR1cm4gTUFD
SF9QT1JUX05VTEw7CisKKyAgICBrZXJuX3JldHVybl90IGtlcm5SZXN1bHQ7CisgICAgaW9faXRl
cmF0b3JfdCBpdGVyYXRvcjsKKyAgICBpZiAoKGtlcm5SZXN1bHQgPSBJT1NlcnZpY2VHZXRNYXRj
aGluZ1NlcnZpY2VzKG1hc3RlclBvcnQsIGNsYXNzVG9NYXRjaCwgJml0ZXJhdG9yKSkgIT0gS0VS
Tl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gTUFDSF9QT1JUX05VTEw7CisKKyAgICBpb19zZXJ2
aWNlX3Qgc2VydmljZU9iamVjdCA9IElPSXRlcmF0b3JOZXh0KGl0ZXJhdG9yKTsKKyAgICBJT09i
amVjdFJlbGVhc2UoaXRlcmF0b3IpOworICAgIGlmICghc2VydmljZU9iamVjdCkKKyAgICAgICAg
cmV0dXJuIE1BQ0hfUE9SVF9OVUxMOworCisgICAgaW9fY29ubmVjdF90IGRhdGFQb3J0OworICAg
IElPT2JqZWN0UmV0YWluKHNlcnZpY2VPYmplY3QpOworICAgIGtlcm5SZXN1bHQgPSBJT1NlcnZp
Y2VPcGVuKHNlcnZpY2VPYmplY3QsIG1hY2hfdGFza19zZWxmKCksIDAsICZkYXRhUG9ydCk7Cisg
ICAgSU9PYmplY3RSZWxlYXNlKHNlcnZpY2VPYmplY3QpOworCisgICAgcmV0dXJuIChrZXJuUmVz
dWx0ID09IEtFUk5fU1VDQ0VTUykgPyBkYXRhUG9ydCA6IE1BQ0hfUE9SVF9OVUxMOworfQorCitz
dGF0aWMgYm9vbCBoYXNNdXhDYXBhYmlsaXR5KCkKK3sKKyAgICBpb19jb25uZWN0X3QgZGF0YVBv
cnQgPSBhdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKCk7CisKKyAgICBpZiAoZGF0YVBvcnQg
PT0gTUFDSF9QT1JUX05VTEwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgcmVz
dWx0OworICAgIGlmIChJT0Nvbm5lY3RDYWxsU2NhbGFyTWV0aG9kKGRhdGFQb3J0LCBrQUdDT3Bl
biwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgbnVsbHB0cikgPT0gS0VSTl9TVUNDRVNTKSB7CisgICAg
ICAgIElPQ29ubmVjdENhbGxTY2FsYXJNZXRob2QoZGF0YVBvcnQsIGtBR0NDbG9zZSwgbnVsbHB0
ciwgMCwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgfSBl
bHNlCisgICAgICAgIHJlc3VsdCA9IGZhbHNlOworCisgICAgSU9TZXJ2aWNlQ2xvc2UoZGF0YVBv
cnQpOworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAvLyBUaGlzIGlzIGRldGVjdGluZyBN
YWMgaGFyZHdhcmUgd2l0aCBhbiBJbnRlbCBnNTc1IEdQVSwgd2hpY2gKKyAgICAgICAgLy8gd2Ug
ZG9uJ3Qgd2FudCB0byBtYWtlIGF2YWlsYWJsZSB0byBtdXhpbmcuCisgICAgICAgIC8vIEJhc2Vk
IG9uIGluZm9ybWF0aW9uIGZyb20gQXBwbGUncyBPcGVuR0wgdGVhbSwgc3VjaCBkZXZpY2VzCisg
ICAgICAgIC8vIGhhdmUgZm91ciBvciBmZXdlciBwcm9jZXNzb3JzLgorICAgICAgICAvLyA8cmRh
cjovL3Byb2JsZW0vMzAwNjAzNzg+CisgICAgICAgIGludCBuYW1lc1syXSA9IHsgQ1RMX0hXLCBI
V19OQ1BVIH07CisgICAgICAgIGludCBjcHVDb3VudDsKKyAgICAgICAgc2l6ZV90IGNwdUNvdW50
TGVuZ3RoID0gc2l6ZW9mKGNwdUNvdW50KTsKKyAgICAgICAgc3lzY3RsKG5hbWVzLCAyLCAmY3B1
Q291bnQsICZjcHVDb3VudExlbmd0aCwgbnVsbHB0ciwgMCk7CisgICAgICAgIHJlc3VsdCA9IGNw
dUNvdW50ID4gNDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjZW5kaWYgLy8g
SEFWRShBUFBMRV9HUkFQSElDU19DT05UUk9MKQorCitib29sIGhhc0xvd0FuZEhpZ2hQb3dlckdQ
VXMoKQoreworI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKKyAgICBzdGF0aWMgYm9v
bCBjYW5NdXggPSBoYXNNdXhDYXBhYmlsaXR5KCk7CisgICAgcmV0dXJuIGNhbk11eDsKKyNlbHNl
CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK30KKworI2VuZGlmCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01h
Yy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tz
TWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmJjNWI3OTgzMmUwZTA5MTIxYjkyNGM1NmE1YmFjZjE5NzM2MWUy
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HcmFwaGljc0NoZWNrc01hYy5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXRUJDT1JFX0VYUE9SVCBib29sIGhh
c0xvd0FuZEhpZ2hQb3dlckdQVXMoKTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1Njb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TY29wZWRIaWdoUGVyZm9ybWFu
Y2VHUFVSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMyMWZkNzk0MDE5YTMxYTgwNTczNDRmMmRhMmRj
NGJhYWUxMjhlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9TY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmgKQEAgLTAsMCArMSw3
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NDaGVj
a3NNYWMuaCIKKyNpbmNsdWRlICJTd2l0Y2hpbmdHUFVDbGllbnQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0IHsKK3B1Ymxp
YzoKKyAgICBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0KCkgPSBkZWZhdWx0OworICAg
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QoU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BV
UmVxdWVzdCYmIG90aGVyKQorICAgICAgICA6IG1fcmVxdWVzdGVkKHN0ZDo6ZXhjaGFuZ2Uob3Ro
ZXIubV9yZXF1ZXN0ZWQsIGZhbHNlKSkKKyAgICB7CisgICAgfQorICAgIH5TY29wZWRIaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0KCkKKyAgICB7CisgICAgICAgIGlmICghbV9yZXF1ZXN0ZWQpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIFN3aXRjaGluZ0dQVUNsaWVudDo6c2luZ2xldG9u
SWZFeGlzdHMoKS0+cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpOworICAgIH0KKyAgICBTY29w
ZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0JiBvcGVyYXRvcj0oU2NvcGVkSGlnaFBlcmZvcm1h
bmNlR1BVUmVxdWVzdCYmIG90aGVyKQorICAgIHsKKyAgICAgICAgaWYgKG1fcmVxdWVzdGVkKQor
ICAgICAgICAgICAgU3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygpLT5yZWxl
YXNlSGlnaFBlcmZvcm1hbmNlR1BVKCk7CisgICAgICAgIG1fcmVxdWVzdGVkID0gc3RkOjpleGNo
YW5nZShvdGhlci5tX3JlcXVlc3RlZCwgZmFsc2UpOworICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorICAgIHN0YXRpYyBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0IGFjcXVpcmUo
KQorICAgIHsKKyAgICAgICAgaWYgKCFoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkpCisgICAgICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICBhdXRvIGNsaWVudCA9IFN3aXRjaGluZ0dQVUNsaWVu
dDo6c2luZ2xldG9uSWZFeGlzdHMoKTsKKyAgICAgICAgaWYgKCFjbGllbnQpCisgICAgICAgICAg
ICByZXR1cm4geyB9OworICAgICAgICBjbGllbnQtPnJlcXVlc3RIaWdoUGVyZm9ybWFuY2VHUFUo
KTsKKyAgICAgICAgcmV0dXJuIHsgMCB9OworICAgIH0KK3ByaXZhdGU6CisgICAgU2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdChpbnQpCisgICAgICAgIDogbV9yZXF1ZXN0ZWQodHJ1ZSkK
KyAgICB7CisgICAgfQorICAgIGJvb2wgbV9yZXF1ZXN0ZWQgeyBmYWxzZSB9OworfTsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGlu
Z0dQVUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRj
aGluZ0dQVUNsaWVudC5oCmluZGV4IDQ5OWEyODdhNDVjOTY4ZDgzM2RlY2ZlNTMzMzExZDBjZWIz
MTcwNzguLjQ1MjM2NzgxYjhlMTA4ZTI4NmZkZTIxNGU4NTFhM2E4MmIzMDFjN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Td2l0Y2hpbmdHUFVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU3dpdGNoaW5n
R1BVQ2xpZW50LmgKQEAgLTI5LDE2ICsyOSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFN3aXRjaGluZ0dQVUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFN3aXRjaGluZ0dQVUNsaWVudCogc2luZ2xldG9uSWZFeGlzdHMoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTaW5nbGV0b24oU3dpdGNoaW5nR1BVQ2xpZW50Jik7CiAK
ICAgICB2aXJ0dWFsIH5Td2l0Y2hpbmdHUFVDbGllbnQoKSA9IGRlZmF1bHQ7Ci0KK3ByaXZhdGU6
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN3aXRjaGluZ0dQVUNsaWVudCogc2luZ2xldG9u
SWZFeGlzdHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpID0gMDsK
LSAgICAKLXByaXZhdGU6CisKICAgICBzdGF0aWMgU3dpdGNoaW5nR1BVQ2xpZW50KiBtX3Npbmds
ZXRvbjsKKyAgICBmcmllbmQgY2xhc3MgU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggZjUyYmRkNjZm
ZDBjNjdiMTI1ZDhiNTExZTI5Y2Y5MmZjMmZjZjVlMC4uOGQ3YmIzNTBmYWJkMDhmYTgxOTY4YmE0
OTRjYWNjZmI3YzA5ZmY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAg
LTY5LDYgKzY5LDEwIEBAIGNsYXNzIEdDR0xMYXllcjsKIH0KICNlbmRpZgogCisjaWYgUExBVEZP
Uk0oTUFDKQorI2luY2x1ZGUgIlNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBFeHRlbnNpb25zR0w7CiAjaWYgVVNF
KEFOR0xFKQpAQCAtMjU2LDcgKzI2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRleFN1YkltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZp
bmFsOwogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQpIGZpbmFsOwogICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwotICAgIHZvaWQgY29t
cHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFs
OyAKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRw
dHIgb2Zmc2V0KSBmaW5hbDsKICAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7
CiAgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogCkBAIC00NjEsMTQgKzQ2NSwxMiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwcmltaXRpdmVSZXN0YXJ0SW5kZXgoR0NHTHVpbnQpOwogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShDT0NPQSkgJiYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgdXBkYXRlQ0dM
Q29udGV4dCgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgZGlzcGxheVdhc1JlY29u
ZmlndXJlZCgpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wp
IGZpbmFsOwogCi0gICAgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVm
ZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wb3dlclByZWZl
cmVuY2VVc2VkRm9yQ3JlYXRpb247IH0KLQogICAgIC8vIFN1cHBvcnQgZm9yIGJ1ZmZlciBjcmVh
dGlvbiBhbmQgZGVsZXRpb24KICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZlcigpIGZp
bmFsOwogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBmaW5hbDsKQEAg
LTQ5NywxMSArNDk5LDYgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgdGV4dHVyZVNlZWQoR0NH
THVpbnQgdGV4dHVyZSkgeyByZXR1cm4gbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmNvdW50KHRl
eHR1cmUpOyB9CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgdXNpbmcgUGxhdGZvcm1EaXNwbGF5
SUQgPSB1aW50MzJfdDsKLSAgICB2b2lkIHNjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJ
RCk7Ci0jZW5kaWYKLQogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKIAogI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKQEAgLTUyOSw3ICs1MjYsNyBAQCBw
cml2YXRlOgogICAgIC8vIGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0
ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lk
IHZhbGlkYXRlQXR0cmlidXRlcygpOwotICAgIAorCiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9p
ZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CiAKICAgICAvLyBEaWQg
dGhlIG1vc3QgcmVjZW50IGRyYXdpbmcgb3BlcmF0aW9uIGxlYXZlIHRoZSBHUFUgaW4gYW4gYWNj
ZXB0YWJsZSBzdGF0ZT8KQEAgLTU0Nyw3ICs1NDQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgYXR0
YWNoRGVwdGhBbmRTdGVuY2lsQnVmZmVySWZOZWVkZWQoR0NHTHVpbnQgaW50ZXJuYWxEZXB0aFN0
ZW5jaWxGb3JtYXQsIGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBib29sIGFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0OwogICAgIGJvb2wgcmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiAgICAgYm9vbCBhbGxvY2F0ZUFuZEJpbmREaXNw
bGF5QnVmZmVyQmFja2luZygpOwogICAgIGJvb2wgYmluZERpc3BsYXlCdWZmZXJCYWNraW5nKHN0
ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tpbmcsIHZvaWQqIHBidWZmZXIpOwpAQCAtNTgz
LDcgKzU3OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAsIGlzVmFsaWQoZmFsc2UpCiAgICAg
ICAgIHsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBTaGFkZXJTeW1ib2xNYXAmIHN5
bWJvbE1hcChlbnVtIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSBzeW1ib2xUeXBlKQogICAgICAgICB7
CiAgICAgICAgICAgICBBU1NFUlQoc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfQVRU
UklCVVRFIHx8IHN5bWJvbFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0gfHwgc3lt
Ym9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfVkFSWUlORyk7CkBAIC02NDgsNyArNjQ0LDYg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uc0dMT3BlbkdMPiBtX2V4
dGVuc2lvbnM7CiAjZW5kaWYKIAotICAgIEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNl
IG1fcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uIHsgR3JhcGhpY3NDb250ZXh0R0xQb3dl
clByZWZlcmVuY2U6OkRlZmF1bHQgfTsKICAgICBWZWN0b3I8VmVjdG9yPGZsb2F0Pj4gbV92ZXJ0
ZXhBcnJheTsKIAogI2lmICFVU0UoQU5HTEUpCkBAIC02ODAsNyArNjc1LDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICB1c2luZyBCb3VuZFRleHR1cmVNYXAgPSBIYXNoTWFwPEdDR0xlbnVtLAogICAg
ICAgICAgICAgc3RkOjpwYWlyPEdDR0x1aW50LCBHQ0dMZW51bT4sCi0gICAgICAgICAgICBXVEY6
OkludEhhc2g8R0NHTGVudW0+LCAKKyAgICAgICAgICAgIFdURjo6SW50SGFzaDxHQ0dMZW51bT4s
CiAgICAgICAgICAgICBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50
PiwKICAgICAgICAgICAgIFdURjo6UGFpckhhc2hUcmFpdHM8V1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czxHQ0dMdWludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8R0NHTHVpbnQ+PgogICAgICAgICA+OwpAQCAtNzYxLDggKzc1NiwxMCBAQCBwcml2YXRlOgog
ICAgIC8vIFdoZW4gcHJlc2VydmVEcmF3aW5nQnVmZmVyID09IHRydWUsIHRoaXMgaXMgYmxpdHRl
ZCB0byBkdXJpbmcgZGlzcGxheSBwcmVwYXJlLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZh
Y2U+IG1fZGlzcGxheUJ1ZmZlckJhY2tpbmc7CiAgICAgdm9pZCogbV9kaXNwbGF5QnVmZmVyUGJ1
ZmZlciB7IG51bGxwdHIgfTsKLQotICAgIGJvb2wgbV9oYXNTd2l0Y2hlZFRvSGlnaFBlcmZvcm1h
bmNlR1BVIHsgZmFsc2UgfTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBib29sIG1f
c3VwcG9ydHNQb3dlclByZWZlcmVuY2UgeyBmYWxzZSB9OworICAgIFNjb3BlZEhpZ2hQZXJmb3Jt
YW5jZUdQVVJlcXVlc3QgbV9oaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0OwogI2VuZGlmCiAjaWYg
RU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxH
cmFwaGljc0NvbnRleHRHTENWPiBtX2N2OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyLmNwcAppbmRleCA0MWFiNTBjYmVmMmVhNjQyOTNiYTBjOTliZThiMDVm
Yzk3MDc3ZGU2Li4wN2ViYTA0MjZiNmNjYzRhMmQxNGI4N2UwOGI3NzYzZjc1MzBiMmU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcApAQCAtMzEs
OTEgKzMxLDggQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKIAotI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKLSNpbmNs
dWRlIDxzeXMvc3lzY3RsLmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRl
ICJTd2l0Y2hpbmdHUFVDbGllbnQuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LSNpZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCi0KLWVudW0gewotICAgIGtBR0NPcGVu
LAotICAgIGtBR0NDbG9zZQotfTsKLQotc3RhdGljIGlvX2Nvbm5lY3RfdCBhdHRhY2hUb0FwcGxl
R3JhcGhpY3NDb250cm9sKCkKLXsKLSAgICBtYWNoX3BvcnRfdCBtYXN0ZXJQb3J0ID0gTUFDSF9Q
T1JUX05VTEw7Ci0gICAgCi0gICAgaWYgKElPTWFzdGVyUG9ydChNQUNIX1BPUlRfTlVMTCwgJm1h
c3RlclBvcnQpICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxM
OwotICAgIAotICAgIENGRGljdGlvbmFyeVJlZiBjbGFzc1RvTWF0Y2ggPSBJT1NlcnZpY2VNYXRj
aGluZygiQXBwbGVHcmFwaGljc0NvbnRyb2wiKTsKLSAgICBpZiAoIWNsYXNzVG9NYXRjaCkKLSAg
ICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOwotICAgIAotICAgIGtlcm5fcmV0dXJuX3Qga2Vy
blJlc3VsdDsKLSAgICBpb19pdGVyYXRvcl90IGl0ZXJhdG9yOwotICAgIGlmICgoa2VyblJlc3Vs
dCA9IElPU2VydmljZUdldE1hdGNoaW5nU2VydmljZXMobWFzdGVyUG9ydCwgY2xhc3NUb01hdGNo
LCAmaXRlcmF0b3IpKSAhPSBLRVJOX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBNQUNIX1BPUlRf
TlVMTDsKLSAgICAKLSAgICBpb19zZXJ2aWNlX3Qgc2VydmljZU9iamVjdCA9IElPSXRlcmF0b3JO
ZXh0KGl0ZXJhdG9yKTsKLSAgICBJT09iamVjdFJlbGVhc2UoaXRlcmF0b3IpOwotICAgIGlmICgh
c2VydmljZU9iamVjdCkKLSAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOwotICAgIAotICAg
IGlvX2Nvbm5lY3RfdCBkYXRhUG9ydDsKLSAgICBJT09iamVjdFJldGFpbihzZXJ2aWNlT2JqZWN0
KTsKLSAgICBrZXJuUmVzdWx0ID0gSU9TZXJ2aWNlT3BlbihzZXJ2aWNlT2JqZWN0LCBtYWNoX3Rh
c2tfc2VsZigpLCAwLCAmZGF0YVBvcnQpOwotICAgIElPT2JqZWN0UmVsZWFzZShzZXJ2aWNlT2Jq
ZWN0KTsKLSAgICAKLSAgICByZXR1cm4gKGtlcm5SZXN1bHQgPT0gS0VSTl9TVUNDRVNTKSA/IGRh
dGFQb3J0IDogTUFDSF9QT1JUX05VTEw7Ci19Ci0KLXN0YXRpYyBib29sIGhhc011eENhcGFiaWxp
dHkoKQotewotICAgIGlvX2Nvbm5lY3RfdCBkYXRhUG9ydCA9IGF0dGFjaFRvQXBwbGVHcmFwaGlj
c0NvbnRyb2woKTsKLSAgICAKLSAgICBpZiAoZGF0YVBvcnQgPT0gTUFDSF9QT1JUX05VTEwpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBib29sIHJlc3VsdDsKLSAgICBpZiAoSU9D
b25uZWN0Q2FsbFNjYWxhck1ldGhvZChkYXRhUG9ydCwga0FHQ09wZW4sIG51bGxwdHIsIDAsIG51
bGxwdHIsIG51bGxwdHIpID09IEtFUk5fU1VDQ0VTUykgewotICAgICAgICBJT0Nvbm5lY3RDYWxs
U2NhbGFyTWV0aG9kKGRhdGFQb3J0LCBrQUdDQ2xvc2UsIG51bGxwdHIsIDAsIG51bGxwdHIsIG51
bGxwdHIpOwotICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgIH0gZWxzZQotICAgICAgICByZXN1
bHQgPSBmYWxzZTsKLSAgICAKLSAgICBJT1NlcnZpY2VDbG9zZShkYXRhUG9ydCk7Ci0gICAgCi0g
ICAgaWYgKHJlc3VsdCkgewotICAgICAgICAvLyBUaGlzIGlzIGRldGVjdGluZyBNYWMgaGFyZHdh
cmUgd2l0aCBhbiBJbnRlbCBnNTc1IEdQVSwgd2hpY2gKLSAgICAgICAgLy8gd2UgZG9uJ3Qgd2Fu
dCB0byBtYWtlIGF2YWlsYWJsZSB0byBtdXhpbmcuCi0gICAgICAgIC8vIEJhc2VkIG9uIGluZm9y
bWF0aW9uIGZyb20gQXBwbGUncyBPcGVuR0wgdGVhbSwgc3VjaCBkZXZpY2VzCi0gICAgICAgIC8v
IGhhdmUgZm91ciBvciBmZXdlciBwcm9jZXNzb3JzLgotICAgICAgICAvLyA8cmRhcjovL3Byb2Js
ZW0vMzAwNjAzNzg+Ci0gICAgICAgIGludCBuYW1lc1syXSA9IHsgQ1RMX0hXLCBIV19OQ1BVIH07
Ci0gICAgICAgIGludCBjcHVDb3VudDsKLSAgICAgICAgc2l6ZV90IGNwdUNvdW50TGVuZ3RoID0g
c2l6ZW9mKGNwdUNvdW50KTsKLSAgICAgICAgc3lzY3RsKG5hbWVzLCAyLCAmY3B1Q291bnQsICZj
cHVDb3VudExlbmd0aCwgbnVsbHB0ciwgMCk7Ci0gICAgICAgIHJlc3VsdCA9IGNwdUNvdW50ID4g
NDsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotYm9vbCBoYXNMb3dBbmRI
aWdoUG93ZXJHUFVzKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBjYW5NdXggPSBoYXNNdXhDYXBhYmls
aXR5KCk7Ci0gICAgcmV0dXJuIGNhbk11eDsKLX0KLSNlbmRpZiAvLyBIQVZFKEFQUExFX0dSQVBI
SUNTX0NPTlRST0wpCi0KIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlciYgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkKIHsKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyPiBzX21hbmFnZXI7CkBA
IC0xMjcsMzMgKzQ0LDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpk
aXNwbGF5V2FzUmVjb25maWd1cmVkKENHRGlyZWN0RGlzcGxheUlELCBDCiB7CiAgICAgTE9HKFdl
YkdMLCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1
cmVkIik7CiAgICAgaWYgKGZsYWdzICYga0NHRGlzcGxheVNldE1vZGVGbGFnKQotICAgICAgICBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS51cGRhdGVBbGxD
b250ZXh0cygpOworICAgICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKS5kaXNwbGF5V2FzUmVjb25maWd1cmVkKCk7CiB9CiAjZW5kaWYKIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnVwZGF0ZUFsbENvbnRleHRzKCkKLXsKLSNp
ZiBQTEFURk9STShNQUMpCi0gICAgZm9yIChjb25zdCBhdXRvJiBjb250ZXh0IDogbV9jb250ZXh0
cykgewotICAgICAgICBjb250ZXh0LT51cGRhdGVDR0xDb250ZXh0KCk7Ci0gICAgICAgIGNvbnRl
eHQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKTsKLSAgICB9Ci0jZW5kaWYK
LX0KLQotI2lmIFBMQVRGT1JNKE1BQykKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5h
Z2VyOjpzY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBjb25zdCBI
b3N0V2luZG93KiB3aW5kb3cpCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlcjo6ZGlzcGxheVdhc1JlY29uZmlndXJlZCgpCiB7Ci0gICAgZm9y
IChjb25zdCBhdXRvJiBjb250ZXh0QW5kV2luZG93IDogbV9jb250ZXh0V2luZG93TWFwKSB7Ci0g
ICAgICAgIGlmIChjb250ZXh0QW5kV2luZG93LnZhbHVlID09IHdpbmRvdykgewotICAgICAgICAg
ICAgY29udGV4dEFuZFdpbmRvdy5rZXktPnNjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpOwotICAg
ICAgICAgICAgTE9HKFdlYkdMLCAiQ2hhbmdpbmcgY29udGV4dCAoJXApIHRvIGRpc3BsYXkgKCVk
KS4iLCBjb250ZXh0QW5kV2luZG93LmtleSwgZGlzcGxheUlEKTsKLSAgICAgICAgfQotICAgIH0K
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHQgOiBtX2NvbnRleHRzKQorICAgICAgICBjb250
ZXh0LT5kaXNwbGF5V2FzUmVjb25maWd1cmVkKCk7CiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmFkZENvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wqIGNvbnRleHQsIEhvc3RXaW5kb3cqIHdpbmRvdykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xNYW5hZ2VyOjphZGRDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0
KQogewogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0xNjYsNyAr
NjksNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dChH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dAogCiAgICAgQVNTRVJUKCFtX2NvbnRleHRz
LmNvbnRhaW5zKGNvbnRleHQpKTsKICAgICBtX2NvbnRleHRzLmFwcGVuZChjb250ZXh0KTsKLSAg
ICBtX2NvbnRleHRXaW5kb3dNYXAuc2V0KGNvbnRleHQsIHdpbmRvdyk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpyZW1vdmVDb250ZXh0KEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0KQpAQCAtMTc0LDk3ICs3NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlcjo6cmVtb3ZlQ29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCogY29udAogICAgIGlmICghbV9jb250ZXh0cy5jb250YWlucyhjb250ZXh0KSkKICAgICAgICAg
cmV0dXJuOwogICAgIG1fY29udGV4dHMucmVtb3ZlRmlyc3QoY29udGV4dCk7Ci0gICAgbV9jb250
ZXh0V2luZG93TWFwLnJlbW92ZShjb250ZXh0KTsKLSAgICByZW1vdmVDb250ZXh0UmVxdWlyaW5n
SGlnaFBlcmZvcm1hbmNlKGNvbnRleHQpOwotICAgIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIUVO
QUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKICAgICBpZiAoIW1fY29udGV4
dHMuc2l6ZSgpKQogICAgICAgICBDR0Rpc3BsYXlSZW1vdmVSZWNvbmZpZ3VyYXRpb25DYWxsYmFj
ayhkaXNwbGF5V2FzUmVjb25maWd1cmVkLCBudWxscHRyKTsKICNlbmRpZgogfQogCi1Ib3N0V2lu
ZG93KiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6Omhvc3RXaW5kb3dGb3JDb250ZXh0
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KSBjb25zdAotewotICAgIEFTU0VSVCht
X2NvbnRleHRXaW5kb3dNYXAuY29udGFpbnMoY29udGV4dCkpOwotICAgIHJldHVybiBtX2NvbnRl
eHRXaW5kb3dNYXAuZ2V0KGNvbnRleHQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlcjo6YWRkQ29udGV4dFJlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZShHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAgaWYg
KCFjb250ZXh0KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQVNTRVJUKG1fY29udGV4dHMu
Y29udGFpbnMoY29udGV4dCkpOwotICAgIEFTU0VSVCghbV9jb250ZXh0c1JlcXVpcmluZ0hpZ2hQ
ZXJmb3JtYW5jZS5jb250YWlucyhjb250ZXh0KSk7Ci0gICAgCi0gICAgTE9HKFdlYkdMLCAiVGhp
cyBjb250ZXh0ICglcCkgcmVxdWlyZXMgdGhlIGhpZ2gtcGVyZm9ybWFuY2UgR1BVLiIsIGNvbnRl
eHQpOwotICAgIG1fY29udGV4dHNSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UuYWRkKGNvbnRleHQp
OwotICAgIAotICAgIHVwZGF0ZUhpZ2hQZXJmb3JtYW5jZVN0YXRlKCk7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpyZW1vdmVDb250ZXh0UmVxdWlyaW5nSGlnaFBl
cmZvcm1hbmNlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQotewotICAgIGlmICgh
Y29udGV4dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2NvbnRleHRzUmVxdWlyaW5n
SGlnaFBlcmZvcm1hbmNlLmNvbnRhaW5zKGNvbnRleHQpKQotICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgTE9HKFdlYkdMLCAiVGhpcyBjb250ZXh0ICglcCkgbm8gbG9uZ2VyIHJlcXVpcmVzIHRo
ZSBoaWdoLXBlcmZvcm1hbmNlIEdQVS4iLCBjb250ZXh0KTsKLSAgICBtX2NvbnRleHRzUmVxdWly
aW5nSGlnaFBlcmZvcm1hbmNlLnJlbW92ZShjb250ZXh0KTsKLSAgICAKLSAgICB1cGRhdGVIaWdo
UGVyZm9ybWFuY2VTdGF0ZSgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFu
YWdlcjo6dXBkYXRlSGlnaFBlcmZvcm1hbmNlU3RhdGUoKQotewotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBpZiAoIWhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIGlmIChtX2NvbnRleHRzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLnNpemUoKSkgewot
ICAgICAgICAKLSAgICAgICAgaWYgKG1fZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVyLmlz
QWN0aXZlKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHTCwgIkNhbmNlbCBwZW5kaW5nIHRpbWVy
IGZvciB0dXJuaW5nIG9mZiBoaWdoLXBlcmZvcm1hbmNlIEdQVS4iKTsKLSAgICAgICAgICAgIG1f
ZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVyLnN0b3AoKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmICghbV9yZXF1ZXN0aW5nSGlnaFBlcmZvcm1hbmNlKSB7Ci0gICAgICAgICAgICBMT0co
V2ViR0wsICJSZXF1ZXN0IHRoZSBoaWdoLXBlcmZvcm1hbmNlIEdQVS4iKTsKLSAgICAgICAgICAg
IG1fcmVxdWVzdGluZ0hpZ2hQZXJmb3JtYW5jZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoYXV0
byogc2luZ2xldG9uID0gU3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygpKQot
ICAgICAgICAgICAgICAgIHNpbmdsZXRvbi0+cmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSgpOwot
ICAgICAgICB9Ci0KLSAgICB9IGVsc2UgewotICAgICAgICAvLyBEb24ndCBpbW1lZGlhdGVseSB0
dXJuIG9mZiB0aGUgaGlnaC1wZXJmb3JtYW5jZSBHUFUuIFRoZSB1c2VyIG1pZ2h0IGJlCi0gICAg
ICAgIC8vIHN3YXBwaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGFicyBvciB3aW5kb3dzLCBh
bmQgd2UgZG9uJ3Qgd2FudCB0byBjYXVzZQotICAgICAgICAvLyBjaHVybiBpZiB3ZSBjYW4gYXZv
aWQgaXQuCi0gICAgICAgIGlmICghbV9kaXNhYmxlSGlnaFBlcmZvcm1hbmNlR1BVVGltZXIuaXNB
Y3RpdmUoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdMLCAiU2V0IGEgdGltZXIgdG8gcmVsZWFz
ZSB0aGUgaGlnaC1wZXJmb3JtYW5jZSBHUFUuIik7Ci0gICAgICAgICAgICAvLyBGSVhNRTogRXhw
b3NlIHRoaXMgdmFsdWUgYXMgYSBTZXR0aW5nLCB3aGljaCB3b3VsZCByZXF1aXJlIHRoaXMgY2xh
c3MKLSAgICAgICAgICAgIC8vIHRvIHJlZmVyZW5jZSBhIGZyYW1lLCBwYWdlIG9yIGRvY3VtZW50
LgotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFNlY29uZHMgdGltZVRvS2VlcEhpZ2hQZXJmb3Jt
YW5jZUdQVUFsaXZlIHsgMTBfcyB9OwotICAgICAgICAgICAgbV9kaXNhYmxlSGlnaFBlcmZvcm1h
bmNlR1BVVGltZXIuc3RhcnRPbmVTaG90KHRpbWVUb0tlZXBIaWdoUGVyZm9ybWFuY2VHUFVBbGl2
ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTE1hbmFnZXI6OmRpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lckZpcmVkKCkKLXsK
LSAgICBpZiAobV9jb250ZXh0c1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZS5zaXplKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fcmVxdWVzdGluZ0hpZ2hQZXJmb3JtYW5jZSA9IGZhbHNlOwot
I2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoYXV0byogc2luZ2xldG9uID0gU3dpdGNoaW5nR1BV
Q2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygpKQotICAgICAgICBzaW5nbGV0b24tPnJlbGVhc2VI
aWdoUGVyZm9ybWFuY2VHUFUoKTsKLSNlbmRpZgotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlcjo6cmVjeWNsZUNvbnRleHRJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKGhh
c1Rvb01hbnlDb250ZXh0cygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyLmgKaW5kZXggM2FmOGEwNTJhZThlMmExNWQ1YzA1MTc4NGZiMDg1NDVlZTlhMWQ2
NC4uODNmNzBlYTIyYzkyMTExYjE4YzNjNGQ0YjYxOTk0Mjc0MjQwNzZlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaApAQCAtMjUsOCArMjUsNiBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAt
MzgsNTIgKzM2LDI5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IHVuc2lnbmVkIE1heENv
bnRleHRzID0gMTY7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwotY2xhc3MgSG9z
dFdpbmRvdzsKLQotdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJfdDsKLQotI2lmIEhB
VkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzTG93QW5k
SGlnaFBvd2VyR1BVcygpOwotI2VuZGlmCiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlciB7CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlcj47CiBwdWJsaWM6CiAgICAgc3RhdGljIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlciYgc2hhcmVkTWFuYWdlcigpOwogICAgIAotICAgIHZvaWQgYWRkQ29udGV4dChHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCosIEhvc3RXaW5kb3cqKTsKKyAgICB2b2lkIGFkZENvbnRleHQo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKICAgICB2b2lkIHJlbW92ZUNvbnRleHQoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqKTsKLQotICAgIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3dGb3JDb250
ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKikgY29uc3Q7Ci0gICAgCi0gICAgdm9pZCBhZGRD
b250ZXh0UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7
Ci0gICAgdm9pZCByZW1vdmVDb250ZXh0UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKik7CiAgICAgCiAgICAgdm9pZCByZWN5Y2xlQ29udGV4dElmTmVjZXNz
YXJ5KCk7CiAgICAgYm9vbCBoYXNUb29NYW55Q29udGV4dHMoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRleHRzLnNpemUoKSA+PSBNYXhDb250ZXh0czsgfQogICAgIAotICAgIHZvaWQgdXBkYXRlQWxs
Q29udGV4dHMoKTsKLQogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIHNjcmVlbkRpZENoYW5n
ZShQbGF0Zm9ybURpc3BsYXlJRCwgY29uc3QgSG9zdFdpbmRvdyopOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIGRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoQ0dEaXJlY3REaXNwbGF5SUQs
IENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncywgdm9pZCopOwogI2VuZGlmCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgdm9pZCBkaXNwbGF5V2FzUmVjb25maWd1cmVkKCk7CisjZW5kaWYKICAg
ICAKIHByaXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyKCkKLSAgICAg
ICAgOiBtX2Rpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lcigqdGhpcywgJkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlcjo6ZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVyRmlyZWQp
Ci0gICAgewotICAgIH0KLQotICAgIHZvaWQgdXBkYXRlSGlnaFBlcmZvcm1hbmNlU3RhdGUoKTsK
LSAgICB2b2lkIGRpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lckZpcmVkKCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyKCkgPSBkZWZhdWx0OwogCiAgICAgVmVjdG9yPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKj4gbV9jb250ZXh0czsKLSAgICBIYXNoTWFwPEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiwgSG9zdFdpbmRvdyo+IG1fY29udGV4dFdpbmRvd01hcDsKLSAgICBI
YXNoU2V0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4gbV9jb250ZXh0c1JlcXVpcmluZ0hpZ2hQ
ZXJmb3JtYW5jZTsKLSAgICAKLSAgICBUaW1lciBtX2Rpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVU
aW1lcjsKLSAgICBib29sIG1fcmVxdWVzdGluZ0hpZ2hQZXJmb3JtYW5jZSB7IGZhbHNlIH07CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZmU3MjBlOTM1ZWU5
ZjMyYWNjN2Q4ZDhlY2I1ZjUzMWFjYjFkOWYyMS4uMWY5NTFiN2U5NGVmN2FlNDQwOGY0NWIxYmIx
NTZhMGQzNTdhNGFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzIw
LDcgKzMyMCw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NoZWNrc01h
Yy5oIgogI2luY2x1ZGUgIk5TU2Nyb2xsZXJJbXBEZXRhaWxzLmgiCiAjaW5jbHVkZSAiU2Nyb2xs
YmFyVGhlbWVNYWMuaCIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmgKaW5kZXggNTU1NmNiZDQ0ZjBmNTQ3
Y2Q2NWQzZGU0MWU1MjA2NWY4OTNkM2FhZS4uYWM2MjE5M2FjZmQ1YzJiNjQyYTU3NWFmMzQ3ZjVl
NTJlMDJmZTY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQ
ZXJmb3JtYW5jZUdQVU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgUExBVEZP
Uk0oTUFDKQogCiAjaW5jbHVkZSA8T3BlbkdML0NHTFR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9UaW1lci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKQEAgLTQ0LDEzICs0NSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dmVQcm9jZXNzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKFdlYlByb2Nlc3NQcm94eSopOwogCiBw
cml2YXRlOgotICAgIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIoKSA9IGRlZmF1bHQ7CisgICAg
SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcigpOwogICAgIH5IaWdoUGVyZm9ybWFuY2VHUFVNYW5h
Z2VyKCk7Ci0KICAgICB2b2lkIHVwZGF0ZVN0YXRlKCk7CiAKICAgICBIYXNoU2V0PFdlYlByb2Nl
c3NQcm94eSo+IG1fcHJvY2Vzc2VzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlOwogICAgIENHTFBp
eGVsRm9ybWF0T2JqIG1fcGl4ZWxGb3JtYXRPYmogeyBudWxscHRyIH07CisgICAgV2ViQ29yZTo6
VGltZXIgbV91cGRhdGVTdGF0ZVRpbWVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5tbQppbmRleCBh
OTZmYzNkMTEzNzk4ZTc5YWZjMGZkYjYyNjVmZGRhZmQwM2QwYWUwLi41OWRmZjhiMjNjODBjMDI2
NWJlZTUxOWY4NDYwNzM4ODRmNjE1Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5tbQpAQCAtMjksNyArMjks
NyBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NDaGVja3NNYWMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL09wZW5HTFNvZnRM
aW5rQ29jb2EuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw2ICs0NCwxMyBAQCBIaWdo
UGVyZm9ybWFuY2VHUFVNYW5hZ2VyJiBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpzaW5nbGV0
b24oKQogICAgIHJldHVybiBzaGFyZWRNYW5hZ2VyOwogfQogCitIaWdoUGVyZm9ybWFuY2VHUFVN
YW5hZ2VyOjpIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyKCkKKyAgICA6IG1fdXBkYXRlU3RhdGVU
aW1lcigqdGhpcywgJkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnVwZGF0ZVN0YXRlKQorewor
fQorCitIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjp+SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdl
cigpID0gZGVmYXVsdDsKKwogdm9pZCBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjphZGRQcm9j
ZXNzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKIHsK
ICAgICBpZiAoIVdlYkNvcmU6Omhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKSkKQEAgLTY1LDcgKzcy
LDggQEAgdm9pZCBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpyZW1vdmVQcm9jZXNzUmVxdWly
aW5nSGlnaFBlcmZvcm1hbmNlKFdlYlByb2Nlc3MKIAogICAgIGlmIChtX3Byb2Nlc3Nlc1JlcXVp
cmluZ0hpZ2hQZXJmb3JtYW5jZS5yZW1vdmUocHJvY2VzcykpIHsKICAgICAgICAgTE9HKFdlYkdM
LCAiSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6cmVtb3ZlUHJvY2Vzc1JlcXVpcmluZ0hpZ2hQ
ZXJmb3JtYW5jZSgpIC0gcmVtb3ZpbmcgcHJvY2VzcyAlcCIsIHByb2Nlc3MpOwotICAgICAgICB1
cGRhdGVTdGF0ZSgpOworICAgICAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB0aW1lVG9LZWVwSGln
aFBlcmZvcm1hbmNlR1BVQWxpdmUgeyAxMF9zIH07CisgICAgICAgIG1fdXBkYXRlU3RhdGVUaW1l
ci5zdGFydE9uZVNob3QodGltZVRvS2VlcEhpZ2hQZXJmb3JtYW5jZUdQVUFsaXZlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzQsNiArODIsOCBAQCB2b2lkIEhpZ2hQZXJmb3JtYW5j
ZUdQVU1hbmFnZXI6OnJlbW92ZVByb2Nlc3NSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoV2ViUHJv
Y2VzcwogCiB2b2lkIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnVwZGF0ZVN0YXRlKCkKIHsK
KyAgICBpZiAobV91cGRhdGVTdGF0ZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdXBkYXRl
U3RhdGVUaW1lci5zdG9wKCk7CiAgICAgaWYgKG1fcHJvY2Vzc2VzUmVxdWlyaW5nSGlnaFBlcmZv
cm1hbmNlLnNpemUoKSkgewogICAgICAgICBpZiAoIW1fcGl4ZWxGb3JtYXRPYmopIHsKICAgICAg
ICAgICAgIExPRyhXZWJHTCwgIkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIgLSB0dXJuaW5nIG9u
IGhpZ2gtcGVyZm9ybWFuY2UgR1BVLiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVD
bGllbnQuY3BwCmluZGV4IDQ0YzZiNDMyZTdkNWM1ZGFhNzhkOGQwMmFiNzdjNzkwYzE0YTkzNGEu
LmMxYzJhMmViZGM3Nzg3N2UxN2Y3YzE5MjUzMzU5Mzg1ZGFmNzg0N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BV
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAKQEAgLTQzLDEyICs0MywxOSBAQCBXZWJTd2l0
Y2hpbmdHUFVDbGllbnQmIFdlYlN3aXRjaGluZ0dQVUNsaWVudDo6c2luZ2xldG9uKCkKIAogdm9p
ZCBXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlcXVlc3RIaWdoUGVyZm9ybWFuY2VHUFUoKQogewor
ICAgIG1fcmVxdWVzdHMrKzsKKyAgICBpZiAobV9yZXF1ZXN0cyAhPSAxKQorICAgICAgICByZXR1
cm47CiAgICAgTE9HKFdlYkdMLCAiV2ViU3dpdGNoaW5nR1BVQ2xpZW50OjpyZXF1ZXN0SGlnaFBl
cmZvcm1hbmNlR1BVKCkgZnJvbSBXZWJQcm9jZXNzIik7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpSZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCksIDApOwogfQogCiB2b2lkIFdlYlN3
aXRjaGluZ0dQVUNsaWVudDo6cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpCiB7CisgICAgQVNT
RVJUKG1fcmVxdWVzdHMpOworICAgIG1fcmVxdWVzdHMtLTsKKyAgICBpZiAobV9yZXF1ZXN0cykK
KyAgICAgICAgcmV0dXJuOwogICAgIExPRyhXZWJHTCwgIldlYlN3aXRjaGluZ0dQVUNsaWVudDo6
cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpIGZyb20gV2ViUHJvY2VzcyIpOwogICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6UmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpLCAwKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5oCmluZGV4IDIwZWIyZWUyNTcxZmVi
YTJkYTQ4NGYyMTg3Nzc4YjEyOTQwYWU1MzMuLmJiODFkOGE2MDhhYjFmZGE0NWYwN2VhN2IzOGE2
MzQ1MTllNzg0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuaApAQCAt
MzIsOSArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJTd2l0Y2hpbmdHUFVD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6U3dpdGNoaW5nR1BVQ2xpZW50IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgV2ViU3dpdGNoaW5nR1BVQ2xpZW50JiBzaW5nbGV0b24oKTsKLSAgICAKK3ByaXZh
dGU6CiAgICAgdm9pZCByZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZWxlYXNlSGlnaFBlcmZvcm1hbmNlR1BVKCkgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQg
bV9yZXF1ZXN0cyB7IDAgfTsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418171</attachid>
            <date>2021-01-22 12:52:51 -0800</date>
            <delta_ts>2021-01-26 00:02:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220843-20210122225248.patch</filename>
            <type>text/plain</type>
            <size>59478</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTBlMTg1NzBmN2QyNTI1
MWZiMTY2MzllOGI1YTdjM2Q1OTU4MDRmMS4uMzc5YjNmMDQwODZjZDliNzFmODkzZDZiMDljNWFj
MmJiNzdhY2Y3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTAxLTIyICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgcG93ZXIg
cHJlZmVyZW5jZSBhbmQgZGlzY3JldGUvaW50ZXJuYWwgZ3B1IHNlbGVjdGlvbiBpbXBsZW1lbnRl
ZCBpbmNvcnJlY3RseSB3aXRoIEFOR0xFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjA4NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgQU5HTEUgZXh0ZW5zaW9uIEVHTF9BTkdMRV9wb3dlcl9wcmVm
ZXJlbmNlIHRvIHNpZ25hbCB0byBBTkdMRSB0aGF0IHRoZSB1bmRlcmx5aW5nCisgICAgICAgIENH
TCBjb250ZXh0IHNob3VsZCBiZSB1cGRhdGVkIGFzIGEgcmVzcG9uc2UgdG8gZGlzcGxheSByZWNv
bmZpZ3VyYXRpb24gc2lnbmFsLgorICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCBBTkdMRSBzdGF0
ZSBzdGF5cyBjb25zaXN0ZW50IHdpdGggdGhlIGFjdHVhbCBDR0wgY29udGV4dCBiZWhhdmlvciwg
YXMKKyAgICAgICAgd2UgZG9uJ3QgY2hhbmdlIHRoZSBjb250ZXh0IGJlaGluZCBBTkdMRSdzIGJh
Y2suCisKKyAgICAgICAgUmVtb3ZlIHRoZSBmZWF0dXJlIHdoZXJlIHRoZSBjb250ZXh0IEdQVSBp
cyBzZWxlY3RlZCBiYXNlZCBvbiB0aGUgZGlzcGxheSB0aGUgd2luZG93IGlzCisgICAgICAgIG9u
LiBUaGlzIGNhbm5vdCB3b3JrIHdpdGggdGhlIGxvZ2ljIG9mICJwb3dlclByZWZlcmVuY2UgPSAi
aGlnaC1wZXJmb3JtYW5jZSIgZ29lcyB0bworICAgICAgICBkaXNjcmV0ZSBHUFUiLiBBbHNvLCB0
aGlzIGNhbm5vdCB3b3JrIHdpdGggQU5HTEUgYXQgYWxsLCBzaW5jZSBhbGwgY29udGV4dHMgYXJl
IGJhY2tlZAorICAgICAgICBieSBhIHNpbmdsZSBwbGF0Zm9ybSBjb250ZXh0LiBUaHVzIGFsbCBj
b250ZXh0cyB3aWxsIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIEdQVS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgZHVlIHRvIHRoZSB0ZXN0IHJ1bm5lciBtaXNzaW5nIGZlYXR1cmVzLiBUaGUgYnVn
IGJsb2NrZXJzIHRyYWNrIHRoZSB0ZXN0aW5nLgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21h
a2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0hpZ2hQZXJmb3JtYW5jZUNv
bnRleHQpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250
ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZGlzcGxheVdhc1JlY29uZmlndXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjphdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6
Omhhc011eENhcGFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6aGFzTG93QW5kSGlnaFBvd2Vy
R1BVcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFj
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1Njb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oLgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6U2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0Ojp+U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0OjpvcGVyYXRv
cj0pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6
YWNxdWlyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNs
aWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnJlbW92ZUNv
bnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisK
IDIwMjEtMDEtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IFZhbGlkYXRlIEl0ZW1IYW5kbGVzIHdoZW4gZGVjb2RpbmcgdGhlbSBpbiBHUFVQcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDk3ODkwZWI1Y2NhYTEyODhhMWRjNjVjODc1OWQ1ZGY1YmNhMDlhMDkuLjM1MmIx
ZjdlZDhkMTk4ZmQwYjI5ZTQ3ZWZhN2E1YTIzOTNmNzliYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjMgQEAKKzIwMjEtMDEtMjIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWJHTCBwb3dlciBwcmVmZXJlbmNlIGFuZCBkaXNjcmV0ZS9pbnRlcm5hbCBn
cHUgc2VsZWN0aW9uIGltcGxlbWVudGVkIGluY29ycmVjdGx5IHdpdGggQU5HTEUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDg0MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIGhpZ2gtcGVy
Zm9ybWFuY2UgR1BVIHNodXRkb3duIHRpbWVyIGZyb20gaW5kaXZpZHVhbCB3ZWIgcHJvY2Vzc2Vz
IHRvIHRoZSBtYWluIGNsYXNzCisgICAgICAgIGluIHRoZSB1aSBwcm9jZXNzLiBUaGlzIHNpbXBs
aWZpZXMgdGhlIGltcGxlbWVudGF0aW9uIGFuZCByZWR1Y2VzIHRoZSBudW1iZXIgb2YgdGltZXJz
LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpIaWdoUGVyZm9ybWFu
Y2VHUFVNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdl
cjo6cmVtb3ZlUHJvY2Vzc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZSk6CisgICAgICAgIChXZWJL
aXQ6OkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlcXVlc3RIaWdoUGVyZm9y
bWFuY2VHUFUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlbGVh
c2VIaWdoUGVyZm9ybWFuY2VHUFUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5oOgorCiAyMDIxLTAxLTIxICBQZW5nIExpdSAg
PHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgUGlQIHZpZGVvIHN1YnRpdGxlcyBzdG9w
IHVwZGF0aW5nIHdoZW4gU2FmYXJpIGlzIGJhY2tncm91bmRlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQppbmRleCBhYzcwMTU0OTk3OTllNGZiNGVlMmEwZGUwMWI0MzUxMmIwOWExZjhlLi5jYWQy
NjQ0OWM3NGM4NWNhY2I5NjViMzljOGZiNzUyOTAxZmNhNmYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtMzQwLDYgKzM0MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0Zsb2F0U2l6ZU1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0NoZWNrc01hYy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9JbnRQb2ludE1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggM2JlMTc1
OGNkODc1NTM5YWM3ZDJjNmRhYTA3OGYwY2IzMDJjODcxMy4uZTg3ZDRkZDA3OWE1NWY2OWQyMTcz
YmRmMTEyYzJlZjlmOWE2ZWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MTgsNiAr
NDE4LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRmxvYXRTaXplTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01h
Yy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSW1hZ2VNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRQb2ludE1hYy5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM4MzgwZTFiNTZhODg1OTJmMzk0YjdmNjM4ZTM4YWUzY2Y1ODk0N2MuLmJmNjViZGEzOTkx
ZTYwZGQxOWY2ZmRlNzg5YWYyODBkNGVhZjYwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIyNTksNiArMjI1OSw5IEBACiAJ
CTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5
MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JC
MzRBMTcyNTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2
MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi87
IH07CiAJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJh
Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTdCQjY4MEIyMjVCQTBENEEwMDJCODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2
ODBCMDI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCQjY4
MEI2MjVCQTFBRTIwMDJCODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2ODBCNDI1
QkExQUUxMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyB9
OworCQk3QkI2ODBCQTI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjY4MEI4MjVCQTFC
RTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkwNkZCQjRGMEYyQyAvKiBK
U1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpTU1ZHR3JhcGhpY3NFbGVt
ZW50LmggKi87IH07CiAJCTdDMDI5QzZFMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAyOUM2RDI0
OTNDOEY4MDAyNjgyMDQgLyogQ29sb3JUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMTg0M0ZFMUM4QjcyODMwMDJFQjk3MyAvKiBBdXRv
ZmlsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mx
ODQzRkMxQzhCNzI4MzAwMkVCOTczIC8qIEF1dG9maWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjk0LDYgKzEwMjk3LDEwIEBACiAJCTdC
QjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDUyNTM3
NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250
ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JC
NjgwQjAyNUJBMEQ0QTAwMkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNl
R1BVUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkI2ODBCNDI1QkEx
QUUxMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQjY4MEI3MjVCQTFCRTMwMDJCODcz
OCAvKiBHcmFwaGljc0NoZWNrc01hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCQjY4MEI4MjVCQTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1QjI1NzYzQjhEMDBFODVEOTggLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzAxMUYzRDI0RkFEMzYwMDA1QkVGMTAgLyogU2V0dGluZ3MuY3BwLmVyYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBT
ZXR0aW5ncy5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAxMUYzRTI0
RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI2NDk2LDExICsyNjUwMywxNSBAQAogCQkJCUIyNzUzNTREMEIwNTM4MTQwMDJD
RTY0RiAvKiBGbG9hdFNpemVNYWMubW0gKi8sCiAJCQkJQjJBRkZDNzUwRDAwQTVDMTAwMzAwNzRE
IC8qIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwICovLAogCQkJCUIyQUZGQzc2MEQwMEE1QzEw
MDMwMDc0RCAvKiBGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggKi8sCisJCQkJN0JCNjgwQjcyNUJB
MUJFMzAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmNwcCAqLywKKwkJCQk3QkI2ODBCODI1
QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLywKIAkJCQlCMjc1MzU4RDBC
MDUzQTY2MDAyQ0U2NEYgLyogSWNvbk1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RTBCMDUzODE0MDAy
Q0U2NEYgLyogSW1hZ2VNYWMubW0gKi8sCiAJCQkJQjI3NTM1NEYwQjA1MzgxNDAwMkNFNjRGIC8q
IEludFBvaW50TWFjLm1tICovLAogCQkJCUIyNzUzNTUxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRT
aXplTWFjLm1tICovLAogCQkJCTJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAvKiBQREZEb2N1bWVu
dEltYWdlTWFjLm1tICovLAorCQkJCTdCQjY4MEI0MjVCQTFBRTEwMDJCODczOCAvKiBTY29wZWRI
aWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8sCisJCQkJN0JCNjgwQjAyNUJBMEQ0QTAwMkI4
NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLywKIAkJCQkxNjNFODhG
NTExOEEzOUQyMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgKi8sCiAJCQkJ
QzExQTlFRDIyMTQwNTc4QjAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi8sCiAJ
CQkJQzExQTlFQ0QyMTQwM0E1QzAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5oICovLApA
QCAtMzIyMzMsNiArMzIyNDQsNyBAQAogCQkJCUJDNTNDNUY1MERBNTZCOTIwMDIxRUI1RCAvKiBH
cmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjQwRDAwQkYyMjAwNzFCNzgyIC8q
IEdyYWRpZW50QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0ODFGMDQxNDZCNUM2
QjAwQUE3ODM0IC8qIEdyYWRpZW50SW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCQjY4MEJB
MjVCQTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjJBMDE1QTkwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM0OTA3RTQxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENH
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTNERTg3MDIzQTk2OTczMDA4RkM0N0IgLyogR3JhcGhp
Y3NDb250ZXh0R0wuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ0NTUsNiArMzQ0NjcsOCBAQAogCQkJ
CTQ5RTkxMUNCMEVGODZENDcwMDlEMENBRiAvKiBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNURGRThGNTcwRDE2NDc3QzAwNzZFOTM3IC8qIFNjaGVkdWxlZEFj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJEMEJGOTMxMkE0MkJGNTAwNzJGRDQzIC8qIFNj
b3BlZEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCQjY4MEI2MjVCQTFBRTIwMDJC
ODczOCAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk3QkI2ODBCMjI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BV
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQzAxQkUwQzI3NERBQzAwOUY0RUM5IC8q
IFNjcmVlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzFFMUQyMzYyMDNERjE1NDAwNTg0NjY1IC8q
IFNjcmVlblByb3BlcnRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NEQ4MkMxMTFEMzQ3NDgw
MDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAppbmRleCA1NzhlMDIxODBjNDZmM2RiYzRmZmZkMGFmMGMzNTNmMzk0ODIwZGJl
Li5lNzdkODBhODUyZmI1YWM1ZGQ3MWNlM2Y5N2NjZjY2NjQ2MWNlNTZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcApAQCAtNjQyLDcgKzY0Miw3IEBAIHByaXZhdGU6CiAKIHN0YXRpYyBib29sIGlzSGlnaFBl
cmZvcm1hbmNlQ29udGV4dChjb25zdCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+JiBjb250ZXh0
KQogewotICAgIHJldHVybiBjb250ZXh0LT5wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24o
KSA9PSBXZWJHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOworICAgIHJldHVybiBj
b250ZXh0LT5jb250ZXh0QXR0cmlidXRlcygpLnBvd2VyUHJlZmVyZW5jZSA9PSBXZWJHTFBvd2Vy
UHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKENh
bnZhc0Jhc2UmIGNhbnZhcywgV2ViR0xDb250ZXh0QXR0cmlidXRlcyYgYXR0cmlidXRlcywgV2Vi
R0xWZXJzaW9uIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggYjcxMGU3MTVhNjZkY2Fj
NTY3NDJkYjZiYmVhNzQxZDZmODYzNDJiMy4uNGE1NWY5ZGExYzViNTFmNmMyNGEwYjBlNWM1YzZm
YmIzZjU0OWM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtNjcsMTAgKzY3LDYgQEAKICNp
bmNsdWRlICJEYXRlVGltZUNob29zZXIuaCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoV0VCR0wpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
LmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwpAQCAtNTQ4LDEwICs1NDQsNiBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlk
Q2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3BhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJ
RCwgbm9taW5hbEZyYW1lSW50ZXJ2YWwpOwotCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
V0VCR0wpCi0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2Vy
KCkuc2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCwgdGhpcyk7Ci0jZW5kaWYKIH0KIAogYm9vbCBD
aHJvbWU6OnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4
IGEzMGNlZTVmYWI2NDc5MmFjYjhjNDVlMWVlNTBlMDBjZDIyYzJkZjQuLjJhZDE0N2Y2ZWFiOTRj
ZjNiZGYwM2JjNmZkYzIxMTdkNGFlMDA1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMTI2Myw4ICsxMjYzLDYg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wp
ID0gMDsKIAotICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93
ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgPSAwOwotCiAgICAgdmlydHVhbCBi
b29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCA9IDA7CiAKICAgICAvLyBTeW50aGVzaXplcyBh
biBPcGVuR0wgZXJyb3Igd2hpY2ggd2lsbCBiZSByZXR1cm5lZCBmcm9tIGEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAppbmRleCA1NTJkODUzOWI2OTUwMGNmMTE2OTY4
MGQ0YjVjNjI4NTg1OGI3NzM3Li5lNTBmOGZiNGM1YzM2NzA0NjFjODEzNDVlNDQzNzNjNmE0ZGEx
MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC00OSwx
MiArNDksNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRDb250
ZXh0VmlzaWJpbGl0eShib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLUdyYXBoaWNz
Q29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Ojpwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdAotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQogYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFdF
QkdMMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCmluZGV4IDI0NzFkNGUy
NWM5YWEyMDBlYzc0M2IxZmUwYzY0NjhiMGM5YTUwODMuLjI4OGMyZWE4YWQzOWU4OWI2OTY5ZmQw
YjIxNmI4YjY3YjBiZWRhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
aApAQCAtNjEsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IGZpbmFsOwogICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZp
bmFsOwogICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7Ci0gICAgR3Jh
cGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0
aW9uKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKICAgICBib29sIGxheWVy
Q29tcG9zaXRlZCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW0KaW5kZXggNjU5ZmZmZjEyODRjMDJhMjIzMjIxMjA2ZWI4ZjE2ZjJhODEyYjVh
Yy4uMzRhZmM4MjBiMmRiODI4OGRjZmUxNzFkODY0ODM2ODcxMTY5ODJmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgpAQCAtMzIsOSArMzIsNyBAQAog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgogI2ltcG9ydCAiR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgogI2ltcG9ydCAi
TG9nZ2luZy5oIgotI2ltcG9ydCAiT3BlbkdMU29mdExpbmtDb2NvYS5oIgogI2ltcG9ydCAiUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkLmgiCiAjaW1w
b3J0ICJXZWJHTExheWVyLmgiCkBAIC00MiwxMSArNDAsNiBAQAogI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBM
QVRGT1JNKE1BQykKLSNpbXBvcnQgIlNjcmVlblByb3BlcnRpZXMuaCIKLSNpbXBvcnQgPE9wZW5H
TC9DR0xSZW5kZXJlcnMuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQ1YuaCIKICNlbmRpZgpAQCAt
MTUxLDE3ICsxNDQsMTcgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEcKICAgICBpZiAoIWNvbnRl
eHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRl
eHQuZ2V0KCksIGhvc3RXaW5kb3cpOworICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5nZXQoKSk7CiAKICAgICByZXR1
cm4gY29udGV4dDsKIH0KIAogUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFy
ZWRDb250ZXh0KQogewotICAgIGF1dG8gaG9zdFdpbmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhvc3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRD
b250ZXh0KTsKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywg
JnNoYXJlZENvbnRleHQsIG51bGxwdHIpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5wdHIoKSwgaG9zdFdp
bmRvdyk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTChzaGFyZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIG51bGxwdHIsICZzaGFy
ZWRDb250ZXh0LCBudWxscHRyKSk7CisKKyAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRleHQucHRyKCkpOwogCiAgICAgcmV0
dXJuIGNvbnRleHQ7CiB9CkBAIC0xNzEsNzIgKzE2NCwyNSBAQCBSZWY8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGNv
bnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0
cnMsIG51bGxwdHIsIG51bGxwdHIsIHN3YXBDaGFpbikpOwogfQogCi0jaWYgUExBVEZPUk0oTUFD
KSAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGQgYmUganVzdCBlbmFibGVkIC0gc2VlIDxy
ZGFyOi8vNTMwNjI3OTQ+LgotCi1zdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29u
dGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiwgSU9S
ZWdpc3RyeUdQVUlEIHByZWZlcnJlZEdQVUlEKQotewotICAgIC8vIFdoZW4gdGhlIFdlYlByb2Nl
c3MgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIFdpbmRvd1NlcnZlciwgdGhlcmUgaXMgbm8g
d2F5IGZvciBPcGVuR0wgdG8gdGVsbCB3aGljaCBHUFUgaXMgY29ubmVjdGVkIHRvIGEgZGlzcGxh
eS4KLSAgICAvLyBPbiAxMC4xMyssIGZpbmQgdGhlIHZpcnR1YWwgc2NyZWVuIHRoYXQgY29ycmVz
cG9uZHMgdG8gdGhlIHByZWZlcnJlZCBHUFUgYnkgaXRzIHJlZ2lzdHJ5SUQuCi0gICAgLy8gQ0dM
U2V0VmlydHVhbFNjcmVlbiBjYW4gdGhlbiBiZSB1c2VkIHRvIHRlbGwgT3BlbkdMIHdoaWNoIEdQ
VSBpdCBzaG91bGQgYmUgdXNpbmcuCi0KLSAgICBpZiAoIWNvbnRleHRPYmogfHwgIXByZWZlcnJl
ZEdQVUlEKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHTGludCB2aXJ0dWFsU2NyZWVuQ291bnQg
PSAwOwotICAgIENHTEVycm9yIGVycm9yID0gQ0dMRGVzY3JpYmVQaXhlbEZvcm1hdChwaXhlbEZv
cm1hdE9iaiwgMCwga0NHTFBGQVZpcnR1YWxTY3JlZW5Db3VudCwgJnZpcnR1YWxTY3JlZW5Db3Vu
dCk7Ci0gICAgQVNTRVJUKGVycm9yID09IGtDR0xOb0Vycm9yKTsKLQotICAgIEdMaW50IGZpcnN0
QWNjZWxlcmF0ZWRTY3JlZW4gPSAtMTsKLQotICAgIGZvciAoR0xpbnQgdmlydHVhbFNjcmVlbiA9
IDA7IHZpcnR1YWxTY3JlZW4gPCB2aXJ0dWFsU2NyZWVuQ291bnQ7ICsrdmlydHVhbFNjcmVlbikg
ewotICAgICAgICBHTGludCBkaXNwbGF5TWFzayA9IDA7Ci0gICAgICAgIGVycm9yID0gQ0dMRGVz
Y3JpYmVQaXhlbEZvcm1hdChwaXhlbEZvcm1hdE9iaiwgdmlydHVhbFNjcmVlbiwga0NHTFBGQURp
c3BsYXlNYXNrLCAmZGlzcGxheU1hc2spOwotICAgICAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5v
RXJyb3IpOwotCi0gICAgICAgIGF1dG8gZ3B1SUQgPSBncHVJREZvckRpc3BsYXlNYXNrKGRpc3Bs
YXlNYXNrKTsKLQotICAgICAgICBpZiAoZ3B1SUQgPT0gcHJlZmVycmVkR1BVSUQpIHsKLSAgICAg
ICAgICAgIGVycm9yID0gQ0dMU2V0VmlydHVhbFNjcmVlbihjb250ZXh0T2JqLCB2aXJ0dWFsU2Ny
ZWVuKTsKLSAgICAgICAgICAgIEFTU0VSVChlcnJvciA9PSBrQ0dMTm9FcnJvcik7Ci0gICAgICAg
ICAgICBMT0coV2ViR0wsICJDb250ZXh0ICglcCkgc2V0IHRvIEdQVSB3aXRoIElEOiAoJWxsZCku
IiwgY29udGV4dE9iaiwgZ3B1SUQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKGZpcnN0QWNjZWxlcmF0ZWRTY3JlZW4gPCAwKSB7Ci0gICAgICAgICAgICBH
TGludCBpc0FjY2VsZXJhdGVkID0gMDsKLSAgICAgICAgICAgIGVycm9yID0gQ0dMRGVzY3JpYmVQ
aXhlbEZvcm1hdChwaXhlbEZvcm1hdE9iaiwgdmlydHVhbFNjcmVlbiwga0NHTFBGQUFjY2VsZXJh
dGVkLCAmaXNBY2NlbGVyYXRlZCk7Ci0gICAgICAgICAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5v
RXJyb3IpOwotICAgICAgICAgICAgaWYgKGlzQWNjZWxlcmF0ZWQpCi0gICAgICAgICAgICAgICAg
Zmlyc3RBY2NlbGVyYXRlZFNjcmVlbiA9IHZpcnR1YWxTY3JlZW47Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICAvLyBObyByZWdpc3RyeUlEIG1hdGNoIGZvdW5kOyBzZXQgdG8gZmlyc3QgaGFyZHdh
cmUtYWNjZWxlcmF0ZWQgdmlydHVhbCBzY3JlZW4uCi0gICAgaWYgKGZpcnN0QWNjZWxlcmF0ZWRT
Y3JlZW4gPj0gMCkgewotICAgICAgICBlcnJvciA9IENHTFNldFZpcnR1YWxTY3JlZW4oY29udGV4
dE9iaiwgZmlyc3RBY2NlbGVyYXRlZFNjcmVlbik7Ci0gICAgICAgIEFTU0VSVChlcnJvciA9PSBr
Q0dMTm9FcnJvcik7Ci0gICAgICAgIExPRyhXZWJHTCwgIlJlZ2lzdHJ5SUQgKCVsbGQpIG5vdCBt
YXRjaGVkOyBDb250ZXh0ICglcCkgc2V0IHRvIHZpcnR1YWwgc2NyZWVuICglZCkuIiwgcHJlZmVy
cmVkR1BVSUQsIGNvbnRleHRPYmosIGZpcnN0QWNjZWxlcmF0ZWRTY3JlZW4pOwotICAgIH0KLX0K
LQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLQotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENv
bnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2FwQ2hhaW4pCitH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiwgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIHNoYXJlZENvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
KiBzd2FwQ2hhaW4pCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgRGVzdGluYXRpb246
Ok9mZnNjcmVlbiwgc2hhcmVkQ29udGV4dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0gYXR0cnMu
d2ViR0xWZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJHTDI7CiAK
LSNpZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCi0gICAgbV9wb3dlclByZWZlcmVuY2VV
c2VkRm9yQ3JlYXRpb24gPSAoaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpICYmIGF0dHJzLnBvd2Vy
UHJlZmVyZW5jZSA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZv
cm1hbmNlKSA/IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFu
Y2UgOiBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKLSNlbHNlCi0g
ICAgbV9wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24gPSBHcmFwaGljc0NvbnRleHRHTFBv
d2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKLSNlbmRpZgotCiAgICAgbV9kaXNwbGF5T2JqID0gSW5p
dGlhbGl6ZUVHTERpc3BsYXkoYXR0cnMpOwogICAgIGlmIChtX2Rpc3BsYXlPYmogPT0gRUdMX05P
X0RJU1BMQVkpCiAgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgc3VwcG9ydHNQb3dlclByZWZl
cmVuY2UgPSBmYWxzZTsKKyNpZiBQTEFURk9STShNQUMpCiAgICAgY29uc3QgY2hhciAqZGlzcGxh
eUV4dGVuc2lvbnMgPSBFR0xfUXVlcnlTdHJpbmcobV9kaXNwbGF5T2JqLCBFR0xfRVhURU5TSU9O
Uyk7Ci0gICAgTE9HKFdlYkdMLCAiRXh0ZW5zaW9uczogJXMiLCBkaXNwbGF5RXh0ZW5zaW9ucyk7
CisgICAgbV9zdXBwb3J0c1Bvd2VyUHJlZmVyZW5jZSA9IHN0cnN0cihkaXNwbGF5RXh0ZW5zaW9u
cywgIkVHTF9BTkdMRV9wb3dlcl9wcmVmZXJlbmNlIik7CisgICAgc3VwcG9ydHNQb3dlclByZWZl
cmVuY2UgPSBtX3N1cHBvcnRzUG93ZXJQcmVmZXJlbmNlOworI2VuZGlmCisgICAgaWYgKCFzdXBw
b3J0c1Bvd2VyUHJlZmVyZW5jZSAmJiBhdHRycy5wb3dlclByZWZlcmVuY2UgPT0gR3JhcGhpY3ND
b250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkgeworICAgICAgICBhdHRy
cy5wb3dlclByZWZlcmVuY2UgPSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVm
YXVsdDsKKyAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOworICAgIH0KIAogICAg
IEVHTGludCBjb25maWdBdHRyaWJ1dGVzW10gPSB7CiAgICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZ
UEUsIEVHTF9PUEVOR0xfRVMyX0JJVCwKQEAgLTI5MCwxMiArMjM2LDYgQEAgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHQKICAgICBlZ2xDb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX0NPTlRFWFRf
QklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU0pOwogICAgIGVnbENvbnRleHRBdHRyaWJ1
dGVzLmFwcGVuZChFR0xfRkFMU0UpOwogCi0gICAgaWYgKHN0cnN0cihkaXNwbGF5RXh0ZW5zaW9u
cywgIkVHTF9BTkdMRV9wb3dlcl9wcmVmZXJlbmNlIikpIHsKLSAgICAgICAgZWdsQ29udGV4dEF0
dHJpYnV0ZXMuYXBwZW5kKEVHTF9QT1dFUl9QUkVGRVJFTkNFX0FOR0xFKTsKLSAgICAgICAgLy8g
RUdMX0xPV19QT1dFUl9BTkdMRSBpcyB0aGUgZGVmYXVsdC4gQ2hhbmdlIHRvCi0gICAgICAgIC8v
IEVHTF9ISUdIX1BPV0VSX0FOR0xFIGlmIGRlc2lyZWQuCi0gICAgICAgIGVnbENvbnRleHRBdHRy
aWJ1dGVzLmFwcGVuZChFR0xfTE9XX1BPV0VSX0FOR0xFKTsKLSAgICB9CiAgICAgZWdsQ29udGV4
dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9OT05FKTsKIAogICAgIG1fY29udGV4dE9iaiA9IEVHTF9D
cmVhdGVDb250ZXh0KG1fZGlzcGxheU9iaiwgbV9jb25maWdPYmosIHNoYXJlZENvbnRleHQgPyBz
dGF0aWNfY2FzdDxFR0xDb250ZXh0PihzaGFyZWRDb250ZXh0LT5tX2NvbnRleHRPYmopIDogRUdM
X05PX0NPTlRFWFQsIGVnbENvbnRleHRBdHRyaWJ1dGVzLmRhdGEoKSk7CkBAIC0zMzIsMjEgKzI3
Miw2IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAgICAgIH0KICAgICAgICAgZXh0ZW5z
aW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7CiAgICAgfQotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICAvLyBGSVhNRTogSXQncyB1bmNsZWFyIGlmIE1BQ0NBVEFMWVNUIHNob3VsZCB0YWtlIHRo
ZXNlIHN0ZXBzIGFzIHdlbGwsIGJ1dCB0aGF0Ci0gICAgLy8gd291bGQgcmVxdWlyZSB0aGUgUGxh
dGZvcm1TY3JlZW5NYWMgY29kZSB0byBiZSBleHBvc2VkIHRvIENhdGFseXN0IHRvby4KLSAgICBF
R0xEZXZpY2VFWFQgZGV2aWNlID0gbnVsbHB0cjsKLSAgICBFR0xfUXVlcnlEaXNwbGF5QXR0cmli
RVhUKG1fZGlzcGxheU9iaiwgRUdMX0RFVklDRV9FWFQsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0
cmliKj4oJmRldmljZSkpOwotICAgIENHTENvbnRleHRPYmogY2dsQ29udGV4dCA9IG51bGxwdHI7
Ci0gICAgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXQgPSBudWxscHRyOwotICAgIEVHTF9R
dWVyeURldmljZUF0dHJpYkVYVChkZXZpY2UsIEVHTF9DR0xfQ09OVEVYVF9BTkdMRSwgcmVpbnRl
cnByZXRfY2FzdDxFR0xBdHRyaWIqPigmY2dsQ29udGV4dCkpOwotICAgIEVHTF9RdWVyeURldmlj
ZUF0dHJpYkVYVChkZXZpY2UsIEVHTF9DR0xfUElYRUxfRk9STUFUX0FOR0xFLCByZWludGVycHJl
dF9jYXN0PEVHTEF0dHJpYio+KCZwaXhlbEZvcm1hdCkpOwotICAgIGF1dG8gZ3B1SUQgPSAoaG9z
dFdpbmRvdyAmJiBob3N0V2luZG93LT5kaXNwbGF5SUQoKSkgPyBncHVJREZvckRpc3BsYXkoaG9z
dFdpbmRvdy0+ZGlzcGxheUlEKCkpIDogcHJpbWFyeUdQVUlEKCk7Ci0gICAgc2V0R1BVQnlSZWdp
c3RyeUlEKGNnbENvbnRleHQsIHBpeGVsRm9ybWF0LCBncHVJRCk7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShob3N0V2luZG93KTsKLSNlbmRpZgotCiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7
CiAgICAgYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOyAvLyBUaGV5IG1heSBoYXZlIGNoYW5n
ZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKQEAgLTU2MSwzMCArNDg2LDI2IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNoZWNrR1BVU3RhdHVzKCkKIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCBpc1Zpc2libGUpCiB7Ci0gICAg
aWYgKG1fcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uID09IEdyYXBoaWNzQ29udGV4dEdM
UG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2UpIHsKLSAgICAgICAgaWYgKGlzVmlzaWJs
ZSkKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLmFkZENvbnRleHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UodGhpcyk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVk
TWFuYWdlcigpLnJlbW92ZUNvbnRleHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UodGhpcyk7Ci0g
ICAgfQotfQotCiAjaWYgUExBVEZPUk0oTUFDKQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dXBkYXRlQ0dMQ29udGV4dCgpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
KyAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5wb3dlclByZWZlcmVuY2UgIT0gR3JhcGhpY3ND
b250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkKICAgICAgICAgcmV0dXJu
OwotICAgIExPRyhXZWJHTCwgIkRldGVjdGVkIGEgbXV4IHN3aXRjaCBvciBkaXNwbGF5IHJlY29u
ZmlndXJhdGlvbi4gQ2FsbCBDR0xVcGRhdGVDb250ZXh0LiAoJXApIiwgdGhpcyk7Ci0KLSAgICBF
R0xEZXZpY2VFWFQgZGV2aWNlID0gbnVsbHB0cjsKLSAgICBFR0xfUXVlcnlEaXNwbGF5QXR0cmli
RVhUKG1fZGlzcGxheU9iaiwgRUdMX0RFVklDRV9FWFQsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0
cmliKj4oJmRldmljZSkpOwotICAgIENHTENvbnRleHRPYmogY2dsQ29udGV4dCA9IG51bGxwdHI7
Ci0gICAgRUdMX1F1ZXJ5RGV2aWNlQXR0cmliRVhUKGRldmljZSwgRUdMX0NHTF9DT05URVhUX0FO
R0xFLCByZWludGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZjZ2xDb250ZXh0KSk7Ci0KLSAgICBD
R0xVcGRhdGVDb250ZXh0KGNnbENvbnRleHQpOwotICAgIG1faGFzU3dpdGNoZWRUb0hpZ2hQZXJm
b3JtYW5jZUdQVSA9IHRydWU7CisgICAgaWYgKGlzVmlzaWJsZSkKKyAgICAgICAgbV9oaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0ID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6YWNx
dWlyZSgpOworICAgIGVsc2UKKyAgICAgICAgbV9oaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0ID0g
eyB9OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaXNWaXNpYmxlKTsKKyNlbmRpZgogfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKCkKK3sK
KyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKG1fc3VwcG9ydHNQb3dlclByZWZlcmVuY2UpCisg
ICAgICAgIEVHTF9IYW5kbGVHUFVTd2l0Y2hBTkdMRShtX2Rpc3BsYXlPYmopOwogI2VuZGlmCisg
ICAgZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpOworfQogCiBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogewpAQCAt
NjU0LDUwICs1NzUsOCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc0dMRVMyQ29t
cGxpYW50KCkgY29uc3QKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2ltdWxhdGVD
b250ZXh0Q2hhbmdlZCgpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpz
aGFyZWRNYW5hZ2VyKCkudXBkYXRlQWxsQ29udGV4dHMoKTsKLX0KLQotYm9vbCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3QKLXsKLSNpZiBQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKLSAg
ICAvLyBXaGVuIFdpbmRvd1NlcnZlciBhY2Nlc3MgaXMgYmxvY2tlZCBpbiB0aGUgV2ViUHJvY2Vz
cywgdGhlcmUgaXMgbm8gd2F5Ci0gICAgLy8gZm9yIE9wZW5HTCB0byBkZWNpZGUgd2hpY2ggR1BV
IGlzIGNvbm5lY3RlZCB0byBhIGRpc3BsYXkgKG9ubGluZS9vZmZsaW5lKS4KLSAgICAvLyBPcGVu
R0wgd2lsbCB0aGVuIGNvbnNpZGVyIGFsbCBHUFVzLCBvciByZW5kZXJlcnMsIGFzIG9mZmxpbmUs
IHdoaWNoIG1lYW5zCi0gICAgLy8gYWxsIG9mZmxpbmUgcmVuZGVyZXJzIG5lZWQgdG8gYmUgY29u
c2lkZXJlZCB3aGVuIGZpbmRpbmcgYSBwaXhlbCBmb3JtYXQuCi0gICAgLy8gSW4gV2ViS2l0IGxl
Z2FjeSwgdGhlcmUgd2lsbCBzdGlsbCBiZSBhIFdpbmR3U2VydmVyIGNvbm5lY3Rpb24sIGFuZAot
ICAgIC8vIG1fZGlzcGxheU1hc2sgd2lsbCBub3QgYmUgc2V0IGluIHRoaXMgY2FzZS4KLSAgICBp
ZiAocHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotI2Vs
aWYgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0gICAgLy8gRklYTUU6IDxyZGFyOi8vNTMwNjI3OTQ+
IFdlJ3JlIHZlcnkgaW5jb25zaXN0ZW50IGFib3V0IFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JM
T0NLSU5HCi0gICAgLy8gYW5kIE1BQy9NQUNDQVRBTFlTVCBhbmQgT1BFTkdML09QRU5HTEVTLgot
ICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgICAgIAotI2lmIEhBVkUoQVBQTEVfR1JBUEhJ
Q1NfQ09OVFJPTCkKLSAgICBpZiAoaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSNlbmRpZgotICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLQotI2lmIFBM
QVRGT1JNKE1BQykKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNjcmVlbkRpZENoYW5n
ZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHRPYmop
Ci0gICAgICAgIHJldHVybjsKLSAgICBpZiAoIW1faGFzU3dpdGNoZWRUb0hpZ2hQZXJmb3JtYW5j
ZUdQVSkgewotICAgICAgICBFR0xEZXZpY2VFWFQgZGV2aWNlID0gbnVsbHB0cjsKLSAgICAgICAg
RUdMX1F1ZXJ5RGlzcGxheUF0dHJpYkVYVChtX2Rpc3BsYXlPYmosIEVHTF9ERVZJQ0VfRVhULCBy
ZWludGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZkZXZpY2UpKTsKLSAgICAgICAgQ0dMQ29udGV4
dE9iaiBjZ2xDb250ZXh0ID0gbnVsbHB0cjsKLSAgICAgICAgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4
ZWxGb3JtYXQgPSBudWxscHRyOwotICAgICAgICBFR0xfUXVlcnlEZXZpY2VBdHRyaWJFWFQoZGV2
aWNlLCBFR0xfQ0dMX0NPTlRFWFRfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4o
JmNnbENvbnRleHQpKTsKLSAgICAgICAgRUdMX1F1ZXJ5RGV2aWNlQXR0cmliRVhUKGRldmljZSwg
RUdMX0NHTF9QSVhFTF9GT1JNQVRfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4o
JnBpeGVsRm9ybWF0KSk7Ci0gICAgICAgIHNldEdQVUJ5UmVnaXN0cnlJRChjZ2xDb250ZXh0LCBw
aXhlbEZvcm1hdCwgZ3B1SURGb3JEaXNwbGF5KGRpc3BsYXlJRCkpOwotICAgIH0KKyAgICBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5kaXNwbGF5V2FzUmVj
b25maWd1cmVkKCk7CiB9Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKE1BQykKIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01hYy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmU5OTkwYTg1NTY3MGZlOWNiOWFhODNjYTFmYzA5OGUyMTNjNDVjNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9H
cmFwaGljc0NoZWNrc01hYy5jcHAKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDaGVja3NNYWMuaCIKKworI2lmIFBM
QVRGT1JNKE1BQykKKworI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKKyNpbmNsdWRl
IDxzeXMvc3lzY3RsLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgSEFW
RShBUFBMRV9HUkFQSElDU19DT05UUk9MKQorCitlbnVtIHsKKyAgICBrQUdDT3BlbiwKKyAgICBr
QUdDQ2xvc2UKK307CisKK3N0YXRpYyBpb19jb25uZWN0X3QgYXR0YWNoVG9BcHBsZUdyYXBoaWNz
Q29udHJvbCgpCit7CisgICAgbWFjaF9wb3J0X3QgbWFzdGVyUG9ydCA9IE1BQ0hfUE9SVF9OVUxM
OworCisgICAgaWYgKElPTWFzdGVyUG9ydChNQUNIX1BPUlRfTlVMTCwgJm1hc3RlclBvcnQpICE9
IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOworCisgICAgQ0ZE
aWN0aW9uYXJ5UmVmIGNsYXNzVG9NYXRjaCA9IElPU2VydmljZU1hdGNoaW5nKCJBcHBsZUdyYXBo
aWNzQ29udHJvbCIpOworICAgIGlmICghY2xhc3NUb01hdGNoKQorICAgICAgICByZXR1cm4gTUFD
SF9QT1JUX05VTEw7CisKKyAgICBrZXJuX3JldHVybl90IGtlcm5SZXN1bHQ7CisgICAgaW9faXRl
cmF0b3JfdCBpdGVyYXRvcjsKKyAgICBpZiAoKGtlcm5SZXN1bHQgPSBJT1NlcnZpY2VHZXRNYXRj
aGluZ1NlcnZpY2VzKG1hc3RlclBvcnQsIGNsYXNzVG9NYXRjaCwgJml0ZXJhdG9yKSkgIT0gS0VS
Tl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gTUFDSF9QT1JUX05VTEw7CisKKyAgICBpb19zZXJ2
aWNlX3Qgc2VydmljZU9iamVjdCA9IElPSXRlcmF0b3JOZXh0KGl0ZXJhdG9yKTsKKyAgICBJT09i
amVjdFJlbGVhc2UoaXRlcmF0b3IpOworICAgIGlmICghc2VydmljZU9iamVjdCkKKyAgICAgICAg
cmV0dXJuIE1BQ0hfUE9SVF9OVUxMOworCisgICAgaW9fY29ubmVjdF90IGRhdGFQb3J0OworICAg
IElPT2JqZWN0UmV0YWluKHNlcnZpY2VPYmplY3QpOworICAgIGtlcm5SZXN1bHQgPSBJT1NlcnZp
Y2VPcGVuKHNlcnZpY2VPYmplY3QsIG1hY2hfdGFza19zZWxmKCksIDAsICZkYXRhUG9ydCk7Cisg
ICAgSU9PYmplY3RSZWxlYXNlKHNlcnZpY2VPYmplY3QpOworCisgICAgcmV0dXJuIChrZXJuUmVz
dWx0ID09IEtFUk5fU1VDQ0VTUykgPyBkYXRhUG9ydCA6IE1BQ0hfUE9SVF9OVUxMOworfQorCitz
dGF0aWMgYm9vbCBoYXNNdXhDYXBhYmlsaXR5KCkKK3sKKyAgICBpb19jb25uZWN0X3QgZGF0YVBv
cnQgPSBhdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKCk7CisKKyAgICBpZiAoZGF0YVBvcnQg
PT0gTUFDSF9QT1JUX05VTEwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgcmVz
dWx0OworICAgIGlmIChJT0Nvbm5lY3RDYWxsU2NhbGFyTWV0aG9kKGRhdGFQb3J0LCBrQUdDT3Bl
biwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgbnVsbHB0cikgPT0gS0VSTl9TVUNDRVNTKSB7CisgICAg
ICAgIElPQ29ubmVjdENhbGxTY2FsYXJNZXRob2QoZGF0YVBvcnQsIGtBR0NDbG9zZSwgbnVsbHB0
ciwgMCwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgfSBl
bHNlCisgICAgICAgIHJlc3VsdCA9IGZhbHNlOworCisgICAgSU9TZXJ2aWNlQ2xvc2UoZGF0YVBv
cnQpOworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAvLyBUaGlzIGlzIGRldGVjdGluZyBN
YWMgaGFyZHdhcmUgd2l0aCBhbiBJbnRlbCBnNTc1IEdQVSwgd2hpY2gKKyAgICAgICAgLy8gd2Ug
ZG9uJ3Qgd2FudCB0byBtYWtlIGF2YWlsYWJsZSB0byBtdXhpbmcuCisgICAgICAgIC8vIEJhc2Vk
IG9uIGluZm9ybWF0aW9uIGZyb20gQXBwbGUncyBPcGVuR0wgdGVhbSwgc3VjaCBkZXZpY2VzCisg
ICAgICAgIC8vIGhhdmUgZm91ciBvciBmZXdlciBwcm9jZXNzb3JzLgorICAgICAgICAvLyA8cmRh
cjovL3Byb2JsZW0vMzAwNjAzNzg+CisgICAgICAgIGludCBuYW1lc1syXSA9IHsgQ1RMX0hXLCBI
V19OQ1BVIH07CisgICAgICAgIGludCBjcHVDb3VudDsKKyAgICAgICAgc2l6ZV90IGNwdUNvdW50
TGVuZ3RoID0gc2l6ZW9mKGNwdUNvdW50KTsKKyAgICAgICAgc3lzY3RsKG5hbWVzLCAyLCAmY3B1
Q291bnQsICZjcHVDb3VudExlbmd0aCwgbnVsbHB0ciwgMCk7CisgICAgICAgIHJlc3VsdCA9IGNw
dUNvdW50ID4gNDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjZW5kaWYgLy8g
SEFWRShBUFBMRV9HUkFQSElDU19DT05UUk9MKQorCitib29sIGhhc0xvd0FuZEhpZ2hQb3dlckdQ
VXMoKQoreworI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKKyAgICBzdGF0aWMgYm9v
bCBjYW5NdXggPSBoYXNNdXhDYXBhYmlsaXR5KCk7CisgICAgcmV0dXJuIGNhbk11eDsKKyNlbHNl
CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK30KKworI2VuZGlmCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01h
Yy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tz
TWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWZkMzkwNTRmOThlYWY4ZTQ2NDY2MTU4YmE5N2M3ZDFmZTIyYmQ0
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HcmFwaGljc0NoZWNrc01hYy5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXRUJDT1JFX0VYUE9SVCBib29sIGhh
c0xvd0FuZEhpZ2hQb3dlckdQVXMoKTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1Njb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TY29wZWRIaWdoUGVyZm9ybWFu
Y2VHUFVSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMyMWZkNzk0MDE5YTMxYTgwNTczNDRmMmRhMmRj
NGJhYWUxMjhlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9TY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmgKQEAgLTAsMCArMSw3
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NDaGVj
a3NNYWMuaCIKKyNpbmNsdWRlICJTd2l0Y2hpbmdHUFVDbGllbnQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0IHsKK3B1Ymxp
YzoKKyAgICBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0KCkgPSBkZWZhdWx0OworICAg
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QoU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BV
UmVxdWVzdCYmIG90aGVyKQorICAgICAgICA6IG1fcmVxdWVzdGVkKHN0ZDo6ZXhjaGFuZ2Uob3Ro
ZXIubV9yZXF1ZXN0ZWQsIGZhbHNlKSkKKyAgICB7CisgICAgfQorICAgIH5TY29wZWRIaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0KCkKKyAgICB7CisgICAgICAgIGlmICghbV9yZXF1ZXN0ZWQpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIFN3aXRjaGluZ0dQVUNsaWVudDo6c2luZ2xldG9u
SWZFeGlzdHMoKS0+cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpOworICAgIH0KKyAgICBTY29w
ZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0JiBvcGVyYXRvcj0oU2NvcGVkSGlnaFBlcmZvcm1h
bmNlR1BVUmVxdWVzdCYmIG90aGVyKQorICAgIHsKKyAgICAgICAgaWYgKG1fcmVxdWVzdGVkKQor
ICAgICAgICAgICAgU3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygpLT5yZWxl
YXNlSGlnaFBlcmZvcm1hbmNlR1BVKCk7CisgICAgICAgIG1fcmVxdWVzdGVkID0gc3RkOjpleGNo
YW5nZShvdGhlci5tX3JlcXVlc3RlZCwgZmFsc2UpOworICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorICAgIHN0YXRpYyBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0IGFjcXVpcmUo
KQorICAgIHsKKyAgICAgICAgaWYgKCFoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkpCisgICAgICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICBhdXRvIGNsaWVudCA9IFN3aXRjaGluZ0dQVUNsaWVu
dDo6c2luZ2xldG9uSWZFeGlzdHMoKTsKKyAgICAgICAgaWYgKCFjbGllbnQpCisgICAgICAgICAg
ICByZXR1cm4geyB9OworICAgICAgICBjbGllbnQtPnJlcXVlc3RIaWdoUGVyZm9ybWFuY2VHUFUo
KTsKKyAgICAgICAgcmV0dXJuIHsgMCB9OworICAgIH0KK3ByaXZhdGU6CisgICAgU2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdChpbnQpCisgICAgICAgIDogbV9yZXF1ZXN0ZWQodHJ1ZSkK
KyAgICB7CisgICAgfQorICAgIGJvb2wgbV9yZXF1ZXN0ZWQgeyBmYWxzZSB9OworfTsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGlu
Z0dQVUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRj
aGluZ0dQVUNsaWVudC5oCmluZGV4IDQ5OWEyODdhNDVjOTY4ZDgzM2RlY2ZlNTMzMzExZDBjZWIz
MTcwNzguLjQ1MjM2NzgxYjhlMTA4ZTI4NmZkZTIxNGU4NTFhM2E4MmIzMDFjN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Td2l0Y2hpbmdHUFVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU3dpdGNoaW5n
R1BVQ2xpZW50LmgKQEAgLTI5LDE2ICsyOSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFN3aXRjaGluZ0dQVUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFN3aXRjaGluZ0dQVUNsaWVudCogc2luZ2xldG9uSWZFeGlzdHMoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTaW5nbGV0b24oU3dpdGNoaW5nR1BVQ2xpZW50Jik7CiAK
ICAgICB2aXJ0dWFsIH5Td2l0Y2hpbmdHUFVDbGllbnQoKSA9IGRlZmF1bHQ7Ci0KK3ByaXZhdGU6
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN3aXRjaGluZ0dQVUNsaWVudCogc2luZ2xldG9u
SWZFeGlzdHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpID0gMDsK
LSAgICAKLXByaXZhdGU6CisKICAgICBzdGF0aWMgU3dpdGNoaW5nR1BVQ2xpZW50KiBtX3Npbmds
ZXRvbjsKKyAgICBmcmllbmQgY2xhc3MgU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggZjUyYmRkNjZm
ZDBjNjdiMTI1ZDhiNTExZTI5Y2Y5MmZjMmZjZjVlMC4uOGQ3YmIzNTBmYWJkMDhmYTgxOTY4YmE0
OTRjYWNjZmI3YzA5ZmY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAg
LTY5LDYgKzY5LDEwIEBAIGNsYXNzIEdDR0xMYXllcjsKIH0KICNlbmRpZgogCisjaWYgUExBVEZP
Uk0oTUFDKQorI2luY2x1ZGUgIlNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBFeHRlbnNpb25zR0w7CiAjaWYgVVNF
KEFOR0xFKQpAQCAtMjU2LDcgKzI2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRleFN1YkltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZp
bmFsOwogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQpIGZpbmFsOwogICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwotICAgIHZvaWQgY29t
cHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFs
OyAKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRw
dHIgb2Zmc2V0KSBmaW5hbDsKICAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7
CiAgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogCkBAIC00NjEsMTQgKzQ2NSwxMiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwcmltaXRpdmVSZXN0YXJ0SW5kZXgoR0NHTHVpbnQpOwogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShDT0NPQSkgJiYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgdXBkYXRlQ0dM
Q29udGV4dCgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgZGlzcGxheVdhc1JlY29u
ZmlndXJlZCgpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wp
IGZpbmFsOwogCi0gICAgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVm
ZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wb3dlclByZWZl
cmVuY2VVc2VkRm9yQ3JlYXRpb247IH0KLQogICAgIC8vIFN1cHBvcnQgZm9yIGJ1ZmZlciBjcmVh
dGlvbiBhbmQgZGVsZXRpb24KICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZlcigpIGZp
bmFsOwogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBmaW5hbDsKQEAg
LTQ5NywxMSArNDk5LDYgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgdGV4dHVyZVNlZWQoR0NH
THVpbnQgdGV4dHVyZSkgeyByZXR1cm4gbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmNvdW50KHRl
eHR1cmUpOyB9CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgdXNpbmcgUGxhdGZvcm1EaXNwbGF5
SUQgPSB1aW50MzJfdDsKLSAgICB2b2lkIHNjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJ
RCk7Ci0jZW5kaWYKLQogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKIAogI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKQEAgLTUyOSw3ICs1MjYsNyBAQCBw
cml2YXRlOgogICAgIC8vIGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0
ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lk
IHZhbGlkYXRlQXR0cmlidXRlcygpOwotICAgIAorCiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9p
ZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CiAKICAgICAvLyBEaWQg
dGhlIG1vc3QgcmVjZW50IGRyYXdpbmcgb3BlcmF0aW9uIGxlYXZlIHRoZSBHUFUgaW4gYW4gYWNj
ZXB0YWJsZSBzdGF0ZT8KQEAgLTU0Nyw3ICs1NDQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgYXR0
YWNoRGVwdGhBbmRTdGVuY2lsQnVmZmVySWZOZWVkZWQoR0NHTHVpbnQgaW50ZXJuYWxEZXB0aFN0
ZW5jaWxGb3JtYXQsIGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBib29sIGFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0OwogICAgIGJvb2wgcmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiAgICAgYm9vbCBhbGxvY2F0ZUFuZEJpbmREaXNw
bGF5QnVmZmVyQmFja2luZygpOwogICAgIGJvb2wgYmluZERpc3BsYXlCdWZmZXJCYWNraW5nKHN0
ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tpbmcsIHZvaWQqIHBidWZmZXIpOwpAQCAtNTgz
LDcgKzU3OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAsIGlzVmFsaWQoZmFsc2UpCiAgICAg
ICAgIHsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBTaGFkZXJTeW1ib2xNYXAmIHN5
bWJvbE1hcChlbnVtIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSBzeW1ib2xUeXBlKQogICAgICAgICB7
CiAgICAgICAgICAgICBBU1NFUlQoc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfQVRU
UklCVVRFIHx8IHN5bWJvbFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0gfHwgc3lt
Ym9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfVkFSWUlORyk7CkBAIC02NDgsNyArNjQ0LDYg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uc0dMT3BlbkdMPiBtX2V4
dGVuc2lvbnM7CiAjZW5kaWYKIAotICAgIEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNl
IG1fcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uIHsgR3JhcGhpY3NDb250ZXh0R0xQb3dl
clByZWZlcmVuY2U6OkRlZmF1bHQgfTsKICAgICBWZWN0b3I8VmVjdG9yPGZsb2F0Pj4gbV92ZXJ0
ZXhBcnJheTsKIAogI2lmICFVU0UoQU5HTEUpCkBAIC02ODAsNyArNjc1LDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICB1c2luZyBCb3VuZFRleHR1cmVNYXAgPSBIYXNoTWFwPEdDR0xlbnVtLAogICAg
ICAgICAgICAgc3RkOjpwYWlyPEdDR0x1aW50LCBHQ0dMZW51bT4sCi0gICAgICAgICAgICBXVEY6
OkludEhhc2g8R0NHTGVudW0+LCAKKyAgICAgICAgICAgIFdURjo6SW50SGFzaDxHQ0dMZW51bT4s
CiAgICAgICAgICAgICBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50
PiwKICAgICAgICAgICAgIFdURjo6UGFpckhhc2hUcmFpdHM8V1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czxHQ0dMdWludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8R0NHTHVpbnQ+PgogICAgICAgICA+OwpAQCAtNzYxLDggKzc1NiwxMCBAQCBwcml2YXRlOgog
ICAgIC8vIFdoZW4gcHJlc2VydmVEcmF3aW5nQnVmZmVyID09IHRydWUsIHRoaXMgaXMgYmxpdHRl
ZCB0byBkdXJpbmcgZGlzcGxheSBwcmVwYXJlLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZh
Y2U+IG1fZGlzcGxheUJ1ZmZlckJhY2tpbmc7CiAgICAgdm9pZCogbV9kaXNwbGF5QnVmZmVyUGJ1
ZmZlciB7IG51bGxwdHIgfTsKLQotICAgIGJvb2wgbV9oYXNTd2l0Y2hlZFRvSGlnaFBlcmZvcm1h
bmNlR1BVIHsgZmFsc2UgfTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBib29sIG1f
c3VwcG9ydHNQb3dlclByZWZlcmVuY2UgeyBmYWxzZSB9OworICAgIFNjb3BlZEhpZ2hQZXJmb3Jt
YW5jZUdQVVJlcXVlc3QgbV9oaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0OwogI2VuZGlmCiAjaWYg
RU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxH
cmFwaGljc0NvbnRleHRHTENWPiBtX2N2OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyLmNwcAppbmRleCA0MWFiNTBjYmVmMmVhNjQyOTNiYTBjOTliZThiMDVm
Yzk3MDc3ZGU2Li4wN2ViYTA0MjZiNmNjYzRhMmQxNGI4N2UwOGI3NzYzZjc1MzBiMmU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcApAQCAtMzEs
OTEgKzMxLDggQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKIAotI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKLSNpbmNs
dWRlIDxzeXMvc3lzY3RsLmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRl
ICJTd2l0Y2hpbmdHUFVDbGllbnQuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LSNpZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCi0KLWVudW0gewotICAgIGtBR0NPcGVu
LAotICAgIGtBR0NDbG9zZQotfTsKLQotc3RhdGljIGlvX2Nvbm5lY3RfdCBhdHRhY2hUb0FwcGxl
R3JhcGhpY3NDb250cm9sKCkKLXsKLSAgICBtYWNoX3BvcnRfdCBtYXN0ZXJQb3J0ID0gTUFDSF9Q
T1JUX05VTEw7Ci0gICAgCi0gICAgaWYgKElPTWFzdGVyUG9ydChNQUNIX1BPUlRfTlVMTCwgJm1h
c3RlclBvcnQpICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxM
OwotICAgIAotICAgIENGRGljdGlvbmFyeVJlZiBjbGFzc1RvTWF0Y2ggPSBJT1NlcnZpY2VNYXRj
aGluZygiQXBwbGVHcmFwaGljc0NvbnRyb2wiKTsKLSAgICBpZiAoIWNsYXNzVG9NYXRjaCkKLSAg
ICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOwotICAgIAotICAgIGtlcm5fcmV0dXJuX3Qga2Vy
blJlc3VsdDsKLSAgICBpb19pdGVyYXRvcl90IGl0ZXJhdG9yOwotICAgIGlmICgoa2VyblJlc3Vs
dCA9IElPU2VydmljZUdldE1hdGNoaW5nU2VydmljZXMobWFzdGVyUG9ydCwgY2xhc3NUb01hdGNo
LCAmaXRlcmF0b3IpKSAhPSBLRVJOX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBNQUNIX1BPUlRf
TlVMTDsKLSAgICAKLSAgICBpb19zZXJ2aWNlX3Qgc2VydmljZU9iamVjdCA9IElPSXRlcmF0b3JO
ZXh0KGl0ZXJhdG9yKTsKLSAgICBJT09iamVjdFJlbGVhc2UoaXRlcmF0b3IpOwotICAgIGlmICgh
c2VydmljZU9iamVjdCkKLSAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOwotICAgIAotICAg
IGlvX2Nvbm5lY3RfdCBkYXRhUG9ydDsKLSAgICBJT09iamVjdFJldGFpbihzZXJ2aWNlT2JqZWN0
KTsKLSAgICBrZXJuUmVzdWx0ID0gSU9TZXJ2aWNlT3BlbihzZXJ2aWNlT2JqZWN0LCBtYWNoX3Rh
c2tfc2VsZigpLCAwLCAmZGF0YVBvcnQpOwotICAgIElPT2JqZWN0UmVsZWFzZShzZXJ2aWNlT2Jq
ZWN0KTsKLSAgICAKLSAgICByZXR1cm4gKGtlcm5SZXN1bHQgPT0gS0VSTl9TVUNDRVNTKSA/IGRh
dGFQb3J0IDogTUFDSF9QT1JUX05VTEw7Ci19Ci0KLXN0YXRpYyBib29sIGhhc011eENhcGFiaWxp
dHkoKQotewotICAgIGlvX2Nvbm5lY3RfdCBkYXRhUG9ydCA9IGF0dGFjaFRvQXBwbGVHcmFwaGlj
c0NvbnRyb2woKTsKLSAgICAKLSAgICBpZiAoZGF0YVBvcnQgPT0gTUFDSF9QT1JUX05VTEwpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBib29sIHJlc3VsdDsKLSAgICBpZiAoSU9D
b25uZWN0Q2FsbFNjYWxhck1ldGhvZChkYXRhUG9ydCwga0FHQ09wZW4sIG51bGxwdHIsIDAsIG51
bGxwdHIsIG51bGxwdHIpID09IEtFUk5fU1VDQ0VTUykgewotICAgICAgICBJT0Nvbm5lY3RDYWxs
U2NhbGFyTWV0aG9kKGRhdGFQb3J0LCBrQUdDQ2xvc2UsIG51bGxwdHIsIDAsIG51bGxwdHIsIG51
bGxwdHIpOwotICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgIH0gZWxzZQotICAgICAgICByZXN1
bHQgPSBmYWxzZTsKLSAgICAKLSAgICBJT1NlcnZpY2VDbG9zZShkYXRhUG9ydCk7Ci0gICAgCi0g
ICAgaWYgKHJlc3VsdCkgewotICAgICAgICAvLyBUaGlzIGlzIGRldGVjdGluZyBNYWMgaGFyZHdh
cmUgd2l0aCBhbiBJbnRlbCBnNTc1IEdQVSwgd2hpY2gKLSAgICAgICAgLy8gd2UgZG9uJ3Qgd2Fu
dCB0byBtYWtlIGF2YWlsYWJsZSB0byBtdXhpbmcuCi0gICAgICAgIC8vIEJhc2VkIG9uIGluZm9y
bWF0aW9uIGZyb20gQXBwbGUncyBPcGVuR0wgdGVhbSwgc3VjaCBkZXZpY2VzCi0gICAgICAgIC8v
IGhhdmUgZm91ciBvciBmZXdlciBwcm9jZXNzb3JzLgotICAgICAgICAvLyA8cmRhcjovL3Byb2Js
ZW0vMzAwNjAzNzg+Ci0gICAgICAgIGludCBuYW1lc1syXSA9IHsgQ1RMX0hXLCBIV19OQ1BVIH07
Ci0gICAgICAgIGludCBjcHVDb3VudDsKLSAgICAgICAgc2l6ZV90IGNwdUNvdW50TGVuZ3RoID0g
c2l6ZW9mKGNwdUNvdW50KTsKLSAgICAgICAgc3lzY3RsKG5hbWVzLCAyLCAmY3B1Q291bnQsICZj
cHVDb3VudExlbmd0aCwgbnVsbHB0ciwgMCk7Ci0gICAgICAgIHJlc3VsdCA9IGNwdUNvdW50ID4g
NDsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotYm9vbCBoYXNMb3dBbmRI
aWdoUG93ZXJHUFVzKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBjYW5NdXggPSBoYXNNdXhDYXBhYmls
aXR5KCk7Ci0gICAgcmV0dXJuIGNhbk11eDsKLX0KLSNlbmRpZiAvLyBIQVZFKEFQUExFX0dSQVBI
SUNTX0NPTlRST0wpCi0KIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlciYgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkKIHsKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyPiBzX21hbmFnZXI7CkBA
IC0xMjcsMzMgKzQ0LDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpk
aXNwbGF5V2FzUmVjb25maWd1cmVkKENHRGlyZWN0RGlzcGxheUlELCBDCiB7CiAgICAgTE9HKFdl
YkdMLCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1
cmVkIik7CiAgICAgaWYgKGZsYWdzICYga0NHRGlzcGxheVNldE1vZGVGbGFnKQotICAgICAgICBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS51cGRhdGVBbGxD
b250ZXh0cygpOworICAgICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKS5kaXNwbGF5V2FzUmVjb25maWd1cmVkKCk7CiB9CiAjZW5kaWYKIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnVwZGF0ZUFsbENvbnRleHRzKCkKLXsKLSNp
ZiBQTEFURk9STShNQUMpCi0gICAgZm9yIChjb25zdCBhdXRvJiBjb250ZXh0IDogbV9jb250ZXh0
cykgewotICAgICAgICBjb250ZXh0LT51cGRhdGVDR0xDb250ZXh0KCk7Ci0gICAgICAgIGNvbnRl
eHQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKTsKLSAgICB9Ci0jZW5kaWYK
LX0KLQotI2lmIFBMQVRGT1JNKE1BQykKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5h
Z2VyOjpzY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBjb25zdCBI
b3N0V2luZG93KiB3aW5kb3cpCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlcjo6ZGlzcGxheVdhc1JlY29uZmlndXJlZCgpCiB7Ci0gICAgZm9y
IChjb25zdCBhdXRvJiBjb250ZXh0QW5kV2luZG93IDogbV9jb250ZXh0V2luZG93TWFwKSB7Ci0g
ICAgICAgIGlmIChjb250ZXh0QW5kV2luZG93LnZhbHVlID09IHdpbmRvdykgewotICAgICAgICAg
ICAgY29udGV4dEFuZFdpbmRvdy5rZXktPnNjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpOwotICAg
ICAgICAgICAgTE9HKFdlYkdMLCAiQ2hhbmdpbmcgY29udGV4dCAoJXApIHRvIGRpc3BsYXkgKCVk
KS4iLCBjb250ZXh0QW5kV2luZG93LmtleSwgZGlzcGxheUlEKTsKLSAgICAgICAgfQotICAgIH0K
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHQgOiBtX2NvbnRleHRzKQorICAgICAgICBjb250
ZXh0LT5kaXNwbGF5V2FzUmVjb25maWd1cmVkKCk7CiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmFkZENvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wqIGNvbnRleHQsIEhvc3RXaW5kb3cqIHdpbmRvdykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xNYW5hZ2VyOjphZGRDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0
KQogewogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0xNjYsNyAr
NjksNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29udGV4dChH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dAogCiAgICAgQVNTRVJUKCFtX2NvbnRleHRz
LmNvbnRhaW5zKGNvbnRleHQpKTsKICAgICBtX2NvbnRleHRzLmFwcGVuZChjb250ZXh0KTsKLSAg
ICBtX2NvbnRleHRXaW5kb3dNYXAuc2V0KGNvbnRleHQsIHdpbmRvdyk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpyZW1vdmVDb250ZXh0KEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0KQpAQCAtMTc0LDk3ICs3NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlcjo6cmVtb3ZlQ29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCogY29udAogICAgIGlmICghbV9jb250ZXh0cy5jb250YWlucyhjb250ZXh0KSkKICAgICAgICAg
cmV0dXJuOwogICAgIG1fY29udGV4dHMucmVtb3ZlRmlyc3QoY29udGV4dCk7Ci0gICAgbV9jb250
ZXh0V2luZG93TWFwLnJlbW92ZShjb250ZXh0KTsKLSAgICByZW1vdmVDb250ZXh0UmVxdWlyaW5n
SGlnaFBlcmZvcm1hbmNlKGNvbnRleHQpOwotICAgIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIUVO
QUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKICAgICBpZiAoIW1fY29udGV4
dHMuc2l6ZSgpKQogICAgICAgICBDR0Rpc3BsYXlSZW1vdmVSZWNvbmZpZ3VyYXRpb25DYWxsYmFj
ayhkaXNwbGF5V2FzUmVjb25maWd1cmVkLCBudWxscHRyKTsKICNlbmRpZgogfQogCi1Ib3N0V2lu
ZG93KiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6Omhvc3RXaW5kb3dGb3JDb250ZXh0
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KSBjb25zdAotewotICAgIEFTU0VSVCht
X2NvbnRleHRXaW5kb3dNYXAuY29udGFpbnMoY29udGV4dCkpOwotICAgIHJldHVybiBtX2NvbnRl
eHRXaW5kb3dNYXAuZ2V0KGNvbnRleHQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlcjo6YWRkQ29udGV4dFJlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZShHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAgaWYg
KCFjb250ZXh0KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQVNTRVJUKG1fY29udGV4dHMu
Y29udGFpbnMoY29udGV4dCkpOwotICAgIEFTU0VSVCghbV9jb250ZXh0c1JlcXVpcmluZ0hpZ2hQ
ZXJmb3JtYW5jZS5jb250YWlucyhjb250ZXh0KSk7Ci0gICAgCi0gICAgTE9HKFdlYkdMLCAiVGhp
cyBjb250ZXh0ICglcCkgcmVxdWlyZXMgdGhlIGhpZ2gtcGVyZm9ybWFuY2UgR1BVLiIsIGNvbnRl
eHQpOwotICAgIG1fY29udGV4dHNSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UuYWRkKGNvbnRleHQp
OwotICAgIAotICAgIHVwZGF0ZUhpZ2hQZXJmb3JtYW5jZVN0YXRlKCk7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpyZW1vdmVDb250ZXh0UmVxdWlyaW5nSGlnaFBl
cmZvcm1hbmNlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQotewotICAgIGlmICgh
Y29udGV4dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2NvbnRleHRzUmVxdWlyaW5n
SGlnaFBlcmZvcm1hbmNlLmNvbnRhaW5zKGNvbnRleHQpKQotICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgTE9HKFdlYkdMLCAiVGhpcyBjb250ZXh0ICglcCkgbm8gbG9uZ2VyIHJlcXVpcmVzIHRo
ZSBoaWdoLXBlcmZvcm1hbmNlIEdQVS4iLCBjb250ZXh0KTsKLSAgICBtX2NvbnRleHRzUmVxdWly
aW5nSGlnaFBlcmZvcm1hbmNlLnJlbW92ZShjb250ZXh0KTsKLSAgICAKLSAgICB1cGRhdGVIaWdo
UGVyZm9ybWFuY2VTdGF0ZSgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFu
YWdlcjo6dXBkYXRlSGlnaFBlcmZvcm1hbmNlU3RhdGUoKQotewotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBpZiAoIWhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIGlmIChtX2NvbnRleHRzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLnNpemUoKSkgewot
ICAgICAgICAKLSAgICAgICAgaWYgKG1fZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVyLmlz
QWN0aXZlKCkpIHsKLSAgICAgICAgICAgIExPRyhXZWJHTCwgIkNhbmNlbCBwZW5kaW5nIHRpbWVy
IGZvciB0dXJuaW5nIG9mZiBoaWdoLXBlcmZvcm1hbmNlIEdQVS4iKTsKLSAgICAgICAgICAgIG1f
ZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVyLnN0b3AoKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmICghbV9yZXF1ZXN0aW5nSGlnaFBlcmZvcm1hbmNlKSB7Ci0gICAgICAgICAgICBMT0co
V2ViR0wsICJSZXF1ZXN0IHRoZSBoaWdoLXBlcmZvcm1hbmNlIEdQVS4iKTsKLSAgICAgICAgICAg
IG1fcmVxdWVzdGluZ0hpZ2hQZXJmb3JtYW5jZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoYXV0
byogc2luZ2xldG9uID0gU3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygpKQot
ICAgICAgICAgICAgICAgIHNpbmdsZXRvbi0+cmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSgpOwot
ICAgICAgICB9Ci0KLSAgICB9IGVsc2UgewotICAgICAgICAvLyBEb24ndCBpbW1lZGlhdGVseSB0
dXJuIG9mZiB0aGUgaGlnaC1wZXJmb3JtYW5jZSBHUFUuIFRoZSB1c2VyIG1pZ2h0IGJlCi0gICAg
ICAgIC8vIHN3YXBwaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGFicyBvciB3aW5kb3dzLCBh
bmQgd2UgZG9uJ3Qgd2FudCB0byBjYXVzZQotICAgICAgICAvLyBjaHVybiBpZiB3ZSBjYW4gYXZv
aWQgaXQuCi0gICAgICAgIGlmICghbV9kaXNhYmxlSGlnaFBlcmZvcm1hbmNlR1BVVGltZXIuaXNB
Y3RpdmUoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdMLCAiU2V0IGEgdGltZXIgdG8gcmVsZWFz
ZSB0aGUgaGlnaC1wZXJmb3JtYW5jZSBHUFUuIik7Ci0gICAgICAgICAgICAvLyBGSVhNRTogRXhw
b3NlIHRoaXMgdmFsdWUgYXMgYSBTZXR0aW5nLCB3aGljaCB3b3VsZCByZXF1aXJlIHRoaXMgY2xh
c3MKLSAgICAgICAgICAgIC8vIHRvIHJlZmVyZW5jZSBhIGZyYW1lLCBwYWdlIG9yIGRvY3VtZW50
LgotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFNlY29uZHMgdGltZVRvS2VlcEhpZ2hQZXJmb3Jt
YW5jZUdQVUFsaXZlIHsgMTBfcyB9OwotICAgICAgICAgICAgbV9kaXNhYmxlSGlnaFBlcmZvcm1h
bmNlR1BVVGltZXIuc3RhcnRPbmVTaG90KHRpbWVUb0tlZXBIaWdoUGVyZm9ybWFuY2VHUFVBbGl2
ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTE1hbmFnZXI6OmRpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lckZpcmVkKCkKLXsK
LSAgICBpZiAobV9jb250ZXh0c1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZS5zaXplKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fcmVxdWVzdGluZ0hpZ2hQZXJmb3JtYW5jZSA9IGZhbHNlOwot
I2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoYXV0byogc2luZ2xldG9uID0gU3dpdGNoaW5nR1BV
Q2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygpKQotICAgICAgICBzaW5nbGV0b24tPnJlbGVhc2VI
aWdoUGVyZm9ybWFuY2VHUFUoKTsKLSNlbmRpZgotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlcjo6cmVjeWNsZUNvbnRleHRJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKGhh
c1Rvb01hbnlDb250ZXh0cygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyLmgKaW5kZXggM2FmOGEwNTJhZThlMmExNWQ1YzA1MTc4NGZiMDg1NDVlZTlhMWQ2
NC4uODNmNzBlYTIyYzkyMTExYjE4YzNjNGQ0YjYxOTk0Mjc0MjQwNzZlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaApAQCAtMjUsOCArMjUsNiBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAt
MzgsNTIgKzM2LDI5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IHVuc2lnbmVkIE1heENv
bnRleHRzID0gMTY7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwotY2xhc3MgSG9z
dFdpbmRvdzsKLQotdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJfdDsKLQotI2lmIEhB
VkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzTG93QW5k
SGlnaFBvd2VyR1BVcygpOwotI2VuZGlmCiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlciB7CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlcj47CiBwdWJsaWM6CiAgICAgc3RhdGljIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlciYgc2hhcmVkTWFuYWdlcigpOwogICAgIAotICAgIHZvaWQgYWRkQ29udGV4dChHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCosIEhvc3RXaW5kb3cqKTsKKyAgICB2b2lkIGFkZENvbnRleHQo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKICAgICB2b2lkIHJlbW92ZUNvbnRleHQoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqKTsKLQotICAgIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3dGb3JDb250
ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKikgY29uc3Q7Ci0gICAgCi0gICAgdm9pZCBhZGRD
b250ZXh0UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7
Ci0gICAgdm9pZCByZW1vdmVDb250ZXh0UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKik7CiAgICAgCiAgICAgdm9pZCByZWN5Y2xlQ29udGV4dElmTmVjZXNz
YXJ5KCk7CiAgICAgYm9vbCBoYXNUb29NYW55Q29udGV4dHMoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRleHRzLnNpemUoKSA+PSBNYXhDb250ZXh0czsgfQogICAgIAotICAgIHZvaWQgdXBkYXRlQWxs
Q29udGV4dHMoKTsKLQogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIHNjcmVlbkRpZENoYW5n
ZShQbGF0Zm9ybURpc3BsYXlJRCwgY29uc3QgSG9zdFdpbmRvdyopOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIGRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoQ0dEaXJlY3REaXNwbGF5SUQs
IENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncywgdm9pZCopOwogI2VuZGlmCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgdm9pZCBkaXNwbGF5V2FzUmVjb25maWd1cmVkKCk7CisjZW5kaWYKICAg
ICAKIHByaXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyKCkKLSAgICAg
ICAgOiBtX2Rpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lcigqdGhpcywgJkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlcjo6ZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVyRmlyZWQp
Ci0gICAgewotICAgIH0KLQotICAgIHZvaWQgdXBkYXRlSGlnaFBlcmZvcm1hbmNlU3RhdGUoKTsK
LSAgICB2b2lkIGRpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lckZpcmVkKCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyKCkgPSBkZWZhdWx0OwogCiAgICAgVmVjdG9yPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKj4gbV9jb250ZXh0czsKLSAgICBIYXNoTWFwPEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiwgSG9zdFdpbmRvdyo+IG1fY29udGV4dFdpbmRvd01hcDsKLSAgICBI
YXNoU2V0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4gbV9jb250ZXh0c1JlcXVpcmluZ0hpZ2hQ
ZXJmb3JtYW5jZTsKLSAgICAKLSAgICBUaW1lciBtX2Rpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVU
aW1lcjsKLSAgICBib29sIG1fcmVxdWVzdGluZ0hpZ2hQZXJmb3JtYW5jZSB7IGZhbHNlIH07CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZmU3MjBlOTM1ZWU5
ZjMyYWNjN2Q4ZDhlY2I1ZjUzMWFjYjFkOWYyMS4uMWY5NTFiN2U5NGVmN2FlNDQwOGY0NWIxYmIx
NTZhMGQzNTdhNGFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzIw
LDcgKzMyMCw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NoZWNrc01h
Yy5oIgogI2luY2x1ZGUgIk5TU2Nyb2xsZXJJbXBEZXRhaWxzLmgiCiAjaW5jbHVkZSAiU2Nyb2xs
YmFyVGhlbWVNYWMuaCIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmgKaW5kZXggNTU1NmNiZDQ0ZjBmNTQ3
Y2Q2NWQzZGU0MWU1MjA2NWY4OTNkM2FhZS4uYWM2MjE5M2FjZmQ1YzJiNjQyYTU3NWFmMzQ3ZjVl
NTJlMDJmZTY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQ
ZXJmb3JtYW5jZUdQVU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgUExBVEZP
Uk0oTUFDKQogCiAjaW5jbHVkZSA8T3BlbkdML0NHTFR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9UaW1lci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKQEAgLTQ0LDEzICs0NSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dmVQcm9jZXNzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKFdlYlByb2Nlc3NQcm94eSopOwogCiBw
cml2YXRlOgotICAgIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIoKSA9IGRlZmF1bHQ7CisgICAg
SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcigpOwogICAgIH5IaWdoUGVyZm9ybWFuY2VHUFVNYW5h
Z2VyKCk7Ci0KICAgICB2b2lkIHVwZGF0ZVN0YXRlKCk7CiAKICAgICBIYXNoU2V0PFdlYlByb2Nl
c3NQcm94eSo+IG1fcHJvY2Vzc2VzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlOwogICAgIENHTFBp
eGVsRm9ybWF0T2JqIG1fcGl4ZWxGb3JtYXRPYmogeyBudWxscHRyIH07CisgICAgV2ViQ29yZTo6
VGltZXIgbV91cGRhdGVTdGF0ZVRpbWVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5tbQppbmRleCBh
OTZmYzNkMTEzNzk4ZTc5YWZjMGZkYjYyNjVmZGRhZmQwM2QwYWUwLi41OWRmZjhiMjNjODBjMDI2
NWJlZTUxOWY4NDYwNzM4ODRmNjE1Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5tbQpAQCAtMjksNyArMjks
NyBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NDaGVja3NNYWMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL09wZW5HTFNvZnRM
aW5rQ29jb2EuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw2ICs0NCwxMyBAQCBIaWdo
UGVyZm9ybWFuY2VHUFVNYW5hZ2VyJiBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpzaW5nbGV0
b24oKQogICAgIHJldHVybiBzaGFyZWRNYW5hZ2VyOwogfQogCitIaWdoUGVyZm9ybWFuY2VHUFVN
YW5hZ2VyOjpIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyKCkKKyAgICA6IG1fdXBkYXRlU3RhdGVU
aW1lcigqdGhpcywgJkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnVwZGF0ZVN0YXRlKQorewor
fQorCitIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjp+SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdl
cigpID0gZGVmYXVsdDsKKwogdm9pZCBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjphZGRQcm9j
ZXNzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKIHsK
ICAgICBpZiAoIVdlYkNvcmU6Omhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKSkKQEAgLTY1LDcgKzcy
LDggQEAgdm9pZCBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpyZW1vdmVQcm9jZXNzUmVxdWly
aW5nSGlnaFBlcmZvcm1hbmNlKFdlYlByb2Nlc3MKIAogICAgIGlmIChtX3Byb2Nlc3Nlc1JlcXVp
cmluZ0hpZ2hQZXJmb3JtYW5jZS5yZW1vdmUocHJvY2VzcykpIHsKICAgICAgICAgTE9HKFdlYkdM
LCAiSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6cmVtb3ZlUHJvY2Vzc1JlcXVpcmluZ0hpZ2hQ
ZXJmb3JtYW5jZSgpIC0gcmVtb3ZpbmcgcHJvY2VzcyAlcCIsIHByb2Nlc3MpOwotICAgICAgICB1
cGRhdGVTdGF0ZSgpOworICAgICAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB0aW1lVG9LZWVwSGln
aFBlcmZvcm1hbmNlR1BVQWxpdmUgeyAxMF9zIH07CisgICAgICAgIG1fdXBkYXRlU3RhdGVUaW1l
ci5zdGFydE9uZVNob3QodGltZVRvS2VlcEhpZ2hQZXJmb3JtYW5jZUdQVUFsaXZlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzQsNiArODIsOCBAQCB2b2lkIEhpZ2hQZXJmb3JtYW5j
ZUdQVU1hbmFnZXI6OnJlbW92ZVByb2Nlc3NSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoV2ViUHJv
Y2VzcwogCiB2b2lkIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnVwZGF0ZVN0YXRlKCkKIHsK
KyAgICBpZiAobV91cGRhdGVTdGF0ZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdXBkYXRl
U3RhdGVUaW1lci5zdG9wKCk7CiAgICAgaWYgKG1fcHJvY2Vzc2VzUmVxdWlyaW5nSGlnaFBlcmZv
cm1hbmNlLnNpemUoKSkgewogICAgICAgICBpZiAoIW1fcGl4ZWxGb3JtYXRPYmopIHsKICAgICAg
ICAgICAgIExPRyhXZWJHTCwgIkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIgLSB0dXJuaW5nIG9u
IGhpZ2gtcGVyZm9ybWFuY2UgR1BVLiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVD
bGllbnQuY3BwCmluZGV4IDQ0YzZiNDMyZTdkNWM1ZGFhNzhkOGQwMmFiNzdjNzkwYzE0YTkzNGEu
LmMxYzJhMmViZGM3Nzg3N2UxN2Y3YzE5MjUzMzU5Mzg1ZGFmNzg0N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BV
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAKQEAgLTQzLDEyICs0MywxOSBAQCBXZWJTd2l0
Y2hpbmdHUFVDbGllbnQmIFdlYlN3aXRjaGluZ0dQVUNsaWVudDo6c2luZ2xldG9uKCkKIAogdm9p
ZCBXZWJTd2l0Y2hpbmdHUFVDbGllbnQ6OnJlcXVlc3RIaWdoUGVyZm9ybWFuY2VHUFUoKQogewor
ICAgIG1fcmVxdWVzdHMrKzsKKyAgICBpZiAobV9yZXF1ZXN0cyAhPSAxKQorICAgICAgICByZXR1
cm47CiAgICAgTE9HKFdlYkdMLCAiV2ViU3dpdGNoaW5nR1BVQ2xpZW50OjpyZXF1ZXN0SGlnaFBl
cmZvcm1hbmNlR1BVKCkgZnJvbSBXZWJQcm9jZXNzIik7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpSZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCksIDApOwogfQogCiB2b2lkIFdlYlN3
aXRjaGluZ0dQVUNsaWVudDo6cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpCiB7CisgICAgQVNT
RVJUKG1fcmVxdWVzdHMpOworICAgIG1fcmVxdWVzdHMtLTsKKyAgICBpZiAobV9yZXF1ZXN0cykK
KyAgICAgICAgcmV0dXJuOwogICAgIExPRyhXZWJHTCwgIldlYlN3aXRjaGluZ0dQVUNsaWVudDo6
cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpIGZyb20gV2ViUHJvY2VzcyIpOwogICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6UmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpLCAwKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5oCmluZGV4IDIwZWIyZWUyNTcxZmVi
YTJkYTQ4NGYyMTg3Nzc4YjEyOTQwYWU1MzMuLmJiODFkOGE2MDhhYjFmZGE0NWYwN2VhN2IzOGE2
MzQ1MTllNzg0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuaApAQCAt
MzIsOSArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJTd2l0Y2hpbmdHUFVD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6U3dpdGNoaW5nR1BVQ2xpZW50IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgV2ViU3dpdGNoaW5nR1BVQ2xpZW50JiBzaW5nbGV0b24oKTsKLSAgICAKK3ByaXZh
dGU6CiAgICAgdm9pZCByZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZWxlYXNlSGlnaFBlcmZvcm1hbmNlR1BVKCkgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQg
bV9yZXF1ZXN0cyB7IDAgfTsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418375</attachid>
            <date>2021-01-26 00:02:38 -0800</date>
            <delta_ts>2021-01-26 05:44:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220843-20210126100235.patch</filename>
            <type>text/plain</type>
            <size>59561</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2NiNzJjMDQzMzZkZjJj
ZTU5NjhjNzY0Y2E4ZGY4ZWYyY2YxNjMyOC4uMTUxZGM5NTc0ZmZhYjM5YzFkYzU1NWI0ZjAzZGQy
YWNhMGQ5NmM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTAxLTI1ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgcG93ZXIg
cHJlZmVyZW5jZSBhbmQgZGlzY3JldGUvaW50ZXJuYWwgZ3B1IHNlbGVjdGlvbiBpbXBsZW1lbnRl
ZCBpbmNvcnJlY3RseSB3aXRoIEFOR0xFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjA4NDMKKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tz
b24uCisKKyAgICAgICAgVXNlIEFOR0xFIGV4dGVuc2lvbiBFR0xfQU5HTEVfcG93ZXJfcHJlZmVy
ZW5jZSB0byBzaWduYWwgdG8gQU5HTEUgdGhhdCB0aGUgdW5kZXJseWluZworICAgICAgICBDR0wg
Y29udGV4dCBzaG91bGQgYmUgdXBkYXRlZCBhcyBhIHJlc3BvbnNlIHRvIGRpc3BsYXkgcmVjb25m
aWd1cmF0aW9uIHNpZ25hbC4KKyAgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgQU5HTEUgc3RhdGUg
c3RheXMgY29uc2lzdGVudCB3aXRoIHRoZSBhY3R1YWwgQ0dMIGNvbnRleHQgYmVoYXZpb3IsIGFz
CisgICAgICAgIHdlIGRvbid0IGNoYW5nZSB0aGUgY29udGV4dCBiZWhpbmQgQU5HTEUncyBiYWNr
LgorCisgICAgICAgIFJlbW92ZSB0aGUgZmVhdHVyZSB3aGVyZSB0aGUgY29udGV4dCBHUFUgaXMg
c2VsZWN0ZWQgYmFzZWQgb24gdGhlIGRpc3BsYXkgdGhlIHdpbmRvdyBpcworICAgICAgICBvbi4g
VGhpcyBjYW5ub3Qgd29yayB3aXRoIHRoZSBsb2dpYyBvZiAicG93ZXJQcmVmZXJlbmNlID0gImhp
Z2gtcGVyZm9ybWFuY2UiIGdvZXMgdG8KKyAgICAgICAgZGlzY3JldGUgR1BVIi4gQWxzbywgdGhp
cyBjYW5ub3Qgd29yayB3aXRoIEFOR0xFIGF0IGFsbCwgc2luY2UgYWxsIGNvbnRleHRzIGFyZSBi
YWNrZWQKKyAgICAgICAgYnkgYSBzaW5nbGUgcGxhdGZvcm0gY29udGV4dC4gVGh1cyBhbGwgY29u
dGV4dHMgd2lsbCB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBHUFUuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIGR1ZSB0byB0aGUgdGVzdCBydW5uZXIgbWlzc2luZyBmZWF0dXJlcy4gVGhlIGJ1ZyBi
bG9ja2VycyB0cmFjayB0aGUgdGVzdGluZy4KKworICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtl
OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNIaWdoUGVyZm9ybWFuY2VDb250
ZXh0KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWU6OndpbmRvd1NjcmVlbkRpZENoYW5nZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4
dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01hYy5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6YXR0YWNoVG9BcHBsZUdyYXBoaWNzQ29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpo
YXNNdXhDYXBhYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Omhhc0xvd0FuZEhpZ2hQb3dlckdQ
VXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NoZWNrc01hYy5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYlN3aXRjaGluZ0dQVUNsaWVudC5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9TY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Td2l0Y2hpbmdHUFVDbGllbnQuaC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Q6OlNjb3BlZEhpZ2hQ
ZXJmb3JtYW5jZUdQVVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZv
cm1hbmNlR1BVUmVxdWVzdDo6flNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDo6b3BlcmF0b3I9
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Q6OmFj
cXVpcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Td2l0Y2hpbmdHUFVDbGll
bnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlcjo6ZGlzcGxheVdhc1JlY29uZmlndXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmFkZENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpyZW1vdmVDb250
ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorCiAy
MDIxLTAxLTI1ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CiAKICAgICAgICAgTnVs
bHB0ciBkZXJlZmVyZW5jZSBpbiBTcGVlY2hSZWNvZ25pdGlvbjo6c3RvcCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGRiMDUyNDNhMmRkZDEyMjFlZmMyMTRjMjAwOWM4MWQyZDFjZjdmMjQuLjk1NTZmZDE4ZTRiNzYx
NTU0NjliODFlM2ZjZjIwNzZjYmZjZTc3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIw
MjEtMDEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWJHTCBwb3dlciBwcmVmZXJlbmNlIGFuZCBkaXNjcmV0ZS9pbnRlcm5hbCBncHUgc2VsZWN0
aW9uIGltcGxlbWVudGVkIGluY29ycmVjdGx5IHdpdGggQU5HTEUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDg0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBNb3ZlIHRoZSBoaWdoLXBlcmZvcm1hbmNlIEdQ
VSBzaHV0ZG93biB0aW1lciBmcm9tIGluZGl2aWR1YWwgd2ViIHByb2Nlc3NlcyB0byB0aGUgbWFp
biBjbGFzcworICAgICAgICBpbiB0aGUgdWkgcHJvY2Vzcy4gVGhpcyBzaW1wbGlmaWVzIHRoZSBp
bXBsZW1lbnRhdGlvbiBhbmQgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHRpbWVycy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5tbToKKyAgICAgICAgKFdl
YktpdDo6SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdl
cik6CisgICAgICAgIChXZWJLaXQ6OkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OnJlbW92ZVBy
b2Nlc3NSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UpOgorICAgICAgICAoV2ViS2l0OjpIaWdoUGVy
Zm9ybWFuY2VHUFVNYW5hZ2VyOjp1cGRhdGVTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViU3dpdGNoaW5nR1BVQ2xpZW50OjpyZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU3dpdGNoaW5nR1BVQ2xpZW50OjpyZWxlYXNlSGlnaFBlcmZv
cm1hbmNlR1BVKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJT
d2l0Y2hpbmdHUFVDbGllbnQuaDoKKwogMjAyMS0wMS0yNCAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMl0gdGhldmVyZ2UuY29tIC0gcnVi
YmVyIGJhbmQgc2Nyb2xsaW5nIGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UgY2F1c2VzIGFuIGFicnVw
dCBqdW1wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGFjNzAxNTQ5OTc5OWU0ZmI0ZWUy
YTBkZTAxYjQzNTEyYjA5YTFmOGUuLmNhZDI2NDQ5Yzc0Yzg1Y2FjYjk2NWIzOWM4ZmI3NTI5MDFm
Y2E2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zNDAsNiArMzQwLDcgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0
UG9pbnRNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRTaXplTWFjLm1tCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdl
TWFjLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ludFBvaW50TWFjLm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAppbmRleCAzYmUxNzU4Y2Q4NzU1MzlhYzdkMmM2ZGFhMDc4ZjBjYjMwMmM4
NzEzLi5lODdkNGRkMDc5YTU1ZjY5ZDIxNzNiZGYxMTJjMmVmOWY5YTZlYzQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKQEAgLTQxOCw2ICs0MTgsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9tYWMv
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0
UG9pbnRNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFNpemVNYWMubW0KIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0lj
b25NYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ludFBvaW50TWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzFmN2M4MzgxMTlhMjM1MTczZDQwY2I4ODkx
YmM1YWJmOWMzNmVmZS4uYTE3NTBjNzZlMmUzNGIxN2Y0NTZjODQ2M2E0ZmU0ODFjYTBhYmRlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjI1OSw2ICsyMjU5LDkgQEAKIAkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkIzNEExNzI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEVVdGlsaXRpZXMuaCAqLzsgfTsKIAkJN0JCMzRBNDgyNTM3NzZDQTAwMDI5RDA4
IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBH
cmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0JCNjgwQjIyNUJBMEQ0QTAwMkI4NzM4IC8qIFNj
b3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjY4MEIwMjVCQTBENEEwMDJCODczOCAvKiBTY29wZWRI
aWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0JCNjgwQjYyNUJBMUFFMjAwMkI4NzM4IC8qIFNjb3BlZEhp
Z2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCQjY4MEI0MjVCQTFBRTEwMDJCODczOCAvKiBTY29wZWRIaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0LmggKi87IH07CisJCTdCQjY4MEJBMjVCQTFCRTQwMDJCODczOCAv
KiBHcmFwaGljc0NoZWNrc01hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0JCNjgwQjgyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JF
NzQyNzM4MUZBOTA2RkJCNEYwRjJDIC8qIEpTU1ZHR3JhcGhpY3NFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBDNEMwMkJFRDg5MzZGODE4
RTJGOTkgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCAqLzsgfTsKIAkJN0MwMjlDNkUyNDkzQzhG
ODAwMjY4MjA0IC8qIENvbG9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxODQz
RkUxQzhCNzI4MzAwMkVCOTczIC8qIEF1dG9maWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzE4NDNGQzFDOEI3MjgzMDAyRUI5NzMgLyogQXV0b2Zp
bGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTAyOTUsNiArMTAyOTgsMTAgQEAKIAkJN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBo
aWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0
R0xJbWFnZUV4dHJhY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ3MjUzNzc2
QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QkI2ODBCMDI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVk
SGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCQjY4MEI0MjVCQTFBRTEwMDJCODczOCAvKiBTY29wZWRIaWdoUGVyZm9y
bWFuY2VHUFVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3Bl
ZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0JCNjgwQjcyNUJBMUJFMzAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCNjgwQjgyNUJBMUJFNDAwMkI4NzM4IC8q
IEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdy
YXBoaWNzQ2hlY2tzTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjVC
MjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDExRjNEMjRGQUQzNjAwMDVCRUYxMCAv
KiBTZXR0aW5ncy5jcHAuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNldHRpbmdzLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDMDExRjNFMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRp
bmdzR2VuZXJhdGVkLmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAu
ZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY0OTcsMTEgKzI2NTA0LDE1IEBA
CiAJCQkJQjI3NTM1NEQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZU1hYy5tbSAqLywKIAkJ
CQlCMkFGRkM3NTBEMDBBNUMxMDAzMDA3NEQgLyogRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAg
Ki8sCiAJCQkJQjJBRkZDNzYwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaCAqLywKKwkJCQk3QkI2ODBCNzI1QkExQkUzMDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NN
YWMuY3BwICovLAorCQkJCTdCQjY4MEI4MjVCQTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNr
c01hYy5oICovLAogCQkJCUIyNzUzNThEMEIwNTNBNjYwMDJDRTY0RiAvKiBJY29uTWFjLm1tICov
LAogCQkJCUIyNzUzNTRFMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZU1hYy5tbSAqLywKIAkJCQlC
Mjc1MzU0RjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRNYWMubW0gKi8sCiAJCQkJQjI3NTM1
NTEwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVNYWMubW0gKi8sCiAJCQkJMkQ2RTQ2ODIxN0Q2
NjBGNTAwRUNGOEJCIC8qIFBERkRvY3VtZW50SW1hZ2VNYWMubW0gKi8sCisJCQkJN0JCNjgwQjQy
NUJBMUFFMTAwMkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLywK
KwkJCQk3QkI2ODBCMDI1QkEwRDRBMDAyQjg3MzggLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BV
UmVxdWVzdC5oICovLAogCQkJCTE2M0U4OEY1MTE4QTM5RDIwMEVEOTIzMSAvKiBTaW1wbGVGb250
RGF0YUNvcmVUZXh0LmNwcCAqLywKIAkJCQlDMTFBOUVEMjIxNDA1NzhCMDBDRkIyMEEgLyogU3dp
dGNoaW5nR1BVQ2xpZW50LmNwcCAqLywKIAkJCQlDMTFBOUVDRDIxNDAzQTVDMDBDRkIyMEEgLyog
U3dpdGNoaW5nR1BVQ2xpZW50LmggKi8sCkBAIC0zMjIzNSw2ICszMjI0Niw3IEBACiAJCQkJQkM1
M0M1RjUwREE1NkI5MjAwMjFFQjVEIC8qIEdyYWRpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjIyNzk2NDBEMDBCRjIyMDA3MUI3ODIgLyogR3JhZGllbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRDQ4MUYwNDE0NkI1QzZCMDBBQTc4MzQgLyogR3JhZGllbnRJbWFnZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0JCNjgwQkEyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hl
Y2tzTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkEwMTVBOTBBRjZDRDUzMDA2QkNFMEUgLyog
R3JhcGhpY3NDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzQ5MDdFNDEyNUJCQkM4MDA3
RjIzQTAgLyogR3JhcGhpY3NDb250ZXh0Q0cuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxM0RFODcw
MjNBOTY5NzMwMDhGQzQ3QiAvKiBHcmFwaGljc0NvbnRleHRHTC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNDQ1Nyw2ICszNDQ2OSw4IEBACiAJCQkJNDlFOTExQ0IwRUY4NkQ0NzAwOUQwQ0FGIC8qIFNj
YWxlVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1REZFOEY1NzBEMTY0
NzdDMDA3NkU5MzcgLyogU2NoZWR1bGVkQWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkQw
QkY5MzEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJN0JCNjgwQjYyNUJBMUFFMjAwMkI4NzM4IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQ
VVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCQjY4MEIyMjVCQTBENEEwMDJCODczOCAv
KiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0VDMDFCRTBDMjc0REFDMDA5RjRFQzkgLyogU2NyZWVuLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
MUUxRDIzNjIwM0RGMTU0MDA1ODQ2NjUgLyogU2NyZWVuUHJvcGVydGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTg0RDgyQzExMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBh
cnNlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDU3OGUwMjE4MGM0NmYz
ZGJjNGZmZmQwYWYwYzM1M2YzOTQ4MjBkYmUuLmU3N2Q4MGE4NTJmYjVhYzVkZDcxY2UzZjk3Y2Nm
NjY2NDYxY2U1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC02NDIsNyArNjQyLDcgQEAgcHJpdmF0
ZToKIAogc3RhdGljIGJvb2wgaXNIaWdoUGVyZm9ybWFuY2VDb250ZXh0KGNvbnN0IFJlZlB0cjxH
cmFwaGljc0NvbnRleHRHTD4mIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQtPnBvd2Vy
UHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpID09IFdlYkdMUG93ZXJQcmVmZXJlbmNlOjpIaWdo
UGVyZm9ybWFuY2U7CisgICAgcmV0dXJuIGNvbnRleHQtPmNvbnRleHRBdHRyaWJ1dGVzKCkucG93
ZXJQcmVmZXJlbmNlID09IFdlYkdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U7CiB9
CiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoQ2FudmFzQmFzZSYgY2FudmFzLCBXZWJHTENvbnRleHRB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBXZWJHTFZlcnNpb24gdHlwZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcAppbmRleCBiNzEwZTcxNWE2NmRjYWM1Njc0MmRiNmJiZWE3NDFkNmY4NjM0MmIzLi40YTU1
ZjlkYTFjNWI1MWY2YzI0YTBiMGU1YzVjNmZiYjNmNTQ5YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUu
Y3BwCkBAIC02NywxMCArNjcsNiBAQAogI2luY2x1ZGUgIkRhdGVUaW1lQ2hvb3Nlci5oIgogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJHTCkKLSNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC01NDgsMTAgKzU0NCw2IEBAIHZv
aWQgQ2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxh
eUlELCBPcHRpb25hbDx1bnNpZ25lCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS53aW5k
b3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZhbCk7Ci0KLSNp
ZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJHTCkKLSAgICBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0
aGlzKTsKLSNlbmRpZgogfQogCiBib29sIENocm9tZTo6c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rp
b25Jc05hdHVyYWwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYTMwY2VlNWZhYjY0NzkyYWNiOGM0NWUxZWU1MGUw
MGNkMjJjMmRmNC4uMmFkMTQ3ZjZlYWI5NGNmM2JkZjAzYmM2ZmRjMjExN2Q0YWUwMDUwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5oCkBAIC0xMjYzLDggKzEyNjMsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgPSAwOwogCi0gICAgdmlydHVhbCBHcmFwaGljc0Nv
bnRleHRHTFBvd2VyUHJlZmVyZW5jZSBwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBj
b25zdCA9IDA7Ci0KICAgICB2aXJ0dWFsIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0ID0g
MDsKIAogICAgIC8vIFN5bnRoZXNpemVzIGFuIE9wZW5HTCBlcnJvciB3aGljaCB3aWxsIGJlIHJl
dHVybmVkIGZyb20gYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCmlu
ZGV4IDU1MmQ4NTM5YjY5NTAwY2YxMTY5NjgwZDRiNWM2Mjg1ODU4Yjc3MzcuLmU1MGY4ZmI0YzVj
MzY3MDQ2MWM4MTM0NWU0NDM3M2M2YTRkYTEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZS5jcHAKQEAgLTQ5LDEyICs0OSw2IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
bigpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4geyB9OwotfQot
CiBib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0dMRVMyQ29tcGxpYW50
KCkgY29uc3QKIHsKICNpZiBFTkFCTEUoV0VCR0wyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmgKaW5kZXggMjQ3MWQ0ZTI1YzlhYTIwMGVjNzQzYjFmZTBjNjQ2OGIwYzlhNTA4
My4uMjg4YzJlYThhZDM5ZTg5YjY5NjlmZDBiMjE2YjhiNjdiMGJlZGEzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAg
ICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CiAgICAgRXh0ZW5z
aW9uc0dMJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7CiAgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJp
bGl0eShib29sKSBmaW5hbDsKLSAgICBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZSBw
b3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlz
R0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdl
ZCgpIGZpbmFsOwogICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCA2NTlmZmZmMTI4NGMw
MmEyMjMyMjEyMDZlYjhmMTZmMmE4MTJiNWFjLi4zNGFmYzgyMGIyZGI4Mjg4ZGNmZTE3MWQ4NjQ4
MzY4NzExNjk4MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW0KQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2ltcG9ydCAiY29u
ZmlnLmgiCkBAIC0zMiw5ICszMiw3IEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTEFOR0xF
VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCi0jaW1wb3J0
ICJIb3N0V2luZG93LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJPcGVuR0xTb2Z0
TGlua0NvY29hLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBv
cnQgIldlYkNvcmVUaHJlYWQuaCIKICNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKQEAgLTQyLDExICs0
MCw2IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oTUFDKQotI2ltcG9ydCAiU2NyZWVuUHJv
cGVydGllcy5oIgotI2ltcG9ydCA8T3BlbkdML0NHTFJlbmRlcmVycy5oPgotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0xDVi5oIgogI2VuZGlmCkBAIC0xNTEsMTcgKzE0NCwxNyBAQCBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhp
Y3NDb250ZXh0RwogICAgIGlmICghY29udGV4dC0+bV9jb250ZXh0T2JqKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVk
TWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5nZXQoKSwgaG9zdFdpbmRvdyk7CisgICAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChj
b250ZXh0LmdldCgpKTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCiBSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wmIHNoYXJlZENvbnRleHQpCiB7Ci0gICAgYXV0byBob3N0V2lu
ZG93ID0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaG9z
dFdpbmRvd0ZvckNvbnRleHQoJnNoYXJlZENvbnRleHQpOwotICAgIGF1dG8gY29udGV4dCA9IGFk
b3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0
QXR0cmlidXRlcygpLCBob3N0V2luZG93LCAmc2hhcmVkQ29udGV4dCwgbnVsbHB0cikpOwogCi0g
ICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29u
dGV4dChjb250ZXh0LnB0cigpLCBob3N0V2luZG93KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9w
dFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4dEF0
dHJpYnV0ZXMoKSwgbnVsbHB0ciwgJnNoYXJlZENvbnRleHQsIG51bGxwdHIpKTsKKworICAgIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQo
Y29udGV4dC5wdHIoKSk7CiAKICAgICByZXR1cm4gY29udGV4dDsKIH0KQEAgLTE3MSw3MiArMTY0
LDI1IEBAIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRycywgbnVsbHB0ciwgbnVsbHB0ciwgc3dhcENoYWlu
KSk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3Vs
ZCBiZSBqdXN0IGVuYWJsZWQgLSBzZWUgPHJkYXI6Ly81MzA2Mjc5ND4uCi0KLXN0YXRpYyB2b2lk
IHNldEdQVUJ5UmVnaXN0cnlJRChDR0xDb250ZXh0T2JqIGNvbnRleHRPYmosIENHTFBpeGVsRm9y
bWF0T2JqIHBpeGVsRm9ybWF0T2JqLCBJT1JlZ2lzdHJ5R1BVSUQgcHJlZmVycmVkR1BVSUQpCi17
Ci0gICAgLy8gV2hlbiB0aGUgV2ViUHJvY2VzcyBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUg
V2luZG93U2VydmVyLCB0aGVyZSBpcyBubyB3YXkgZm9yIE9wZW5HTCB0byB0ZWxsIHdoaWNoIEdQ
VSBpcyBjb25uZWN0ZWQgdG8gYSBkaXNwbGF5LgotICAgIC8vIE9uIDEwLjEzKywgZmluZCB0aGUg
dmlydHVhbCBzY3JlZW4gdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgcHJlZmVycmVkIEdQVSBieSBp
dHMgcmVnaXN0cnlJRC4KLSAgICAvLyBDR0xTZXRWaXJ0dWFsU2NyZWVuIGNhbiB0aGVuIGJlIHVz
ZWQgdG8gdGVsbCBPcGVuR0wgd2hpY2ggR1BVIGl0IHNob3VsZCBiZSB1c2luZy4KLQotICAgIGlm
ICghY29udGV4dE9iaiB8fCAhcHJlZmVycmVkR1BVSUQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEdMaW50IHZpcnR1YWxTY3JlZW5Db3VudCA9IDA7Ci0gICAgQ0dMRXJyb3IgZXJyb3IgPSBDR0xE
ZXNjcmliZVBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0T2JqLCAwLCBrQ0dMUEZBVmlydHVhbFNjcmVl
bkNvdW50LCAmdmlydHVhbFNjcmVlbkNvdW50KTsKLSAgICBBU1NFUlQoZXJyb3IgPT0ga0NHTE5v
RXJyb3IpOwotCi0gICAgR0xpbnQgZmlyc3RBY2NlbGVyYXRlZFNjcmVlbiA9IC0xOwotCi0gICAg
Zm9yIChHTGludCB2aXJ0dWFsU2NyZWVuID0gMDsgdmlydHVhbFNjcmVlbiA8IHZpcnR1YWxTY3Jl
ZW5Db3VudDsgKyt2aXJ0dWFsU2NyZWVuKSB7Ci0gICAgICAgIEdMaW50IGRpc3BsYXlNYXNrID0g
MDsKLSAgICAgICAgZXJyb3IgPSBDR0xEZXNjcmliZVBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0T2Jq
LCB2aXJ0dWFsU2NyZWVuLCBrQ0dMUEZBRGlzcGxheU1hc2ssICZkaXNwbGF5TWFzayk7Ci0gICAg
ICAgIEFTU0VSVChlcnJvciA9PSBrQ0dMTm9FcnJvcik7Ci0KLSAgICAgICAgYXV0byBncHVJRCA9
IGdwdUlERm9yRGlzcGxheU1hc2soZGlzcGxheU1hc2spOwotCi0gICAgICAgIGlmIChncHVJRCA9
PSBwcmVmZXJyZWRHUFVJRCkgewotICAgICAgICAgICAgZXJyb3IgPSBDR0xTZXRWaXJ0dWFsU2Ny
ZWVuKGNvbnRleHRPYmosIHZpcnR1YWxTY3JlZW4pOwotICAgICAgICAgICAgQVNTRVJUKGVycm9y
ID09IGtDR0xOb0Vycm9yKTsKLSAgICAgICAgICAgIExPRyhXZWJHTCwgIkNvbnRleHQgKCVwKSBz
ZXQgdG8gR1BVIHdpdGggSUQ6ICglbGxkKS4iLCBjb250ZXh0T2JqLCBncHVJRCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZmlyc3RBY2NlbGVyYXRlZFNj
cmVlbiA8IDApIHsKLSAgICAgICAgICAgIEdMaW50IGlzQWNjZWxlcmF0ZWQgPSAwOwotICAgICAg
ICAgICAgZXJyb3IgPSBDR0xEZXNjcmliZVBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0T2JqLCB2aXJ0
dWFsU2NyZWVuLCBrQ0dMUEZBQWNjZWxlcmF0ZWQsICZpc0FjY2VsZXJhdGVkKTsKLSAgICAgICAg
ICAgIEFTU0VSVChlcnJvciA9PSBrQ0dMTm9FcnJvcik7Ci0gICAgICAgICAgICBpZiAoaXNBY2Nl
bGVyYXRlZCkKLSAgICAgICAgICAgICAgICBmaXJzdEFjY2VsZXJhdGVkU2NyZWVuID0gdmlydHVh
bFNjcmVlbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIE5vIHJlZ2lzdHJ5SUQgbWF0Y2gg
Zm91bmQ7IHNldCB0byBmaXJzdCBoYXJkd2FyZS1hY2NlbGVyYXRlZCB2aXJ0dWFsIHNjcmVlbi4K
LSAgICBpZiAoZmlyc3RBY2NlbGVyYXRlZFNjcmVlbiA+PSAwKSB7Ci0gICAgICAgIGVycm9yID0g
Q0dMU2V0VmlydHVhbFNjcmVlbihjb250ZXh0T2JqLCBmaXJzdEFjY2VsZXJhdGVkU2NyZWVuKTsK
LSAgICAgICAgQVNTRVJUKGVycm9yID09IGtDR0xOb0Vycm9yKTsKLSAgICAgICAgTE9HKFdlYkdM
LCAiUmVnaXN0cnlJRCAoJWxsZCkgbm90IG1hdGNoZWQ7IENvbnRleHQgKCVwKSBzZXQgdG8gdmly
dHVhbCBzY3JlZW4gKCVkKS4iLCBwcmVmZXJyZWRHUFVJRCwgY29udGV4dE9iaiwgZmlyc3RBY2Nl
bGVyYXRlZFNjcmVlbik7Ci0gICAgfQotfQotCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQotCi1H
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4qIHN3YXBDaGFpbikKK0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RX
aW5kb3cqLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCwgR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qIHN3YXBDaGFpbikKICAgICA6IEdyYXBoaWNzQ29u
dGV4dEdMKGF0dHJzLCBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBzaGFyZWRDb250ZXh0KQogewog
ICAgIG1faXNGb3JXZWJHTDIgPSBhdHRycy53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0
R0xXZWJHTFZlcnNpb246OldlYkdMMjsKIAotI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJP
TCkKLSAgICBtX3Bvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbiA9IChoYXNMb3dBbmRIaWdo
UG93ZXJHUFVzKCkgJiYgYXR0cnMucG93ZXJQcmVmZXJlbmNlID09IEdyYXBoaWNzQ29udGV4dEdM
UG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2UpID8gR3JhcGhpY3NDb250ZXh0R0xQb3dl
clByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSA6IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVm
ZXJlbmNlOjpEZWZhdWx0OwotI2Vsc2UKLSAgICBtX3Bvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVh
dGlvbiA9IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0OwotI2VuZGlm
Ci0KICAgICBtX2Rpc3BsYXlPYmogPSBJbml0aWFsaXplRUdMRGlzcGxheShhdHRycyk7CiAgICAg
aWYgKG1fZGlzcGxheU9iaiA9PSBFR0xfTk9fRElTUExBWSkKICAgICAgICAgcmV0dXJuOworCisg
ICAgYm9vbCBzdXBwb3J0c1Bvd2VyUHJlZmVyZW5jZSA9IGZhbHNlOworI2lmIFBMQVRGT1JNKE1B
QykKICAgICBjb25zdCBjaGFyICpkaXNwbGF5RXh0ZW5zaW9ucyA9IEVHTF9RdWVyeVN0cmluZyht
X2Rpc3BsYXlPYmosIEVHTF9FWFRFTlNJT05TKTsKLSAgICBMT0coV2ViR0wsICJFeHRlbnNpb25z
OiAlcyIsIGRpc3BsYXlFeHRlbnNpb25zKTsKKyAgICBtX3N1cHBvcnRzUG93ZXJQcmVmZXJlbmNl
ID0gc3Ryc3RyKGRpc3BsYXlFeHRlbnNpb25zLCAiRUdMX0FOR0xFX3Bvd2VyX3ByZWZlcmVuY2Ui
KTsKKyAgICBzdXBwb3J0c1Bvd2VyUHJlZmVyZW5jZSA9IG1fc3VwcG9ydHNQb3dlclByZWZlcmVu
Y2U7CisjZW5kaWYKKyAgICBpZiAoIXN1cHBvcnRzUG93ZXJQcmVmZXJlbmNlICYmIGF0dHJzLnBv
d2VyUHJlZmVyZW5jZSA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBl
cmZvcm1hbmNlKSB7CisgICAgICAgIGF0dHJzLnBvd2VyUHJlZmVyZW5jZSA9IEdyYXBoaWNzQ29u
dGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0OworICAgICAgICBzZXRDb250ZXh0QXR0cmli
dXRlcyhhdHRycyk7CisgICAgfQogCiAgICAgRUdMaW50IGNvbmZpZ0F0dHJpYnV0ZXNbXSA9IHsK
ICAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwgRUdMX09QRU5HTF9FUzJfQklULApAQCAtMjkw
LDEyICsyMzYsNiBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIGVnbENvbnRleHRBdHRy
aWJ1dGVzLmFwcGVuZChFR0xfQ09OVEVYVF9CSU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlV
TSk7CiAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9GQUxTRSk7CiAKLSAgICBp
ZiAoc3Ryc3RyKGRpc3BsYXlFeHRlbnNpb25zLCAiRUdMX0FOR0xFX3Bvd2VyX3ByZWZlcmVuY2Ui
KSkgewotICAgICAgICBlZ2xDb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX1BPV0VSX1BSRUZF
UkVOQ0VfQU5HTEUpOwotICAgICAgICAvLyBFR0xfTE9XX1BPV0VSX0FOR0xFIGlzIHRoZSBkZWZh
dWx0LiBDaGFuZ2UgdG8KLSAgICAgICAgLy8gRUdMX0hJR0hfUE9XRVJfQU5HTEUgaWYgZGVzaXJl
ZC4KLSAgICAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9MT1dfUE9XRVJfQU5H
TEUpOwotICAgIH0KICAgICBlZ2xDb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX05PTkUpOwog
CiAgICAgbV9jb250ZXh0T2JqID0gRUdMX0NyZWF0ZUNvbnRleHQobV9kaXNwbGF5T2JqLCBtX2Nv
bmZpZ09iaiwgc2hhcmVkQ29udGV4dCA/IHN0YXRpY19jYXN0PEVHTENvbnRleHQ+KHNoYXJlZENv
bnRleHQtPm1fY29udGV4dE9iaikgOiBFR0xfTk9fQ09OVEVYVCwgZWdsQ29udGV4dEF0dHJpYnV0
ZXMuZGF0YSgpKTsKQEAgLTMzMiwyMSArMjcyLDYgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQK
ICAgICAgICAgfQogICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoZXh0ZW5zaW9uKTsK
ICAgICB9Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIC8vIEZJWE1FOiBJdCdzIHVuY2xlYXIgaWYg
TUFDQ0FUQUxZU1Qgc2hvdWxkIHRha2UgdGhlc2Ugc3RlcHMgYXMgd2VsbCwgYnV0IHRoYXQKLSAg
ICAvLyB3b3VsZCByZXF1aXJlIHRoZSBQbGF0Zm9ybVNjcmVlbk1hYyBjb2RlIHRvIGJlIGV4cG9z
ZWQgdG8gQ2F0YWx5c3QgdG9vLgotICAgIEVHTERldmljZUVYVCBkZXZpY2UgPSBudWxscHRyOwot
ICAgIEVHTF9RdWVyeURpc3BsYXlBdHRyaWJFWFQobV9kaXNwbGF5T2JqLCBFR0xfREVWSUNFX0VY
VCwgcmVpbnRlcnByZXRfY2FzdDxFR0xBdHRyaWIqPigmZGV2aWNlKSk7Ci0gICAgQ0dMQ29udGV4
dE9iaiBjZ2xDb250ZXh0ID0gbnVsbHB0cjsKLSAgICBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZv
cm1hdCA9IG51bGxwdHI7Ci0gICAgRUdMX1F1ZXJ5RGV2aWNlQXR0cmliRVhUKGRldmljZSwgRUdM
X0NHTF9DT05URVhUX0FOR0xFLCByZWludGVycHJldF9jYXN0PEVHTEF0dHJpYio+KCZjZ2xDb250
ZXh0KSk7Ci0gICAgRUdMX1F1ZXJ5RGV2aWNlQXR0cmliRVhUKGRldmljZSwgRUdMX0NHTF9QSVhF
TF9GT1JNQVRfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJnBpeGVsRm9ybWF0
KSk7Ci0gICAgYXV0byBncHVJRCA9IChob3N0V2luZG93ICYmIGhvc3RXaW5kb3ctPmRpc3BsYXlJ
RCgpKSA/IGdwdUlERm9yRGlzcGxheShob3N0V2luZG93LT5kaXNwbGF5SUQoKSkgOiBwcmltYXJ5
R1BVSUQoKTsKLSAgICBzZXRHUFVCeVJlZ2lzdHJ5SUQoY2dsQ29udGV4dCwgcGl4ZWxGb3JtYXQs
IGdwdUlEKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGhvc3RXaW5kb3cpOwotI2VuZGlmCi0K
ICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKICAgICBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVz
KCk7IC8vIFRoZXkgbWF5IGhhdmUgY2hhbmdlZCBkdXJpbmcgdmFsaWRhdGlvbi4KIApAQCAtNTYx
LDMwICs0ODYsMjYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2hlY2tHUFVTdGF0
dXMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250ZXh0VmlzaWJpbGl0
eShib29sIGlzVmlzaWJsZSkKIHsKLSAgICBpZiAobV9wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3Jl
YXRpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5j
ZSkgewotICAgICAgICBpZiAoaXNWaXNpYmxlKQotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dFJlcXVpcmluZ0hpZ2hQ
ZXJmb3JtYW5jZSh0aGlzKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3ZlQ29udGV4dFJlcXVpcmlu
Z0hpZ2hQZXJmb3JtYW5jZSh0aGlzKTsKLSAgICB9Ci19Ci0KICNpZiBQTEFURk9STShNQUMpCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1cGRhdGVDR0xDb250ZXh0KCkKLXsKLSAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgIGlmIChjb250ZXh0QXR0cmlidXRlcygpLnBv
d2VyUHJlZmVyZW5jZSAhPSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBl
cmZvcm1hbmNlKQogICAgICAgICByZXR1cm47Ci0gICAgTE9HKFdlYkdMLCAiRGV0ZWN0ZWQgYSBt
dXggc3dpdGNoIG9yIGRpc3BsYXkgcmVjb25maWd1cmF0aW9uLiBDYWxsIENHTFVwZGF0ZUNvbnRl
eHQuICglcCkiLCB0aGlzKTsKLQotICAgIEVHTERldmljZUVYVCBkZXZpY2UgPSBudWxscHRyOwot
ICAgIEVHTF9RdWVyeURpc3BsYXlBdHRyaWJFWFQobV9kaXNwbGF5T2JqLCBFR0xfREVWSUNFX0VY
VCwgcmVpbnRlcnByZXRfY2FzdDxFR0xBdHRyaWIqPigmZGV2aWNlKSk7Ci0gICAgQ0dMQ29udGV4
dE9iaiBjZ2xDb250ZXh0ID0gbnVsbHB0cjsKLSAgICBFR0xfUXVlcnlEZXZpY2VBdHRyaWJFWFQo
ZGV2aWNlLCBFR0xfQ0dMX0NPTlRFWFRfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmli
Kj4oJmNnbENvbnRleHQpKTsKLQotICAgIENHTFVwZGF0ZUNvbnRleHQoY2dsQ29udGV4dCk7Ci0g
ICAgbV9oYXNTd2l0Y2hlZFRvSGlnaFBlcmZvcm1hbmNlR1BVID0gdHJ1ZTsKKyAgICBpZiAoaXNW
aXNpYmxlKQorICAgICAgICBtX2hpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QgPSBTY29wZWRIaWdo
UGVyZm9ybWFuY2VHUFVSZXF1ZXN0OjphY3F1aXJlKCk7CisgICAgZWxzZQorICAgICAgICBtX2hp
Z2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QgPSB7IH07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShp
c1Zpc2libGUpOworI2VuZGlmCiB9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRp
c3BsYXlXYXNSZWNvbmZpZ3VyZWQoKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAobV9z
dXBwb3J0c1Bvd2VyUHJlZmVyZW5jZSkKKyAgICAgICAgRUdMX0hhbmRsZUdQVVN3aXRjaEFOR0xF
KG1fZGlzcGxheU9iaik7CiAjZW5kaWYKKyAgICBkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZp
Y2F0aW9uKCk7Cit9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVEaXNw
bGF5QnVmZmVyQmFja2luZygpCiB7CkBAIC02NTQsNTAgKzU3NSw4IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKIHsKLSAgICBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS51cGRhdGVBbGxDb250ZXh0
cygpOwotfQotCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvd09mZmxpbmVSZW5k
ZXJlcnMoKSBjb25zdAotewotI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1Nf
V0lORE9XU0VSVkVSX0JMT0NLSU5HKQotICAgIC8vIFdoZW4gV2luZG93U2VydmVyIGFjY2VzcyBp
cyBibG9ja2VkIGluIHRoZSBXZWJQcm9jZXNzLCB0aGVyZSBpcyBubyB3YXkKLSAgICAvLyBmb3Ig
T3BlbkdMIHRvIGRlY2lkZSB3aGljaCBHUFUgaXMgY29ubmVjdGVkIHRvIGEgZGlzcGxheSAob25s
aW5lL29mZmxpbmUpLgotICAgIC8vIE9wZW5HTCB3aWxsIHRoZW4gY29uc2lkZXIgYWxsIEdQVXMs
IG9yIHJlbmRlcmVycywgYXMgb2ZmbGluZSwgd2hpY2ggbWVhbnMKLSAgICAvLyBhbGwgb2ZmbGlu
ZSByZW5kZXJlcnMgbmVlZCB0byBiZSBjb25zaWRlcmVkIHdoZW4gZmluZGluZyBhIHBpeGVsIGZv
cm1hdC4KLSAgICAvLyBJbiBXZWJLaXQgbGVnYWN5LCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgV2lu
ZHdTZXJ2ZXIgY29ubmVjdGlvbiwgYW5kCi0gICAgLy8gbV9kaXNwbGF5TWFzayB3aWxsIG5vdCBi
ZSBzZXQgaW4gdGhpcyBjYXNlLgotICAgIGlmIChwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2soKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxpZiBQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICAv
LyBGSVhNRTogPHJkYXI6Ly81MzA2Mjc5ND4gV2UncmUgdmVyeSBpbmNvbnNpc3RlbnQgYWJvdXQg
V0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcKLSAgICAvLyBhbmQgTUFDL01BQ0NBVEFM
WVNUIGFuZCBPUEVOR0wvT1BFTkdMRVMuCi0gICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLSAgICAg
ICAgCi0jaWYgSEFWRShBUFBMRV9HUkFQSElDU19DT05UUk9MKQotICAgIGlmIChoYXNMb3dBbmRI
aWdoUG93ZXJHUFVzKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgCi0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi0jaWYgUExBVEZPUk0oTUFDKQotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6c2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkK
LXsKLSAgICBpZiAoIW1fY29udGV4dE9iaikKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghbV9o
YXNTd2l0Y2hlZFRvSGlnaFBlcmZvcm1hbmNlR1BVKSB7Ci0gICAgICAgIEVHTERldmljZUVYVCBk
ZXZpY2UgPSBudWxscHRyOwotICAgICAgICBFR0xfUXVlcnlEaXNwbGF5QXR0cmliRVhUKG1fZGlz
cGxheU9iaiwgRUdMX0RFVklDRV9FWFQsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJmRl
dmljZSkpOwotICAgICAgICBDR0xDb250ZXh0T2JqIGNnbENvbnRleHQgPSBudWxscHRyOwotICAg
ICAgICBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdCA9IG51bGxwdHI7Ci0gICAgICAgIEVH
TF9RdWVyeURldmljZUF0dHJpYkVYVChkZXZpY2UsIEVHTF9DR0xfQ09OVEVYVF9BTkdMRSwgcmVp
bnRlcnByZXRfY2FzdDxFR0xBdHRyaWIqPigmY2dsQ29udGV4dCkpOwotICAgICAgICBFR0xfUXVl
cnlEZXZpY2VBdHRyaWJFWFQoZGV2aWNlLCBFR0xfQ0dMX1BJWEVMX0ZPUk1BVF9BTkdMRSwgcmVp
bnRlcnByZXRfY2FzdDxFR0xBdHRyaWIqPigmcGl4ZWxGb3JtYXQpKTsKLSAgICAgICAgc2V0R1BV
QnlSZWdpc3RyeUlEKGNnbENvbnRleHQsIHBpeGVsRm9ybWF0LCBncHVJREZvckRpc3BsYXkoZGlz
cGxheUlEKSk7Ci0gICAgfQorICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcigpLmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoKTsKIH0KLSNlbmRpZiAvLyAhUExB
VEZPUk0oTUFDKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlz
cGxheSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvR3JhcGhpY3NDaGVja3NNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk5OTBhODU1NjcwZmU5
Y2I5YWE4M2NhMWZjMDk4ZTIxM2M0NWM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmNwcApAQCAtMCwwICsx
LDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0NoZWNrc01hYy5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaWYgSEFWRShBUFBMRV9H
UkFQSElDU19DT05UUk9MKQorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKyNpZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCisKK2Vu
dW0geworICAgIGtBR0NPcGVuLAorICAgIGtBR0NDbG9zZQorfTsKKworc3RhdGljIGlvX2Nvbm5l
Y3RfdCBhdHRhY2hUb0FwcGxlR3JhcGhpY3NDb250cm9sKCkKK3sKKyAgICBtYWNoX3BvcnRfdCBt
YXN0ZXJQb3J0ID0gTUFDSF9QT1JUX05VTEw7CisKKyAgICBpZiAoSU9NYXN0ZXJQb3J0KE1BQ0hf
UE9SVF9OVUxMLCAmbWFzdGVyUG9ydCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4g
TUFDSF9QT1JUX05VTEw7CisKKyAgICBDRkRpY3Rpb25hcnlSZWYgY2xhc3NUb01hdGNoID0gSU9T
ZXJ2aWNlTWF0Y2hpbmcoIkFwcGxlR3JhcGhpY3NDb250cm9sIik7CisgICAgaWYgKCFjbGFzc1Rv
TWF0Y2gpCisgICAgICAgIHJldHVybiBNQUNIX1BPUlRfTlVMTDsKKworICAgIGtlcm5fcmV0dXJu
X3Qga2VyblJlc3VsdDsKKyAgICBpb19pdGVyYXRvcl90IGl0ZXJhdG9yOworICAgIGlmICgoa2Vy
blJlc3VsdCA9IElPU2VydmljZUdldE1hdGNoaW5nU2VydmljZXMobWFzdGVyUG9ydCwgY2xhc3NU
b01hdGNoLCAmaXRlcmF0b3IpKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBNQUNI
X1BPUlRfTlVMTDsKKworICAgIGlvX3NlcnZpY2VfdCBzZXJ2aWNlT2JqZWN0ID0gSU9JdGVyYXRv
ck5leHQoaXRlcmF0b3IpOworICAgIElPT2JqZWN0UmVsZWFzZShpdGVyYXRvcik7CisgICAgaWYg
KCFzZXJ2aWNlT2JqZWN0KQorICAgICAgICByZXR1cm4gTUFDSF9QT1JUX05VTEw7CisKKyAgICBp
b19jb25uZWN0X3QgZGF0YVBvcnQ7CisgICAgSU9PYmplY3RSZXRhaW4oc2VydmljZU9iamVjdCk7
CisgICAga2VyblJlc3VsdCA9IElPU2VydmljZU9wZW4oc2VydmljZU9iamVjdCwgbWFjaF90YXNr
X3NlbGYoKSwgMCwgJmRhdGFQb3J0KTsKKyAgICBJT09iamVjdFJlbGVhc2Uoc2VydmljZU9iamVj
dCk7CisKKyAgICByZXR1cm4gKGtlcm5SZXN1bHQgPT0gS0VSTl9TVUNDRVNTKSA/IGRhdGFQb3J0
IDogTUFDSF9QT1JUX05VTEw7Cit9CisKK3N0YXRpYyBib29sIGhhc011eENhcGFiaWxpdHkoKQor
eworICAgIGlvX2Nvbm5lY3RfdCBkYXRhUG9ydCA9IGF0dGFjaFRvQXBwbGVHcmFwaGljc0NvbnRy
b2woKTsKKworICAgIGlmIChkYXRhUG9ydCA9PSBNQUNIX1BPUlRfTlVMTCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQ7CisgICAgaWYgKElPQ29ubmVjdENhbGxTY2Fs
YXJNZXRob2QoZGF0YVBvcnQsIGtBR0NPcGVuLCBudWxscHRyLCAwLCBudWxscHRyLCBudWxscHRy
KSA9PSBLRVJOX1NVQ0NFU1MpIHsKKyAgICAgICAgSU9Db25uZWN0Q2FsbFNjYWxhck1ldGhvZChk
YXRhUG9ydCwga0FHQ0Nsb3NlLCBudWxscHRyLCAwLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAg
ICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisK
KyAgICBJT1NlcnZpY2VDbG9zZShkYXRhUG9ydCk7CisKKyAgICBpZiAocmVzdWx0KSB7CisgICAg
ICAgIC8vIFRoaXMgaXMgZGV0ZWN0aW5nIE1hYyBoYXJkd2FyZSB3aXRoIGFuIEludGVsIGc1NzUg
R1BVLCB3aGljaAorICAgICAgICAvLyB3ZSBkb24ndCB3YW50IHRvIG1ha2UgYXZhaWxhYmxlIHRv
IG11eGluZy4KKyAgICAgICAgLy8gQmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSBBcHBsZSdzIE9w
ZW5HTCB0ZWFtLCBzdWNoIGRldmljZXMKKyAgICAgICAgLy8gaGF2ZSBmb3VyIG9yIGZld2VyIHBy
b2Nlc3NvcnMuCisgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMDA2MDM3OD4KKyAgICAgICAg
aW50IG5hbWVzWzJdID0geyBDVExfSFcsIEhXX05DUFUgfTsKKyAgICAgICAgaW50IGNwdUNvdW50
OworICAgICAgICBzaXplX3QgY3B1Q291bnRMZW5ndGggPSBzaXplb2YoY3B1Q291bnQpOworICAg
ICAgICBzeXNjdGwobmFtZXMsIDIsICZjcHVDb3VudCwgJmNwdUNvdW50TGVuZ3RoLCBudWxscHRy
LCAwKTsKKyAgICAgICAgcmVzdWx0ID0gY3B1Q291bnQgPiA0OworICAgIH0KKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKKyNlbmRpZiAvLyBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCisK
K2Jvb2wgaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpCit7CisjaWYgSEFWRShBUFBMRV9HUkFQSElD
U19DT05UUk9MKQorICAgIHN0YXRpYyBib29sIGNhbk11eCA9IGhhc011eENhcGFiaWxpdHkoKTsK
KyAgICByZXR1cm4gY2FuTXV4OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30K
KworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NDaGVja3NNYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmQzOTA1NGY5OGVh
ZjhlNDY0NjYxNThiYTk3YzdkMWZlMjJiZDRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ2hlY2tzTWFjLmgKQEAgLTAsMCAr
MSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpOworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1Njb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODM0
ZGFjMTY2NzA3OWY5MmEyZmFlOGQyYTliNWQ3MTI0ODQ5NTNjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1Njb3BlZEhpZ2hQZXJmb3JtYW5j
ZUdQVVJlcXVlc3QuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJHcmFwaGljc0NoZWNrc01hYy5oIgorI2luY2x1ZGUgIlN3aXRjaGluZ0dQ
VUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjb3BlZEhpZ2hQZXJm
b3JtYW5jZUdQVVJlcXVlc3QgeworcHVibGljOgorICAgIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQ
VVJlcXVlc3QoKSA9IGRlZmF1bHQ7CisgICAgU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVz
dChTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0JiYgb3RoZXIpCisgICAgICAgIDogbV9y
ZXF1ZXN0ZWQoc3RkOjpleGNoYW5nZShvdGhlci5tX3JlcXVlc3RlZCwgZmFsc2UpKQorICAgIHsK
KyAgICB9CisgICAgflNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QoKQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX3JlcXVlc3RlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgU3dp
dGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygpLT5yZWxlYXNlSGlnaFBlcmZvcm1h
bmNlR1BVKCk7CisgICAgfQorICAgIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QmIG9w
ZXJhdG9yPShTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0JiYgb3RoZXIpCisgICAgewor
ICAgICAgICBpZiAobV9yZXF1ZXN0ZWQpCisgICAgICAgICAgICBTd2l0Y2hpbmdHUFVDbGllbnQ6
OnNpbmdsZXRvbklmRXhpc3RzKCktPnJlbGVhc2VIaWdoUGVyZm9ybWFuY2VHUFUoKTsKKyAgICAg
ICAgbV9yZXF1ZXN0ZWQgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fcmVxdWVzdGVkLCBmYWxzZSk7
CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgc3RhdGljIFNjb3BlZEhpZ2hQZXJm
b3JtYW5jZUdQVVJlcXVlc3QgYWNxdWlyZSgpCisgICAgeworICAgICAgICBpZiAoIWhhc0xvd0Fu
ZEhpZ2hQb3dlckdQVXMoKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGF1dG8g
Y2xpZW50ID0gU3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygpOworICAgICAg
ICBpZiAoIWNsaWVudCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGNsaWVudC0+
cmVxdWVzdEhpZ2hQZXJmb3JtYW5jZUdQVSgpOworICAgICAgICByZXR1cm4geyBEaWRSZXF1ZXN0
IH07CisgICAgfQorcHJpdmF0ZToKKyAgICBlbnVtIFJlcXVlc3RTdGF0ZSB7IERpZFJlcXVlc3Qg
fTsKKyAgICBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0KFJlcXVlc3RTdGF0ZSkKKyAg
ICAgICAgOiBtX3JlcXVlc3RlZCh0cnVlKQorICAgIHsKKyAgICB9CisgICAgYm9vbCBtX3JlcXVl
c3RlZCB7IGZhbHNlIH07Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvU3dpdGNoaW5nR1BVQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvU3dpdGNoaW5nR1BVQ2xpZW50LmgKaW5kZXggNDk5YTI4N2E0
NWM5NjhkODMzZGVjZmU1MzMzMTFkMGNlYjMxNzA3OC4uNDUyMzY3ODFiOGUxMDhlMjg2ZmRlMjE0
ZTg1MWEzYTgyYjMwMWM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Td2l0Y2hpbmdHUFVDbGllbnQuaApAQCAtMjksMTYgKzI5LDE2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3dpdGNoaW5nR1BVQ2xpZW50IHsKIHB1Ymxp
YzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3dpdGNoaW5nR1BVQ2xpZW50KiBzaW5nbGV0
b25JZkV4aXN0cygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFNpbmdsZXRv
bihTd2l0Y2hpbmdHUFVDbGllbnQmKTsKIAogICAgIHZpcnR1YWwgflN3aXRjaGluZ0dQVUNsaWVu
dCgpID0gZGVmYXVsdDsKLQorcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3dp
dGNoaW5nR1BVQ2xpZW50KiBzaW5nbGV0b25JZkV4aXN0cygpOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNl
SGlnaFBlcmZvcm1hbmNlR1BVKCkgPSAwOwotICAgIAotcHJpdmF0ZToKKwogICAgIHN0YXRpYyBT
d2l0Y2hpbmdHUFVDbGllbnQqIG1fc2luZ2xldG9uOworICAgIGZyaWVuZCBjbGFzcyBTY29wZWRI
aWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaAppbmRleCBmNTJiZGQ2NmZkMGM2N2IxMjVkOGI1MTFlMjljZjkyZmMyZmNmNWUw
Li44ZDdiYjM1MGZhYmQwOGZhODE5NjhiYTQ5NGNhY2NmYjdjMDlmZjhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNjksNiArNjksMTAgQEAgY2xhc3MgR0NHTExheWVy
OwogfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiU2NvcGVkSGlnaFBl
cmZvcm1hbmNlR1BVUmVxdWVzdC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEV4dGVuc2lvbnNHTDsKICNpZiBVU0UoQU5HTEUpCkBAIC0yNTYsNyArMjYwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAgICAgdm9pZCBjb21w
cmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xp
bnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
ZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7IAorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogICAgIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKICAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAK
QEAgLTQ2MSwxNCArNDY1LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHByaW1pdGl2ZVJlc3RhcnRJ
bmRleChHQ0dMdWludCk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBQTEFURk9S
TShNQUMpCi0gICAgdm9pZCB1cGRhdGVDR0xDb250ZXh0KCk7CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgdm9pZCBkaXNwbGF5V2FzUmVjb25maWd1cmVkKCk7CiAjZW5kaWYKIAogICAgIHZvaWQg
c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CiAKLSAgICBHcmFwaGljc0NvbnRleHRH
TFBvd2VyUHJlZmVyZW5jZSBwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3Bvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbjsgfQotCiAgICAg
Ly8gU3VwcG9ydCBmb3IgYnVmZmVyIGNyZWF0aW9uIGFuZCBkZWxldGlvbgogICAgIFBsYXRmb3Jt
R0xPYmplY3QgY3JlYXRlQnVmZmVyKCkgZmluYWw7CiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVh
dGVGcmFtZWJ1ZmZlcigpIGZpbmFsOwpAQCAtNDk3LDExICs0OTksNiBAQCBwdWJsaWM6CiAKICAg
ICB1bnNpZ25lZCB0ZXh0dXJlU2VlZChHQ0dMdWludCB0ZXh0dXJlKSB7IHJldHVybiBtX3N0YXRl
LnRleHR1cmVTZWVkQ291bnQuY291bnQodGV4dHVyZSk7IH0KIAotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICB1c2luZyBQbGF0Zm9ybURpc3BsYXlJRCA9IHVpbnQzMl90OwotICAgIHZvaWQgc2NyZWVu
RGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKLSNlbmRpZgotCiAgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheSgpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFU
SU9OKQpAQCAtNTI5LDcgKzUyNiw3IEBAIHByaXZhdGU6CiAgICAgLy8gaW1wbGVtZW50YXRpb24u
CiAgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7Ci0gICAgCisK
ICAgICB2b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5z
LCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVm
ZmVyT2JqZWN0KTsKIAogICAgIC8vIERpZCB0aGUgbW9zdCByZWNlbnQgZHJhd2luZyBvcGVyYXRp
b24gbGVhdmUgdGhlIEdQVSBpbiBhbiBhY2NlcHRhYmxlIHN0YXRlPwpAQCAtNTQ3LDcgKzU0NCw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhdHRhY2hEZXB0aEFuZFN0ZW5jaWxCdWZmZXJJZk5lZWRl
ZChHQ0dMdWludCBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgYWxsb3dPZmZsaW5lUmVuZGVy
ZXJzKCkgY29uc3Q7CiAgICAgYm9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKICAg
ICBib29sIGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiAgICAgYm9vbCBi
aW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2lu
Zywgdm9pZCogcGJ1ZmZlcik7CkBAIC01ODMsNyArNTc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICwgaXNWYWxpZChmYWxzZSkKICAgICAgICAgewogICAgICAgICB9Ci0gICAgICAgIAorCiAg
ICAgICAgIFNoYWRlclN5bWJvbE1hcCYgc3ltYm9sTWFwKGVudW0gQU5HTEVTaGFkZXJTeW1ib2xU
eXBlIHN5bWJvbFR5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChzeW1ib2xUeXBl
ID09IFNIQURFUl9TWU1CT0xfVFlQRV9BVFRSSUJVVEUgfHwgc3ltYm9sVHlwZSA9PSBTSEFERVJf
U1lNQk9MX1RZUEVfVU5JRk9STSB8fCBzeW1ib2xUeXBlID09IFNIQURFUl9TWU1CT0xfVFlQRV9W
QVJZSU5HKTsKQEAgLTY0OCw3ICs2NDQsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxFeHRlbnNpb25zR0xPcGVuR0w+IG1fZXh0ZW5zaW9uczsKICNlbmRpZgogCi0gICAgR3JhcGhp
Y3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgbV9wb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRp
b24geyBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdCB9OwogICAgIFZl
Y3RvcjxWZWN0b3I8ZmxvYXQ+PiBtX3ZlcnRleEFycmF5OwogCiAjaWYgIVVTRShBTkdMRSkKQEAg
LTY4MCw3ICs2NzUsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIHVzaW5nIEJvdW5kVGV4dHVyZU1h
cCA9IEhhc2hNYXA8R0NHTGVudW0sCiAgICAgICAgICAgICBzdGQ6OnBhaXI8R0NHTHVpbnQsIEdD
R0xlbnVtPiwKLSAgICAgICAgICAgIFdURjo6SW50SGFzaDxHQ0dMZW51bT4sIAorICAgICAgICAg
ICAgV1RGOjpJbnRIYXNoPEdDR0xlbnVtPiwKICAgICAgICAgICAgIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+LAogICAgICAgICAgICAgV1RGOjpQYWlySGFzaFRy
YWl0czxXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50PiwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4+CiAgICAgICAgID47CkBAIC03
NjEsOCArNzU2LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gV2hlbiBwcmVzZXJ2ZURyYXdpbmdCdWZm
ZXIgPT0gdHJ1ZSwgdGhpcyBpcyBibGl0dGVkIHRvIGR1cmluZyBkaXNwbGF5IHByZXBhcmUuCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyQmFja2luZzsKICAg
ICB2b2lkKiBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyIHsgbnVsbHB0ciB9OwotCi0gICAgYm9vbCBt
X2hhc1N3aXRjaGVkVG9IaWdoUGVyZm9ybWFuY2VHUFUgeyBmYWxzZSB9OworI2VuZGlmCisjaWYg
UExBVEZPUk0oTUFDKQorICAgIGJvb2wgbV9zdXBwb3J0c1Bvd2VyUHJlZmVyZW5jZSB7IGZhbHNl
IH07CisgICAgU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdCBtX2hpZ2hQZXJmb3JtYW5j
ZUdQVVJlcXVlc3Q7CiAjZW5kaWYKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJ
T04pCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dEdMQ1Y+IG1fY3Y7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwCmluZGV4IDQxYWI1
MGNiZWYyZWE2NDI5M2JhMGM5OWJlOGIwNWZjOTcwNzdkZTYuLjA3ZWJhMDQyNmI2Y2NjNGEyZDE0
Yjg3ZTA4Yjc3NjNmNzUzMGIyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTE1hbmFnZXIuY3BwCkBAIC0zMSw5MSArMzEsOCBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogCi0jaWYgSEFWRShBUFBM
RV9HUkFQSElDU19DT05UUk9MKQotI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KLSNlbmRpZgotCi0j
aWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgIlN3aXRjaGluZ0dQVUNsaWVudC5oIgotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJP
TCkKLQotZW51bSB7Ci0gICAga0FHQ09wZW4sCi0gICAga0FHQ0Nsb3NlCi19OwotCi1zdGF0aWMg
aW9fY29ubmVjdF90IGF0dGFjaFRvQXBwbGVHcmFwaGljc0NvbnRyb2woKQotewotICAgIG1hY2hf
cG9ydF90IG1hc3RlclBvcnQgPSBNQUNIX1BPUlRfTlVMTDsKLSAgICAKLSAgICBpZiAoSU9NYXN0
ZXJQb3J0KE1BQ0hfUE9SVF9OVUxMLCAmbWFzdGVyUG9ydCkgIT0gS0VSTl9TVUNDRVNTKQotICAg
ICAgICByZXR1cm4gTUFDSF9QT1JUX05VTEw7Ci0gICAgCi0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGNs
YXNzVG9NYXRjaCA9IElPU2VydmljZU1hdGNoaW5nKCJBcHBsZUdyYXBoaWNzQ29udHJvbCIpOwot
ICAgIGlmICghY2xhc3NUb01hdGNoKQotICAgICAgICByZXR1cm4gTUFDSF9QT1JUX05VTEw7Ci0g
ICAgCi0gICAga2Vybl9yZXR1cm5fdCBrZXJuUmVzdWx0OwotICAgIGlvX2l0ZXJhdG9yX3QgaXRl
cmF0b3I7Ci0gICAgaWYgKChrZXJuUmVzdWx0ID0gSU9TZXJ2aWNlR2V0TWF0Y2hpbmdTZXJ2aWNl
cyhtYXN0ZXJQb3J0LCBjbGFzc1RvTWF0Y2gsICZpdGVyYXRvcikpICE9IEtFUk5fU1VDQ0VTUykK
LSAgICAgICAgcmV0dXJuIE1BQ0hfUE9SVF9OVUxMOwotICAgIAotICAgIGlvX3NlcnZpY2VfdCBz
ZXJ2aWNlT2JqZWN0ID0gSU9JdGVyYXRvck5leHQoaXRlcmF0b3IpOwotICAgIElPT2JqZWN0UmVs
ZWFzZShpdGVyYXRvcik7Ci0gICAgaWYgKCFzZXJ2aWNlT2JqZWN0KQotICAgICAgICByZXR1cm4g
TUFDSF9QT1JUX05VTEw7Ci0gICAgCi0gICAgaW9fY29ubmVjdF90IGRhdGFQb3J0OwotICAgIElP
T2JqZWN0UmV0YWluKHNlcnZpY2VPYmplY3QpOwotICAgIGtlcm5SZXN1bHQgPSBJT1NlcnZpY2VP
cGVuKHNlcnZpY2VPYmplY3QsIG1hY2hfdGFza19zZWxmKCksIDAsICZkYXRhUG9ydCk7Ci0gICAg
SU9PYmplY3RSZWxlYXNlKHNlcnZpY2VPYmplY3QpOwotICAgIAotICAgIHJldHVybiAoa2VyblJl
c3VsdCA9PSBLRVJOX1NVQ0NFU1MpID8gZGF0YVBvcnQgOiBNQUNIX1BPUlRfTlVMTDsKLX0KLQot
c3RhdGljIGJvb2wgaGFzTXV4Q2FwYWJpbGl0eSgpCi17Ci0gICAgaW9fY29ubmVjdF90IGRhdGFQ
b3J0ID0gYXR0YWNoVG9BcHBsZUdyYXBoaWNzQ29udHJvbCgpOwotICAgIAotICAgIGlmIChkYXRh
UG9ydCA9PSBNQUNIX1BPUlRfTlVMTCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAg
IGJvb2wgcmVzdWx0OwotICAgIGlmIChJT0Nvbm5lY3RDYWxsU2NhbGFyTWV0aG9kKGRhdGFQb3J0
LCBrQUdDT3BlbiwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgbnVsbHB0cikgPT0gS0VSTl9TVUNDRVNT
KSB7Ci0gICAgICAgIElPQ29ubmVjdENhbGxTY2FsYXJNZXRob2QoZGF0YVBvcnQsIGtBR0NDbG9z
ZSwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgIHJlc3VsdCA9IHRydWU7
Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgIAotICAgIElPU2Vydmlj
ZUNsb3NlKGRhdGFQb3J0KTsKLSAgICAKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIC8vIFRo
aXMgaXMgZGV0ZWN0aW5nIE1hYyBoYXJkd2FyZSB3aXRoIGFuIEludGVsIGc1NzUgR1BVLCB3aGlj
aAotICAgICAgICAvLyB3ZSBkb24ndCB3YW50IHRvIG1ha2UgYXZhaWxhYmxlIHRvIG11eGluZy4K
LSAgICAgICAgLy8gQmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSBBcHBsZSdzIE9wZW5HTCB0ZWFt
LCBzdWNoIGRldmljZXMKLSAgICAgICAgLy8gaGF2ZSBmb3VyIG9yIGZld2VyIHByb2Nlc3NvcnMu
Ci0gICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMDA2MDM3OD4KLSAgICAgICAgaW50IG5hbWVz
WzJdID0geyBDVExfSFcsIEhXX05DUFUgfTsKLSAgICAgICAgaW50IGNwdUNvdW50OwotICAgICAg
ICBzaXplX3QgY3B1Q291bnRMZW5ndGggPSBzaXplb2YoY3B1Q291bnQpOwotICAgICAgICBzeXNj
dGwobmFtZXMsIDIsICZjcHVDb3VudCwgJmNwdUNvdW50TGVuZ3RoLCBudWxscHRyLCAwKTsKLSAg
ICAgICAgcmVzdWx0ID0gY3B1Q291bnQgPiA0OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi1ib29sIGhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKQotewotICAgIHN0YXRpYyBi
b29sIGNhbk11eCA9IGhhc011eENhcGFiaWxpdHkoKTsKLSAgICByZXR1cm4gY2FuTXV4OwotfQot
I2VuZGlmIC8vIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKLQogR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTE1hbmFnZXI+IHNfbWFuYWdlcjsKQEAgLTEyNywzMyArNDQsMTkgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoQ0dEaXJlY3RE
aXNwbGF5SUQsIEMKIHsKICAgICBMT0coV2ViR0wsICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1h
bmFnZXI6OmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQiKTsKICAgICBpZiAoZmxhZ3MgJiBrQ0dEaXNw
bGF5U2V0TW9kZUZsYWcpCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6
c2hhcmVkTWFuYWdlcigpLnVwZGF0ZUFsbENvbnRleHRzKCk7CisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmRpc3BsYXlXYXNSZWNvbmZpZ3Vy
ZWQoKTsKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6
dXBkYXRlQWxsQ29udGV4dHMoKQotewotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBmb3IgKGNvbnN0
IGF1dG8mIGNvbnRleHQgOiBtX2NvbnRleHRzKSB7Ci0gICAgICAgIGNvbnRleHQtPnVwZGF0ZUNH
TENvbnRleHQoKTsKLSAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlm
aWNhdGlvbigpOwotICAgIH0KLSNlbmRpZgotfQotCi0jaWYgUExBVEZPUk0oTUFDKQotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURp
c3BsYXlJRCBkaXNwbGF5SUQsIGNvbnN0IEhvc3RXaW5kb3cqIHdpbmRvdykKKyNpZiBQTEFURk9S
TShDT0NPQSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2Fz
UmVjb25maWd1cmVkKCkKIHsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHRBbmRXaW5kb3cg
OiBtX2NvbnRleHRXaW5kb3dNYXApIHsKLSAgICAgICAgaWYgKGNvbnRleHRBbmRXaW5kb3cudmFs
dWUgPT0gd2luZG93KSB7Ci0gICAgICAgICAgICBjb250ZXh0QW5kV2luZG93LmtleS0+c2NyZWVu
RGlkQ2hhbmdlKGRpc3BsYXlJRCk7Ci0gICAgICAgICAgICBMT0coV2ViR0wsICJDaGFuZ2luZyBj
b250ZXh0ICglcCkgdG8gZGlzcGxheSAoJWQpLiIsIGNvbnRleHRBbmRXaW5kb3cua2V5LCBkaXNw
bGF5SUQpOwotICAgICAgICB9Ci0gICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgY29udGV4dCA6
IG1fY29udGV4dHMpCisgICAgICAgIGNvbnRleHQtPmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoKTsK
IH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6YWRkQ29u
dGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgSG9zdFdpbmRvdyogd2luZG93
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OmFkZENvbnRleHQoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAg
IGlmICghY29udGV4dCkKQEAgLTE2Niw3ICs2OSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xNYW5hZ2VyOjphZGRDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0
CiAKICAgICBBU1NFUlQoIW1fY29udGV4dHMuY29udGFpbnMoY29udGV4dCkpOwogICAgIG1fY29u
dGV4dHMuYXBwZW5kKGNvbnRleHQpOwotICAgIG1fY29udGV4dFdpbmRvd01hcC5zZXQoY29udGV4
dCwgd2luZG93KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnJl
bW92ZUNvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQpCkBAIC0xNzQsOTcg
Kzc2LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpyZW1vdmVDb250
ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250CiAgICAgaWYgKCFtX2NvbnRleHRzLmNv
bnRhaW5zKGNvbnRleHQpKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZXh0cy5yZW1vdmVG
aXJzdChjb250ZXh0KTsKLSAgICBtX2NvbnRleHRXaW5kb3dNYXAucmVtb3ZlKGNvbnRleHQpOwot
ICAgIHJlbW92ZUNvbnRleHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoY29udGV4dCk7Ci0gICAg
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JM
T0NLSU5HKQogICAgIGlmICghbV9jb250ZXh0cy5zaXplKCkpCiAgICAgICAgIENHRGlzcGxheVJl
bW92ZVJlY29uZmlndXJhdGlvbkNhbGxiYWNrKGRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQsIG51bGxw
dHIpOwogI2VuZGlmCiB9CiAKLUhvc3RXaW5kb3cqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFu
YWdlcjo6aG9zdFdpbmRvd0ZvckNvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRl
eHQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fY29udGV4dFdpbmRvd01hcC5jb250YWlucyhjb250
ZXh0KSk7Ci0gICAgcmV0dXJuIG1fY29udGV4dFdpbmRvd01hcC5nZXQoY29udGV4dCk7Ci19Ci0K
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjphZGRDb250ZXh0UmVxdWlyaW5n
SGlnaFBlcmZvcm1hbmNlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQotewotICAg
IEFTU0VSVChjb250ZXh0KTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybjsKLSAg
ICAKLSAgICBBU1NFUlQobV9jb250ZXh0cy5jb250YWlucyhjb250ZXh0KSk7Ci0gICAgQVNTRVJU
KCFtX2NvbnRleHRzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLmNvbnRhaW5zKGNvbnRleHQpKTsK
LSAgICAKLSAgICBMT0coV2ViR0wsICJUaGlzIGNvbnRleHQgKCVwKSByZXF1aXJlcyB0aGUgaGln
aC1wZXJmb3JtYW5jZSBHUFUuIiwgY29udGV4dCk7Ci0gICAgbV9jb250ZXh0c1JlcXVpcmluZ0hp
Z2hQZXJmb3JtYW5jZS5hZGQoY29udGV4dCk7Ci0gICAgCi0gICAgdXBkYXRlSGlnaFBlcmZvcm1h
bmNlU3RhdGUoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnJl
bW92ZUNvbnRleHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wqIGNvbnRleHQpCi17Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAoIW1fY29udGV4dHNSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UuY29udGFpbnMoY29udGV4
dCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBMT0coV2ViR0wsICJUaGlzIGNvbnRleHQg
KCVwKSBubyBsb25nZXIgcmVxdWlyZXMgdGhlIGhpZ2gtcGVyZm9ybWFuY2UgR1BVLiIsIGNvbnRl
eHQpOwotICAgIG1fY29udGV4dHNSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UucmVtb3ZlKGNvbnRl
eHQpOwotICAgIAotICAgIHVwZGF0ZUhpZ2hQZXJmb3JtYW5jZVN0YXRlKCk7Ci19Ci0KLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjp1cGRhdGVIaWdoUGVyZm9ybWFuY2VTdGF0
ZSgpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghaGFzTG93QW5kSGlnaFBvd2VyR1BV
cygpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKG1fY29udGV4dHNSZXF1aXJpbmdI
aWdoUGVyZm9ybWFuY2Uuc2l6ZSgpKSB7Ci0gICAgICAgIAotICAgICAgICBpZiAobV9kaXNhYmxl
SGlnaFBlcmZvcm1hbmNlR1BVVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAgICAgTE9HKFdl
YkdMLCAiQ2FuY2VsIHBlbmRpbmcgdGltZXIgZm9yIHR1cm5pbmcgb2ZmIGhpZ2gtcGVyZm9ybWFu
Y2UgR1BVLiIpOwotICAgICAgICAgICAgbV9kaXNhYmxlSGlnaFBlcmZvcm1hbmNlR1BVVGltZXIu
c3RvcCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFtX3JlcXVlc3RpbmdIaWdoUGVyZm9y
bWFuY2UpIHsKLSAgICAgICAgICAgIExPRyhXZWJHTCwgIlJlcXVlc3QgdGhlIGhpZ2gtcGVyZm9y
bWFuY2UgR1BVLiIpOwotICAgICAgICAgICAgbV9yZXF1ZXN0aW5nSGlnaFBlcmZvcm1hbmNlID0g
dHJ1ZTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBzaW5nbGV0b24gPSBTd2l0Y2hpbmdHUFVDbGll
bnQ6OnNpbmdsZXRvbklmRXhpc3RzKCkpCi0gICAgICAgICAgICAgICAgc2luZ2xldG9uLT5yZXF1
ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCk7Ci0gICAgICAgIH0KLQotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIC8vIERvbid0IGltbWVkaWF0ZWx5IHR1cm4gb2ZmIHRoZSBoaWdoLXBlcmZvcm1hbmNlIEdQ
VS4gVGhlIHVzZXIgbWlnaHQgYmUKLSAgICAgICAgLy8gc3dhcHBpbmcgYmFjayBhbmQgZm9ydGgg
YmV0d2VlbiB0YWJzIG9yIHdpbmRvd3MsIGFuZCB3ZSBkb24ndCB3YW50IHRvIGNhdXNlCi0gICAg
ICAgIC8vIGNodXJuIGlmIHdlIGNhbiBhdm9pZCBpdC4KLSAgICAgICAgaWYgKCFtX2Rpc2FibGVI
aWdoUGVyZm9ybWFuY2VHUFVUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICBMT0coV2Vi
R0wsICJTZXQgYSB0aW1lciB0byByZWxlYXNlIHRoZSBoaWdoLXBlcmZvcm1hbmNlIEdQVS4iKTsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBFeHBvc2UgdGhpcyB2YWx1ZSBhcyBhIFNldHRpbmcsIHdo
aWNoIHdvdWxkIHJlcXVpcmUgdGhpcyBjbGFzcwotICAgICAgICAgICAgLy8gdG8gcmVmZXJlbmNl
IGEgZnJhbWUsIHBhZ2Ugb3IgZG9jdW1lbnQuCi0gICAgICAgICAgICBzdGF0aWMgY29uc3QgU2Vj
b25kcyB0aW1lVG9LZWVwSGlnaFBlcmZvcm1hbmNlR1BVQWxpdmUgeyAxMF9zIH07Ci0gICAgICAg
ICAgICBtX2Rpc2FibGVIaWdoUGVyZm9ybWFuY2VHUFVUaW1lci5zdGFydE9uZVNob3QodGltZVRv
S2VlcEhpZ2hQZXJmb3JtYW5jZUdQVUFsaXZlKTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6ZGlzYWJsZUhpZ2hQZXJm
b3JtYW5jZUdQVVRpbWVyRmlyZWQoKQotewotICAgIGlmIChtX2NvbnRleHRzUmVxdWlyaW5nSGln
aFBlcmZvcm1hbmNlLnNpemUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9yZXF1ZXN0aW5n
SGlnaFBlcmZvcm1hbmNlID0gZmFsc2U7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChhdXRv
KiBzaW5nbGV0b24gPSBTd2l0Y2hpbmdHUFVDbGllbnQ6OnNpbmdsZXRvbklmRXhpc3RzKCkpCi0g
ICAgICAgIHNpbmdsZXRvbi0+cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpOwotI2VuZGlmCi19
Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpyZWN5Y2xlQ29udGV4dElm
TmVjZXNzYXJ5KCkKIHsKICAgICBpZiAoaGFzVG9vTWFueUNvbnRleHRzKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaAppbmRleCAzYWY4YTA1MmFlOGUy
YTE1ZDVjMDUxNzg0ZmIwODU0NWVlOWExZDY0Li44M2Y3MGVhMjJjOTIxMTFiMThjM2M0ZDRiNjE5
OTQyNzQyNDA3NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFu
YWdlci5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVGlt
ZXIuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0zOCw1MiArMzYsMjkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY29uc3QgdW5zaWduZWQgTWF4Q29udGV4dHMgPSAxNjsKIAogY2xhc3MgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w7Ci1jbGFzcyBIb3N0V2luZG93OwotCi11c2luZyBQbGF0Zm9ybURpc3Bs
YXlJRCA9IHVpbnQzMl90OwotCi0jaWYgSEFWRShBUFBMRV9HUkFQSElDU19DT05UUk9MKQotV0VC
Q09SRV9FWFBPUlQgYm9vbCBoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCk7Ci0jZW5kaWYKIAogY2xh
c3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyIHsKICAgICBmcmllbmQgTmV2ZXJEZXN0
cm95ZWQ8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyPjsKIHB1YmxpYzoKICAgICBzdGF0
aWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyJiBzaGFyZWRNYW5hZ2VyKCk7CiAgICAg
Ci0gICAgdm9pZCBhZGRDb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgSG9zdFdpbmRv
dyopOworICAgIHZvaWQgYWRkQ29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopOwogICAg
IHZvaWQgcmVtb3ZlQ29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopOwotCi0gICAgSG9z
dFdpbmRvdyogaG9zdFdpbmRvd0ZvckNvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKSBj
b25zdDsKLSAgICAKLSAgICB2b2lkIGFkZENvbnRleHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2Uo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKLSAgICB2b2lkIHJlbW92ZUNvbnRleHRSZXF1aXJp
bmdIaWdoUGVyZm9ybWFuY2UoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKICAgICAKICAgICB2
b2lkIHJlY3ljbGVDb250ZXh0SWZOZWNlc3NhcnkoKTsKICAgICBib29sIGhhc1Rvb01hbnlDb250
ZXh0cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dHMuc2l6ZSgpID49IE1heENvbnRleHRzOyB9
CiAgICAgCi0gICAgdm9pZCB1cGRhdGVBbGxDb250ZXh0cygpOwotCiAjaWYgUExBVEZPUk0oTUFD
KQotICAgIHZvaWQgc2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBjb25zdCBIb3N0
V2luZG93Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGxheVdhc1JlY29u
ZmlndXJlZChDR0RpcmVjdERpc3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzLCB2
b2lkKik7CiAjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGRpc3BsYXlXYXNS
ZWNvbmZpZ3VyZWQoKTsKKyNlbmRpZgogICAgIAogcHJpdmF0ZToKLSAgICBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIoKQotICAgICAgICA6IG1fZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQ
VVRpbWVyKCp0aGlzLCAmR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNhYmxlSGln
aFBlcmZvcm1hbmNlR1BVVGltZXJGaXJlZCkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCB1cGRh
dGVIaWdoUGVyZm9ybWFuY2VTdGF0ZSgpOwotICAgIHZvaWQgZGlzYWJsZUhpZ2hQZXJmb3JtYW5j
ZUdQVVRpbWVyRmlyZWQoKTsKKyAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIoKSA9
IGRlZmF1bHQ7CiAKICAgICBWZWN0b3I8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPiBtX2NvbnRl
eHRzOwotICAgIEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBIb3N0V2luZG93Kj4g
bV9jb250ZXh0V2luZG93TWFwOwotICAgIEhhc2hTZXQ8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
PiBtX2NvbnRleHRzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlOwotICAgIAotICAgIFRpbWVyIG1f
ZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVyOwotICAgIGJvb2wgbV9yZXF1ZXN0aW5nSGln
aFBlcmZvcm1hbmNlIHsgZmFsc2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAppbmRleCBmZTcyMGU5MzVlZTlmMzJhY2M3ZDhkOGVjYjVmNTMxYWNiMWQ5ZjIxLi4x
Zjk1MWI3ZTk0ZWY3YWU0NDA4ZjQ1YjFiYjE1NmEwZDM1N2E0YWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zMjAsNyArMzIwLDcgQEAKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oTUFDKQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzQ2hlY2tzTWFjLmgiCiAjaW5jbHVkZSAiTlNTY3JvbGxlckltcERl
dGFpbHMuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZU1hYy5oIgogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFn
ZXIuaAppbmRleCA1NTU2Y2JkNDRmMGY1NDdjZDY1ZDNkZTQxZTUyMDY1Zjg5M2QzYWFlLi5hYzYy
MTkzYWNmZDVjMmI2NDJhNTc1YWYzNDdmNWU1MmUwMmZlNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmgKQEAg
LTI4LDYgKzI4LDcgQEAKICNpZiBQTEFURk9STShNQUMpCiAKICNpbmNsdWRlIDxPcGVuR0wvQ0dM
VHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNDQsMTMgKzQ1LDEz
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVByb2Nlc3NSZXF1aXJpbmdIaWdoUGVyZm9ybWFu
Y2UoV2ViUHJvY2Vzc1Byb3h5Kik7CiAKIHByaXZhdGU6Ci0gICAgSGlnaFBlcmZvcm1hbmNlR1BV
TWFuYWdlcigpID0gZGVmYXVsdDsKKyAgICBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyKCk7CiAg
ICAgfkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIoKTsKLQogICAgIHZvaWQgdXBkYXRlU3RhdGUo
KTsKIAogICAgIEhhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Kj4gbV9wcm9jZXNzZXNSZXF1aXJpbmdI
aWdoUGVyZm9ybWFuY2U7CiAgICAgQ0dMUGl4ZWxGb3JtYXRPYmogbV9waXhlbEZvcm1hdE9iaiB7
IG51bGxwdHIgfTsKKyAgICBXZWJDb3JlOjpUaW1lciBtX3VwZGF0ZVN0YXRlVGltZXI7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSGlnaFBlcmZvcm1h
bmNlR1BVTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9y
bWFuY2VHUFVNYW5hZ2VyLm1tCmluZGV4IGE5NmZjM2QxMTM3OThlNzlhZmMwZmRiNjI2NWZkZGFm
ZDAzZDBhZTAuLjU5ZGZmOGIyM2M4MGMwMjY1YmVlNTE5Zjg0NjA3Mzg4NGY2MTVjOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5h
Z2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VH
UFVNYW5hZ2VyLm1tCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NoZWNrc01hYy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvT3BlbkdMU29mdExpbmtDb2NvYS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTQ0LDYgKzQ0LDEzIEBAIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXImIEhpZ2hQZXJm
b3JtYW5jZUdQVU1hbmFnZXI6OnNpbmdsZXRvbigpCiAgICAgcmV0dXJuIHNoYXJlZE1hbmFnZXI7
CiB9CiAKK0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFn
ZXIoKQorICAgIDogbV91cGRhdGVTdGF0ZVRpbWVyKCp0aGlzLCAmSGlnaFBlcmZvcm1hbmNlR1BV
TWFuYWdlcjo6dXBkYXRlU3RhdGUpCit7Cit9CisKK0hpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6
On5IaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyKCkgPSBkZWZhdWx0OworCiB2b2lkIEhpZ2hQZXJm
b3JtYW5jZUdQVU1hbmFnZXI6OmFkZFByb2Nlc3NSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogewogICAgIGlmICghV2ViQ29yZTo6aGFzTG93QW5kSGln
aFBvd2VyR1BVcygpKQpAQCAtNjUsNyArNzIsOCBAQCB2b2lkIEhpZ2hQZXJmb3JtYW5jZUdQVU1h
bmFnZXI6OnJlbW92ZVByb2Nlc3NSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoV2ViUHJvY2Vzcwog
CiAgICAgaWYgKG1fcHJvY2Vzc2VzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlLnJlbW92ZShwcm9j
ZXNzKSkgewogICAgICAgICBMT0coV2ViR0wsICJIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpy
ZW1vdmVQcm9jZXNzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKCkgLSByZW1vdmluZyBwcm9jZXNz
ICVwIiwgcHJvY2Vzcyk7Ci0gICAgICAgIHVwZGF0ZVN0YXRlKCk7CisgICAgICAgIHN0YXRpYyBj
b25zdCBTZWNvbmRzIHRpbWVUb0tlZXBIaWdoUGVyZm9ybWFuY2VHUFVBbGl2ZSB7IDEwX3MgfTsK
KyAgICAgICAgbV91cGRhdGVTdGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCh0aW1lVG9LZWVwSGlnaFBl
cmZvcm1hbmNlR1BVQWxpdmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03NCw2ICs4
Miw4IEBAIHZvaWQgSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6cmVtb3ZlUHJvY2Vzc1JlcXVp
cmluZ0hpZ2hQZXJmb3JtYW5jZShXZWJQcm9jZXNzCiAKIHZvaWQgSGlnaFBlcmZvcm1hbmNlR1BV
TWFuYWdlcjo6dXBkYXRlU3RhdGUoKQogeworICAgIGlmIChtX3VwZGF0ZVN0YXRlVGltZXIuaXNB
Y3RpdmUoKSkKKyAgICAgICAgbV91cGRhdGVTdGF0ZVRpbWVyLnN0b3AoKTsKICAgICBpZiAobV9w
cm9jZXNzZXNSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2Uuc2l6ZSgpKSB7CiAgICAgICAgIGlmICgh
bV9waXhlbEZvcm1hdE9iaikgewogICAgICAgICAgICAgTE9HKFdlYkdMLCAiSGlnaFBlcmZvcm1h
bmNlR1BVTWFuYWdlciAtIHR1cm5pbmcgb24gaGlnaC1wZXJmb3JtYW5jZSBHUFUuIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN3
aXRjaGluZ0dQVUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAKaW5kZXggNDRjNmI0MzJlN2Q1YzVk
YWE3OGQ4ZDAyYWI3N2M3OTBjMTRhOTM0YS4uYzFjMmEyZWJkYzc3ODc3ZTE3ZjdjMTkyNTMzNTkz
ODVkYWY3ODQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNwcApA
QCAtNDMsMTIgKzQzLDE5IEBAIFdlYlN3aXRjaGluZ0dQVUNsaWVudCYgV2ViU3dpdGNoaW5nR1BV
Q2xpZW50OjpzaW5nbGV0b24oKQogCiB2b2lkIFdlYlN3aXRjaGluZ0dQVUNsaWVudDo6cmVxdWVz
dEhpZ2hQZXJmb3JtYW5jZUdQVSgpCiB7CisgICAgbV9yZXF1ZXN0cysrOworICAgIGlmIChtX3Jl
cXVlc3RzICE9IDEpCisgICAgICAgIHJldHVybjsKICAgICBMT0coV2ViR0wsICJXZWJTd2l0Y2hp
bmdHUFVDbGllbnQ6OnJlcXVlc3RIaWdoUGVyZm9ybWFuY2VHUFUoKSBmcm9tIFdlYlByb2Nlc3Mi
KTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlJlcXVlc3RIaWdoUGVyZm9ybWFuY2VH
UFUoKSwgMCk7CiB9CiAKIHZvaWQgV2ViU3dpdGNoaW5nR1BVQ2xpZW50OjpyZWxlYXNlSGlnaFBl
cmZvcm1hbmNlR1BVKCkKIHsKKyAgICBBU1NFUlQobV9yZXF1ZXN0cyk7CisgICAgbV9yZXF1ZXN0
cy0tOworICAgIGlmIChtX3JlcXVlc3RzKQorICAgICAgICByZXR1cm47CiAgICAgTE9HKFdlYkdM
LCAiV2ViU3dpdGNoaW5nR1BVQ2xpZW50OjpyZWxlYXNlSGlnaFBlcmZvcm1hbmNlR1BVKCkgZnJv
bSBXZWJQcm9jZXNzIik7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpSZWxlYXNlSGln
aFBlcmZvcm1hbmNlR1BVKCksIDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3dpdGNoaW5nR1BVQ2xp
ZW50LmgKaW5kZXggMjBlYjJlZTI1NzFmZWJhMmRhNDg0ZjIxODc3NzhiMTI5NDBhZTUzMy4uYmI4
MWQ4YTYwOGFiMWZkYTQ1ZjA3ZWE3YjM4YTYzNDUxOWU3ODQyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTd2l0Y2hpbmdHUFVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YlN3aXRjaGluZ0dQVUNsaWVudC5oCkBAIC0zMiw5ICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFdlYlN3aXRjaGluZ0dQVUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpTd2l0Y2hp
bmdHUFVDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBXZWJTd2l0Y2hpbmdHUFVDbGllbnQm
IHNpbmdsZXRvbigpOwotICAgIAorcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RIaWdoUGVyZm9y
bWFuY2VHUFUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbGVhc2VIaWdoUGVyZm9ybWFuY2VHUFUo
KSBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBtX3JlcXVlc3RzIHsgMCB9OwogfTsKIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>